Advent of Code Surveys: Results
jeroenheijmans.github.io
jeroenheijmans.github.io
Not necessarily an indication of actual user base; could just be that more/less devs of each "group" are deciding to participate.
Side note; I decided to move from PyCharm to VSCode and honestly, I am starting to miss PyCharm. Yes, it's sluggish to boot but it handles Python so much better: better inspection, highlighting, better Git integration (3-way merge!) and better tooling all round.
I find myself having to mess around in VSC's settings.json for far too long, scrambling to find the relevant extensions documentation because god forbid you include all the keywords somewhere easy to find in the IDE! And to top it all off, there's currently some annoying bugs with error highlighting in VSC that make it a pain to use.
Could be also AOC getting more popular and hitting the developer mainstream more, hence skewing the percentages more in favor of mainstream tools. The absolute number of devs from "fringe" groups might have stayed constant.
Though VS Code is also getting quite popular in general, so probably that too. It is quite lightweight, just works and setting up new languages is a matter of a few clicks. Honestly the only reason I am not using it (other then not trusting or wanting to support Microsoft), is that the VIM emulation does not feel quite right for me.
https://marketplace.visualstudio.com/items?itemName=asvetlia...
https://www.youtube.com/watch?v=g4dXZ0RQWdw
(As a newb I'm finding this to be a good way to learn vim without massacring my productivity.)
I'm a big JetBrains fan, and now use PyCharm at work. But there is something about Python making IDEs not as useful as it is in other languages. Too much magic and weirdness in the language makes it harder for tools to do a good job.
There are decent to great LSP clients for many languages. VS Code has git integration. And by far the richest plugin ecosystem of any editor/IDE.
Yes the Intellij solutions are often better and top notch for languages like Python/PHP/Go/...
And everything feels more integrated and coherent.
But VS Code is still very far beyond a dumb text editor.
And you know what? Installing the official Java plugin results in a really nice experience. The debugger is good, the hints and documentation work. Not tried the refactoring tools under anger yet though. I didn't have to touch any of the settings.
Hats off to Microsoft.
I don't do anything that needs or even benefits much from a ton of extensions. I'd expect someone who is would find VS Code amazingly useful (unless they were overwhelmed by the very large number of available extensions).
There was an unpleasant surprise in that Pylance silently pulls unvetted third-party typings with not even an opt-out—resulting in typing mismatches across versions, in addition to generally exhibiting too implicit of a behavior for my taste. (Coming from Python pre-typings originally, I have grown to appreciate TypeScript’s model where user is asked to install typings explicitly if missing.)
So I ended up using VS Code with Python extension but Pylance overridden as disabled, and with mypy and flake8 installed in your environment (and enabled in VSC) it actually works fairly well, showing errors and warnings from both.
Can’t remember whether I had to edit settings.json or not, but it took some time to hunt down relevant settings.
I'm a vim user and had to use PyCharm on a previous job, and it wasn't half bad. I'd take IntelliJ before VSCode if I had to.
> Not necessarily an indication of actual user base; could just be that more/less devs of each "group" are deciding to participate.
I found no data regarding this, but I have the impression that new developers are getting into VSCode, and maybe those younger ones are skewing the editor/IDE usage. I'd like to see a survey about editor/IDE migrations, it would be interesting to see where people start and with what people settle.
https://wakatime.com/a-look-back-at-2020
Change the url to 2021 to see the new results after midnight Jan 1 2021.
Two points were Dendron which finally is a good enough org-mode replacement for me and the lack of having to battle with extensions and packages in elisp. Config sync as well as the pretty much one-click full setup for almost every language is pretty great.
At least I wasn't sleep deprived the whole month like my coworkers.
That’s fine. It’s just not for me I guess.
I spoke to a couple of other people that did the previous years, and I found it myself, it was significantly "easier" this year. Let me be clear, not "easy", but "easier" :)
I agree about reading it twice or thirce or quadrutrice (ice, ho ho ho), sometimes you're reading it and all you want is "just tell me what to do!"
Tip: the datatable for "Reasons to participate" contains some of the most heartwarming stuff you'll read all day.
Happy holidays y'all!
State of the Developer Ecosystem 2021: • (url) https://www.jetbrains.com/lp/devecosystem-2021/ • (num) 31,743 • (by) JetBrains
State of the Octoverse 2021: • (url) https://octoverse.github.com/ • (num) 12,000+ • (by) GitHub
State of CSS 2021: • (url) https://2021.stateofcss.com/ • (num) 8,714 • (by) Sacha Greif
Advent of Code 2021: • (url) https://jeroenheijmans.github.io/advent-of-code-surveys/ • (num) 4,245 • (by) Jeroen Heijmans
Awaiting: State of JS 2021, any other major ones?
That said, it is definitely easier, by a mile, to throw away an approach that turns out to be faulty in Python, which means it's easier to try it in the first place. It's easier to simply write down the approach and figure out the implementation when you need to as well.
Interested in getting more out of vim, so far I'm quicker for some things, but I'm not convinced I'm quicker overall.
The Dijkstra stuff on day 15 is what ended it for me; like you said, python makes it easier to prototype stuff, so if you need to learn/relearn algorithms you never use day to day, it's so much more forgiving.
I don't have many good things to say about vim or emacs's window/frame/buffer management... too used to VS Code/Chrome style tabs. Let me see what I have open damnit.
...turns out I just need to google it. Its `set showtabline=2` for vim and `M-x tab-bar-mode` (or `M-x tab-line-mode`) for emacs. Derp.
`tt` binds to `:tabnew`
`gt` binds to `:nexttab`
`gT` bindts to `:prevtab`
I can `vsplit` (yeah diff!) and `vsplit` again and I can do `split` and I can do hmmm, `ctrl shift hjkl` to cycle. Anything more I can't. I am bad at managing and mentally mapping buffers. Ditto for `tmux`. It's easier for me to manage multiple windows (yeah tiling manager!) than vim/tmux's buffer. Aaaand I can recycle that knowledge for any apps.3 times more key presses! /s
Scala and F# also make it to ~ 1%.
TypeScript scored lower than I would have thought - used by 3.3%.
Scala and F# also make it to
Also that the long tail of languages makes up 22%!
And 3 respondents answered they use their own custom language :O
I’ve used Julia previous years but I didn’t use Julia this year because it’s been more difficult to gain traction with it professionally.
We all know the "other" issues with Windows but besides privacy (which feels disgusting to even say btw), it's really solid, fast and feels ok to use. I do a ton of dev / ops related work on it and don't have too many complaints from a technical standpoint -- lack of a first class tiled window manager is the only big one that comes to mind.
Here's the 2021 survey's OS results [2]. It shows higher WSL usage than the AoC survey, but still only 3%.
[1] https://insights.stackoverflow.com/survey/2015#tech
[2] https://insights.stackoverflow.com/survey/2021#section-most-...
The problems in AoC are quite easy, broadly speaking. So to me the appeal is to use a novel toolset. New language, new platform, etc. Someone on HN mentioned org-mode+CL.
Python is great, but not very novel. Are there that many people learning it on AoC? Or am I missing the point?
Those AOC tasks are training for skills most developers don't really need or train much (except maybe reading comprehension). Most code is quite boring, especially web dev stuff. Most of the interesting stuff is handled by external packages, you are just supposed to pipe it all together. It is still quite complicated work sometimes but in a very different way. It is only few developer that get to work on truly interesting stuff on their day job.
So the great thing is that AOC has something for everyone. A junior can take his programming skills to the next level, flexing some muscle he doesn't otherwise get to use. Advanced people can use it to either get to know a new language or take on code golfing and learn to abuse their favorite language in a new way.
Many of my senior level colleagues can't do them either. This says more about job title inflation than the difficulty of these puzzles, though.
I did it in Python (well, most of it) because this isn't the stuff I usually do. I use Python for moving data around mainly, with maybe once per year I do something more exciting. So for me it's about exercising my favourite language in ways I wouldn't otherwise be doing.
I did actually give up this year, though. When it came to the 3D coordinates puzzle I realised I would have to learn numpy and a bit of linear algebra and I just didn't have the time. Maybe I will pick up where I left off over the holiday period.
I decided to go outside my comfort zone and do it in a language that I don't work in. (I work primarily in Ruby, did it this year in Elixir.)
I had a blast honestly! I was a great way to learn a language and get some daily practice in.
I also don't think that the problems are that easy. With Python I can focus more on solving the problem instead of trying to fight a new language (or to force a language into a task for which it isn't all that great).
I have to cycle back to it to use a smarter algorithm for part 2.
- a well implemented smart solution runs in a reasonable time even in a slow language on a slow computer (this is what I meant by not being performance bound)
- some of the exponential growth puzzles can't be realistically brute-forced even with a fast machine and a performant language (like the example you mentioned)
I mis-read your intended (but clear enough) message the first time.