10 ms·
Programmer Migration Patterns
- leethargo 8y ago> Yes, I forgot your favourite language. I would be interested about the position of Julia in a hypothetical future version of that article. On a first glance, one would expect migrations from MATLAB, R and Python 3, but maybe it will be mostly C++ programmers wanting some more interactivity?
- KenoFischer 8y agoYes, we do indeed see a surprising number of C++ programmers in the user base (essentially people who are stuck in C++ because of performance considerations, but would like to iterate faster). MATLAB/Python/R users tend to come to Julia when they outgrow the performance constraints of their older systems.
- ktpsns 8y agoOn the other hand, the scientific community certainly does not carry out an ongoing switch between JavaScript and Python, as the author percieves in the web world. Python is an ideal example of a scripting language that got so popular in so many areas that it is hard to say who uses it for what. Pupils use it for getting familiar with programming. Many standard linux distribution tools are written in Python. There is so much beyond web development and scientific applications.
- deleted 8y ago[deleted]
- mhink 8y ago> A surprisingly large fraction of the new people come from the scientific and numerical processing world, because of modules like SciPy and then Tensorflow. Python is honestly a pretty weird choice for high-throughput numerical processing, but whatever, those libraries exist, so that's where we go. Another triumph of python's easy integration with C modules, I guess. And python 3 is also made with the web in mind, of course. From what I understand (which, admittedly, isn't that much) those bindings, along with projects like Jupyter, really can't be understated. They really are incredibly high-quality projects. That being said, I'm honestly surprised to see so little mention of Rails in this article. I would have honestly expected at least an arc from Java and PHP to Ruby, simply because of how its adoption skyrocketed around 2009.
- iLemming 8y ago> you're going to need to write a web app, and then it's super annoying that your frontend code is in a completely different language than the backend, with completely different quirks It's a shame that there's nothing about Clojure(script), because it does fix many problems mentioned: Javascript is ugly, yada-yada
- LyndsySimon 8y agoOn one hand, I really like Clojure (and Lisp in general). On the other, I find that I have to have a much higher level of focus to get anything done in a Lisp, and 90% of my time I'm fighting to stay on task anyhow. When I was doing Clojure, it wasn't uncommon for me to have days of struggling to understand the (very terse) code punctuated by a few hours here and there of extremely productive programming. Those productive hours were very, very satisfying, but the biggest thing I took away from the experience was that it underscored my ADD. If I didn't have ADD, I think I would be spending a lot more of my time in Clojure/Lisp.
- IshKebab 8y agoI'm pretty sure node.js isn't a language... Other than that, this is an interesting idea. Obviously it is going to be pretty inaccurate because it is just one guy's opinion. I wonder if you could construct a similar graph based on actual measurements of people's Github commits or Stackoverflow questions.
- Klathmon 8y ago>I'm pretty sure node.js isn't a language... While you are technically correct, I think the distinction between server-side and client-side matters here. Many people started with javascript out of necessity, but then began using it in many areas outside of scripting for web pages. And server-side JS is very different than client-side JS in many ways. Take something like Ruby for another example. I wouldn't find it out of place to see something like this with "Ruby [without rails]" and "Ruby On Rails" listed as 2 different things.
- bryanlarsen 8y agoWhere the diagram diverges from reality is interesting. I've heard it said several times that Rust is surprisingly popular with Ruby programmers and surprisingly unpopular with C++ programmers.
- thraway-burnout 8y agoThat's because it only requires a 50% remapping of finger muscle-memory ;-D
- bfrydl 8y agoThere's some stronger similarities between Ruby and Rust than some might expect. Ruby is obviously a lot less strict, but both seem obsessed with providing every method that could possibly save you time. Ruby's Enumerators and Rust's Iterators in particular are almost excessively comprehensive. You don't write many loops in either language. Also they both use this_casing_style for most identifiers and ThisOne for types.
- Wohlf 8y agoRust is also pretty popular with Python programmers, at least the ones who realize they need a systems language.
- jejones3141 8y agoI fear C++ has outdegree zero.
- bryanlarsen 8y agoIs Ada also a terminal node? Once you've written code for NASA you're forever tainted and are lost to the bureaucracy? :)
- notacoward 8y agoNot perfect, but a lot of it rings pretty true. The most significant difference I see is that I'd consider C++ a terminal node. It's not that I like C++. In fact I loathe it with the heat of a thousand quasars (much more energetic than mere suns). But it seems like there's an awful lot of new code, especially at Very Large Internet Companies, still being written in it. There's no sign that those whose job security rests on knowing how to navigate the swamp that is the C++ standard are ever going to move on. It's terminal, all right.
- pjc50 8y agoI can sort of see that, although I've managed to escape to the sunlit uplands of C# through a hidden arc of "Microsoft desktop development". Turns out these days if you want to modernise an MFC app C# is a good replacement, and you can even construct horrible chimeric systems where some of the windows are C# and some are C++ within the same process.
- Dahoon 8y agoC# -> TypeScript -> node.js I'm really trying but I can't see how/why you would go from C# to JavaScript?
- crc32 8y agoI can see how OP would come up with this - Angular w/Typescript is probably the "Microsoft Way" choice for front-end JS and has good support in VS. Once you've been exposed to a bit of that it would be natural to get curious about other parts of the JS ecosystem i.e. node.
- bfrydl 8y agoMost C# developers who followed this path probably worked on enterprise-level custom software which is now web-based or they worked on ASP.NET applications which have been replaced by TS/JS web applications.
- cheschire 8y agoOne example would be SharePoint, which has shifted fundamentally from full trust farm solutions over to client side SPFx solutions running through APIs due to Office 365. Another example would be UWP, which has pretty robust JavaScript support, meaning someone could switch from C#/XAML over to a JS app that more closely matches the web front ends of their site. And really Angular is a pretty simple leap for anyone familiar with ASP.NET MVC.
- mcv 8y agoUnavoidably arbitrary of course. I don't see why people would mostly move from Python, Ruby and PHP to Javascript. Well, I can see PHP, but mostly, people move from HTML to Javascript. Also, about 10 years ago or so, I believe there was a rather big exodus from Java to Ruby. If I had to describe my own journey, it's Basic -> Modula2 -> Prolog -> C -> C++ -> Java -> Javascript -> Ruby -> Groovy -> Node.js -> Typescript.
- rcarmo 8y agoThe pun on Haskell was quite fun, but overall a lot of it rang true to me. As someone who is constantly bouncing between Python 3 and JavaScript with Go and Java waiting in the wings and .NET boiling away underneath, the whole thing was entirely too on point for me.
- ivanhoe 8y agoThis depends a lot on how old one is. For instance, in 90s the big transition was from C to perl. Almost all perl devs that I know started in Turbo C, Turbo Pascal or quickbasic.
- wink 8y agoI think also the transitions are totally different depending on what decade you started. I suppose the amount of people starting with C now is massively lower than even 10 years ago, let alone 20 or 30 - so that's where the graph falls flat for me and a lot of people my age who grew up "with the internet" and migrated upwards in this graph (and downwards the stack). Then again I never migrated, I guess. There are 27 languages on this graph and I've been paid to write 13 of them, read 1 (rewriting from this to something else), used 2 more professionally on a lower scale and dabbled with 3 or 4 on my own.
- swiley 8y agoJudging by the title I expected the graph to have cycles in it.
- ralmeida 8y agoThere is, between Python 3 and JS
- platz 8y ago> And I skipped Haskell, because... well, I considered just depicting it as a box floating off to the side, with no arrows into or out of the box, but I figured that would be extraneous. Elm -> Haskell F# -> Haskell Scala <-> Haskell
- scriptkiddy 8y agoWhere does Erlang/Elixir fit into this in your opinion?
- platz 8y agoI don't think there are clear enough patterns; maybe that one is off by itself.
- Maultasche 8y agoI've gotten the sense that the most common migration path is Ruby->Elixir. It seems that many of the people using Elixir previously used Ruby. The creator of Elixir was active in the Ruby world and Elixir has similar syntax to Ruby. That said, I started getting into Elixir while doing C# and Javascript development, but I suspect that's a pretty uncommon path.
- pankajdoharey 8y agoWhere is Lisp or Clojure?
- LyndsySimon 8y ago> I also omitted the Lisp family, because it never really got popular, although a certain subgroup of people always wished it would. And I would have had to add a fifth category of programmer specialization, "configuring emacs."
- swiftcoder 8y agoThere's an interesting missing link from the real world here: Javascript -> Go. Despite the intentions of Go's creators, Go continues to be seen more as a naive alternative to Javascript than a high-level replacement for C++ (at least in the sense of users migrating). I've observed far more Javascript developers excited about Go than I have native C++ developers - who tend to gravitate more towards Rust for it's similar feature set [generics, no need for garbage collector, etc], and it's focus on low-level safety and performance.
- Klathmon 8y agoI honestly haven't seen many "groups" move from JS to Go. I've seen individuals do it, but not a ton of "organizations" make that kind of move. I've seen a LOT more go from Python to Go, and a few go from Java to Go. Do you have any examples or places that have written about a switch from JS to Go? I'd be super interested in reading their experiences!
- rasjani 8y agoWorked for a big game engine company for brief moment - most of the backend micro services in a single project where previously written in nodejs but all new stuff was written in go. My first and so far last project with go - all I can say it was quite fast to get up and running but echoing the same complaint many have said about go: error handling boilerplate gets annoying fast.
- fjp 8y agoI work in an async python microservices shop and the second language we added was Elixir for anything that needed to be more performant. We're just starting to play around with Go. I haven't touched Elixir yet, so I'll probably go from Python straight to Go as soon as I get the chance.
- scriptkiddy 8y agoI would highly recommend trying Elixir out. There's a little bit of a hump to get over at first if you're not familiar with functional programming, but after that it's mostly smooth sailing. The language has it's own built-in process manager capable of running thousands of concurrent processes with a small footprint. Things like function arity and pattern matching are core concepts and core parts of how the language works. I've found that when comparing 2 simple web applications, one Python 3 and one elixir, that the Elixir codebase ends up being a bit larger because of the required boilerplate. However, as an application becomes larger, the disparity swings the other way and the Elixir codebase will remain smaller over time. In addition, writing Elixir code just feels clean. Nothing really feels hacky, even if it is.
- IloveHN84 8y agoIt misses the transitions such as Java-> Go, Java > Python, PHP > rust and so on
- perlgeek 8y agoIs this just based on personal observations/opinions, or on data? If on data, what's the methodology or data source?
- rob74 8y agoMy thoughts exactly! I imagine there is some kind of migration from every language to every other language, e.g. at least some developers migrating from any major web backend language (Java, PHP, Ruby, Node.js etc.) to Go. It would be far more interesting to have also a quantitative information, like in this graph: https://qz.com/192440/where-everyone-in-the-world-is-migrating-in-one-gorgeous-chart/ https://qz.com/192440/where-everyone-in-the-world-is-migrati... But for that you would of course need actual data...
- darkmarmot 8y agoThere's been a pretty solid migration from Ruby to Elixir -- since Elixir was envisioned as a Ruby-style dev-friendly version of Erlang.
- rambojazz 8y agoSorry but... what kind of evidence did you gather to make this post? It looks like a graph of similar/related languages and nothing else. I mean it's trivial to assume that assembly developers would gravitate toward C and not Javascript, but it's pure speculation.
- armagon 8y agoI was surprised to see that C# isn't considered a end-node for languages. I'm a game programmer; games make up a lot of applications being developed (nearly 100% for consoles, roughly 25% of mobile apps[0]). The Unity 3D game engine may be used for half of all games[1], and it uses C#. (It did support variants of python and javascript, but they are now deprecated). [My experience suggests that a large chunk of the remaining games are written in C++.] (I was also surprised, when doing a job interview in C# recently, to see how behind-the-times the version Unity supported for so long is -- mostly surprised by the nicer string interpolation that is now possible.) [0]: https://mindsea.com/app-stats/ https://mindsea.com/app-stats/ (see point 4) [1]: https://techcrunch.com/2018/09/05/unity-ceo-says-half-of-all-games-are-built-on-unity/ https://techcrunch.com/2018/09/05/unity-ceo-says-half-of-all...
- ape4 8y agoOnce I'm in a "terminal" node what happens? I dying the only way out ;)
- meh2frdf 8y agoLoad of rubbish!
- dang 8y agoMaybe so, but please don't post unsubstantive comments here. https://news.ycombinator.com/newsguidelines.html https://news.ycombinator.com/newsguidelines.html
- Narew 8y agoThis migration pattern remember me an other blog post https://erikbern.com/2017/03/15/the-eigenvector-of-why-we-moved-from-language-x-to-language-y.html https://erikbern.com/2017/03/15/the-eigenvector-of-why-we-mo...