Can someone who is experienced in both Rails & Django explain why Python & Django are trending up so quickly, while Ruby & Rails are ranking on the "most dreaded" lists? I don't want this to become a holy war, I am just genuinely curious what I'm overlooking.
Ruby is a delightful language, but it's dominated by one niche (web development) and one framework (Rails).
Over the last 10-20 years Python has become the main teaching language in Academia. This has greatly contributed to it's ecosystem for math and science, which in turn has contributed to its rise in Data Science and Machine Learning. It also gets a lot of support from Google.
All of these things combined mean that the broad rise of Python is lifting up Python for web development, but if anything I'd say web dev in Python is lagging behind those other uses.
There's one more thing that I think is the root cause of why Rails - the framework - has faded somewhat in the minds of web devs. Rails has always been an opinionated framework, and early on they came up with "The Rails Way" to do front-end assets. The combination of Sass + CoffeeScript + Asset Pipeline with built-in concatenation, minification, and asset hashing was pretty neat compared to the old world of a bunch of es5 files loaded via script tags.
But this hit before the rise of NPM and being able to `require('foo')`.
The JS packaging wars went on for a while and none of those asset solutions are as simple and "just work" as the Rails Asset Pipeline -- but the asset pipeline doesn't hook you into NPM. Rails dragged its feet for a long time on that before adding webpack support.
So I think during that time you had a TON of the trendy hipster open source people moving into Node first on the front end, and then eventually losing interest in Rails because the framework wasn't making it easy for them play in the very latest js ecosystem.
And I think there quickly became some saltyness among Ruby devs about Javascript, that people were overdoing it and that really you only needed "sprinkles" of Javascript to make a great app.
So (1) Python has risen a ton overall, lifting Django, and (2) Rails was slow to embrace the JS craze and that held Rails back.
Those two trends pretty much tell the story as far as I can tell.
In ruby, the world isn't so great. When I was in the ruby world, I would always hit roadblocks on my side projects. There were so many times where I wanted to do something not web dev related and I couldn't find a popular and well supported ruby package. For example, I wanted to do text analysis of some sites I scraped and python's nltk was perfect (but there wasn't a perfect ruby library).
The ruby world needs to expand beyond web dev if it wants to grow.
Additionally, neither Flask nor Django support ASGI, which is the future of how web frameworks will be written in Python. Quart is "Flask for ASGI", and Django has roadmap plans to start moving vaguely in that direction, though they're still a long way off.
Python has also struggled mightily with package management, and how to do it "one right way", which is one of the mantras of Python. Pipenv is a step in that right direction, but it's taking time to get people to adopt, and it's got warts of its own still (though it's getting better every day). I think it's still technically in "beta" (for whatever value that has these days, I am sure plenty of people use it in production).
Let's also not forget the python2 vs. python3 migration problem that I think we're finally now starting to get over. With python2 set to depreciate in 2020, the clouds are starting to lift on the major problems in Python, so naturally you're seeing a rise in converts.
https://asgi.readthedocs.io/en/latest/
Though having worked extensively on both and not having a particular love for either, the simple answer is this (IMO):
Python skills transfer to other industry disciplines far better. Picking Django (vs Rails) is just a good career move. Data scientists use Python heavily (scipy, numpy). Many universities teach Python as the first scripting language. Python has a much stronger foothold outside of web frameworks.
And it's a real problem when I want to do hobby signal processing or deep learning stuff.
Python has won that segment of the market and I better get with the program.
A sibling comment here mentioned that Rails' power came from other gems, but that's not really true. Rails is still actively developed, and just Rails, by itself, gives you more functionality out of the box than whole 1000+package Node stacks.
While Rails has an inclination to apply code generation and convention, Django tends to use introspection and monkey patching to get the same results. Both are amazing on similar ways, but horrible on their own different ways. Maybe Django developers just go into a different framework when they get some project that isn't a good fit, so they see less of the bad.
Personally as an infrastructure engineer, I'd be incredibly happy to drop Python, and almost everyone on my team agrees. When you're building complex data processing pipelines that have to support the hundreds of features that scientists ask for, having static types (especially ones that differentiate between different dimensions of tensors) is a huge win over having to write a unit test for all the possible combinations of things that can happen.
Unfortunately from a solid infrastructure perspective, Ruby is even messier than Python due to the rampant metaprogramming culture. This doesn't matter so much in web dev where the layers of complexity are not that thick, but in other types of development it becomes a real burden very quickly. That might be one reason why Python is preferred over Ruby.
As someone who has done a decade of Rails development and works in a Ruby + Python shop, I'd say you haven't overlooked anything.
Ruby and Python are so similar in style and tradeoffs that it's quite difficult to make a case for one _language_ over the other for any particular task.
So then it comes down to (1) ecosystem and (2) personal preference.
For a long-time Ruby has had a better web ecosystem. I'd argue this is still true, but I don't know if it will last. The reason is that Python's overall ecosystem has developed a lot more than Ruby's and the overall larger community is really valuable.
RoR is ridiculously opinionated. If you don't know The Ruby Way then you'll be fighting the framework for every inch of productivity. It also has a lot more magic than any other framework I've ever used. It hides so much of what it does behind abstractions on top of abstractions that it's hard to do a simple thing and understand what's happening. (This ignores the fact that Ruby is Perl in better clothes, both a huge strength and weakness, depending on your past experience.)
Django is better in that it's slightly more obvious what's happening and why. It still has some magic to it, but not to the same extent. You can also do whatever you want, and it'll be a little harder or a little easier, but it doesn't fight you nearly as hard if you're not doing things The Django Way.
I think if you're a RoR dev and know RoR and like how it works then you're golden - stick with it and be productive. If you don't drink the kool-aid then you're not going to be happy.
I've found that after doing that, people (1) get it easily, (2) don't feel it's "magical", and (3) enjoy the environment.
Conversely, SENIOR engineers on other teams who did not go through this process often express sentiments like you did. At this point I can pretty much guarantee the people who are salty about Rails are people who don't normally need to read the manual. They didn't read the Rails manual, and they're confused, and they're not used to being confused, and so they get grumpy and bitter about that over time.
Personally, I like Rails. But I do think that the "convention over configuration" approach has this major tradeoff - you really shouldn't just dive in and figure it out, you should read the manual first. And I get it why some people don't like that and don't think it should be necessary.
So yeah, it's opinionated, and thus it's polarizing.
Python popularity is rised thanks to academic . But it is not the better programming langage so far.
But if I had to pick one thing to point at to explain its rising popularity, it would be data science, as others have mentioned. I wonder if Travis had any idea the impact he would have when he made numpy.
Python's creator, on the other hand, worked at Google for a while, and like Sun, Oracle, IBM, and Microsoft before them, schools and beginners are naturally drawn to things used by the big companies.
Explicit imports, no magic file locations or configurations...
Python is just a great confluence of all of the things that other languages lack, and the Python language is adapting to include more and more of the things people actually want. I don't think the Ruby language has been nearly as responsive (some would even say that Python has been too responsive, and certain language features are going too far outside of what the core of the language should do).
Also, Python is notorious for its excellent documentation (Django follows in those footsteps) and gigantic helpful community. I don't know how comprehensive Ruby's docs are, however.
Python hits all the notes, from "I want to write a random script to do a thing" to "I want to develop enterprise level software with hundreds of thousands of lines of code". You can probably pick Python as a default for nearly any baseline business-method problem and be in pretty good shape.
Generally it is true that learning a new language, will give one new tools to reason about problems. I find Kotlin and Python amongst the languages I have used, to offer the least new insights and ideas to the student.
Most everything else you said could also be said of Ruby - docs, helpful community, flexibility from scripting up to massive webapps. That's what perplexes me - what are the "more of the things people actually want" specifically that drive Python's growth?
Django basically does what Ruby on Rails does, not exactly but close enough. Flask does what Node.JS does, to the extend that we’re talking about building quick prototypes, not running Netflix. So you have most of your web-based needs covered. Python also does data though, and is to ML and BI what NPM is to web-development, and lastly Python does systems scripting. Basically Python does most things, well enough. By comparison, ifyou’re a .NET house like we have been, you’ll use C#, Microsoft SSIS/SSRS, Powershell and probably Python to do what you could do with all Python.
So I think that’s a big part of it. The other big factor is that Python has replaced JAVA in most of Academia. JAVA was great and all, but being something a very high percentages of CS majors learned surely helped it.
Flask is better at Netflix scales. You don't want opinionated frameworks making decisions for you in the endgame. That's only good in the beginning to get off the ground
The other half is ruby/rails got a reputation of being a language where some write-only code was encouraged. Djanjo and python have long encouraged writing maintainable code. This is a culture thing - there is no reason you cannot write unmaintainable code in python or maintainable code in ruby, but the reality is people didn't. This is part culture, part rails encouraged getting something working fast even if it wasn't maintainable while Django has also said take a little time to get it right in the first place and it will pay off.
Or maybe great engineers just pick whatever that suits their job, and create amazing things. After all, Guido uses Python, Katz uses Ruby, Linus uses C, Odersky uses Scala, Jeff Dean uses C++, and the list goes on.
Recently, I had a moment to code in MQL4 language and boy, I needed a break for just fighting against the language. Not even associative arrays and no proper NULL with magic variables that changes behind the code all over.
I'm liking React more now since you get the full power (and clusterfuck) of npm.
Also I work in R primarily, I find it funny that love and dread are both near 50%.
If you come from Java/C# and discover the speed of C without the pain of C, or if you come from C/C++ and notice life with decent compiler messages, a nice package manager, sane modules etc. - that’s a fantastic feeling.
I'm really looking forward to learning more.
As the Rust book mentions: Ownership is Rust’s most unique feature, and it enables Rust to make memory safety guarantees without needing a garbage collector.
In other words, you have the power/speed of a low level language without certain of the dangers, such as "double free" errors.
(That said, I'm only now proceeding through the official book. In other words, if I got this wrong, someone correct me.)
Fetishization of low-level languages by primarily Javascript developers, plus it has the same socially liberal online community that Javascript has, due to Mozilla.
I hope this comment doesn't portray any bias.
Don't get me wrong - I completely understand why you wouldn't want to use it if you can help it, but honestly, for many uses it's still not a bad choice in my honest opinion.
jQuery was ranked "most popular web framework" (48.7%) but it was also ranked 2nd place for "most dreaded web framework" (54.7%). I suspect that there may be a lot of older projects/sites that still rely heavily on jQuery, thus accounting for high popularity - and possibly the "most dreaded" title.
Not at all. It's a self selecting survey, the people who choose to answer are likely more confident in their abilities than those that don't, and, contrary to common understanding, it is perfectly valid for more than 50% of people to be above average.
Average != median
For this kind of question ('is X above/below average?'), however, I would expect that people are _actually_ thinking of the median.
Consider a high Gini-coefficient country, where the income distribution looks like this: 1, 1, 1, 2, 2, 2, 3, 3, 4, 5, 6, 999999. If you ask people 'is the person earning 5 above or below average?' they will say he is above average, even though he is actually above the median and below the average.
I feel like I have to point this out every year, and it's one of the most important things to keep in mind about this survey. A true survey would randomly select developers from the global developer population at large.
Unless given an explicit definition, the word "average" has been abused to an extent that it's currently meaningless.
50% said no. I think this is naive. We've had this discussion on HN before. Companies pay lip service to the idea that they have parallel tracks for management and engineering, but the reality of it is that it takes far more success to move up the engineering ladder.
You can be one of the very best engineers in your company, or one of many hundreds of senior managers, and make the same money. If you look at how many people are at each salary level, the higher you go, the worse the ratio gets of management to engineer.
If you want to get to the highest levels of the engineering ladder, you have to be one of the most well known engineers in the world. Or be a VP. It's not easy to be a VP, but there are far more VPs out there than Distinguished Engineers.
You also might want to take into account the age and seniority of most developers on the platform - for someone with <10 years of experience, it's likely that you absolutely have an avenue to make more money without becoming a manager.
For instance, a senior engineer can be valued and respected internally, and paid accordingly in the US. In a country like France, where technical talent means little (except for very rare and niche skills), engineers usually transition early to managing positions if they can.
I've had people go out of their way to make my professional life more challenging or insulting. But it makes me happy to see nonbinary/nonconforming identities addressed in this survey. Our experience of the tech world is very different, and it's great to see some acknowledgment of that.
If we decouple the idea of gender (societal expectations for men/women -- e.g. boys like blue, girls like pink. Boys wear shorts, girls wear skirts.) from the idea of sexual/genetic characteristics, then we can start to discuss what it means to be a man vs what it means to be male.
Manliness and femininity are both spectrums -- you can imagine folks who are real tough manly men and folks who are not. We call these two spectrums the gender binary -- people typically fall into the manly spectrum somewhere, or in the feminine spectrum somewhere.
Nonbinary folks feel excluded by those spectrums for one reason or another. Nonbinary is an umbrella term that can include people who are agender (e.g. I don't identify with any gender), genderfluid (e.g. sometimes I feel masculine, sometimes feminine), genderqueer (e.g. I'm going to take the elements from each spectrum I like and make my own thing), etc.
For a more concrete example, people like David Bowie are often held as icons for the nonbinary community (again, not everyone agrees with me here). Eddie Izzard also famously played with gender. Ruby Rose and Tilda Swinton identify as genderfluid. There's a lot of different people under the broad umbrella of nonbinary.
> Can you share some experiences?
I've been told, "Your pronouns don't matter". I've had my bathroom use policed (I often feel uncomfortable in mens/womens restrooms and strongly prefer gender neutral spaces). I've had coworkers ask, "So does that mean you fuck men?" in a way that is clearly a set up to a joke.
Every day I make a conscious choice on my presentation (clothes, hair style, etc.). I typically choose to present in a masculine way because it makes my life easier, even though it's a presentation I am less happy with. There's a surprising amount of cognitive load for me for something that's relatively mindless for most people. Do I dress in a way that makes me happier, but results in a lot more sideways glances (and possibly violence?) or do I dress in a way that keeps me safer but less happy?
I understand that they/them pronoun use is not common, and I'm never upset when I correct people, but some people have told me, point blank, "Your pronouns are wrong and gross" or "I will use they/them, but you should know I'm lying to your face when I do so."
These sorts of experiences are distractions from what I really want to do, which is build awesome engineering teams and solve hard technical problems. But they're unfortunately a reality of (at least) the software world in the US and most likely in the broader workplace.
As someone learning Scala, this is both encouraging and interesting, and I'm curious as to any explanation to the table result. Do functional programming languages increase developer productivity so significantly that a single developer can command such compensation? Do these languages attract highly productive developers whom the market compensates for their productivity? Something else?
The other half is location. There are only few functional programming jobs, highly skewed toward the big cities with higher salary and costs of living.
For example, in SO's survey 80% of respondents say they code as a hobby. If this survey was not self selecting I'd bet the farm that it would be the reverse - 80% didn't code as a hobby.
Maybe that’s from being Scandinavian but 90% of our jobmarket is still .Net framework (not core), JAVA and PHP.
Then the percentage indicates the number of respondents who selected that / the total number of responses.
1. There is no easier way to set up a standard marketing/business website, despite many quality attempts to build replacements. The plugin library is a big part of this.
2. It's extremely easy for anyone to start hacking on, leading to lots of developers "cutting their teeth" on WordPress by following online tutorials. Show me a self-taught front-end developer and I'll be shocked if they didn't learn on a WordPress site. This has good & bad aspects, of course.
Comparing wordpress and developers, is a bit like comparing how many people like tyres (everybody got some on their car) to how many people enjoy making tyres for a living (not a very common activity).
It's a testament to how being non-technical friendly leads to market success.
Interesting. Isn't the former a subset of the latter?
No. I don't think so. Depends on how you identify development work. Is documentation, test-writing, requirements gathering, planning, backlog grooming, educating, or advocating considered non-development work? (I think all that stuff pretty clearly falls under the purview of 'developer', but I've gotten a lot of feedback from folks over the years who think it's not.)
Toxic work environment can include things like sexual harassment, micro and macro aggressions, offensive language (I had a manager for a while who called his reports 'motherfuckers), etc. I wouldn't normally consider non-development work to be 'toxic' in the same way I'd consider, say, working with someone who consistently talks down to women and minorities.
I have to interview other developers. This is not a part of a toxic work environment (in fact it can prevent them).
Toxic work environment be entirely development, for instance if they put your computer in the bathroom I'd call that toxic.
I suspect most females mean some form of sexual harassment is tolerated. This is a big problem that men tend to culturally ignore.
2. Ruby = Rails. ~8.5% of Ruby Developers and there are 8.2% of Rails Developers.
3. Ruby / Rails are for many years split in love and dreaded languages and framework. ~50% on both side. I don't see any other languages and framework has similar pattern.
4. There are more Django / Laravel developers than Ruby Rails.
5. ~60% of Developers are on Windows. That was obvious right? And yet Ruby / Rails Community has ignore the Windows as a development platform for years. [1] My guess it is the lack of resources.
6. Speaking of Resources, Ruby is the top programming language that is surviving without a Major Cooperation ( Facebook, Amazon, Microsoft, Google, Apple ) backing.
7. Ruby 's Median salary, comparatively speaking is trending on the higher side. And also one of the highest with respective of lower years of experience. That is both good and bad. Developers get higher salary, but less company are willing to choose it for cost reason.
8. Am I correct to assume those Salaries exclude any Stock grant? Which is common in US?
9. Visual Studio Code really is taking over, and there are more performance improvement coming. [2] I wonder if they would consider moving to WASM in the future.
10. Financial and banking - 8.9%, are the third in respondent's industry. I am a little surprise how many people are working in that field.
11. 60% of them prefer to work in office . THAT is great to hear. Not every one likes working from home or Remote. May be those who prefer to work from home are just very vocal about it.
12. And it is for that reason 80% of them prefer to have a Face to Face conversation. As easy as it is to type, write, calling or even Video conference, I still believe there is something when two people sit together and communicate. There is something that goes far beyond words coming out.
[1] https://samsaffron.com/archive/2019/03/31/why-i-stuck-with-w...
[2] https://twitter.com/kaimaetzel/status/1114908539342864384?s=...
That is a big deal in and of itself.
The listed salaries should exclude stock options, healthcare, 401k matching, et al. It would be very unusual to have a compensation component in a survey of this sort and include those items.
> 10. Financial and banking - 8.9%, are the third in respondent's industry. I am a little surprise how many people are working in that field.
It's actively being trimmed down these days[1], however consider someone like Goldman Sachs: 36,000 employees with about $36 billion in sales. A sizable employee base for their sales; $1m in sales per employee isn't too bloated of course. Citigroup has $65b in sales, with 200,000 employees, $307k per employee. JP Morgan does $104b in sales with 256,000 employees, $406k per employee. I wouldn't be surprised if the banker to tech employee ratio increases persistently (in favor of tech workers) at financial firms for the next two decades or so.
Visa is king at being slim however. It recently became worth more ($346 billion market cap) than any bank around the world, including all the US majors. $20b in sales, $10b in profit, with just 17,000 employees (the profit to employee ratio is particularly wild). Facebook approximately matches Visa on the profit to employee ratio (slight advantage).
[1] https://www.bloomberg.com/opinion/articles/2019-04-09/societ...
I'm torn here. It's hard to correct for bias. It would be like if a bank had a survey and had people rate their financial stability - but they had to have an account with the bank to participate in the survey. Wouldn't that bias the results in favor of financially responsible people?
I'd be interested how many 0 rep new accounts with lots of downvotes claimed high competence vs. established accounts. It could very well be that people with SO accounts who are willing to take the time for SO's survey are the type of people that are more competent on average than developers that don't have SO accounts and don't participate in surveys.
A better question is whether or not this experience distribution is representative of all software engineers. It almost certainly isn't, because it's only surveying "people who respond to stack overflow surveys", but it's hard to know how different it is.
All that said, there is no need for the quip about trends and buzzwords. Of course younger developers are more interested in new technologies - they have a whole future career they need to plan for. One might just as easily and meanly say that old developers refuse to learn new things because they're just going to retire in 10 years.
Unfortunately every year people start taking the results from these and jumping to conclusions, like practically everyone is a full-stack, Node JS developer who contributes to open source 7 days a week. We know that's not true but it doesn't stop article after article every year claiming things like that.
I continue to find the discussion of salary disappointing though. The survey provides a good opportunity for more detailed information.
When I am alone in an office, there is a higher temptation to waste time on reddit/youtube and I am less likely to talk to other developers outside of IM apps.
But when I'm in an open office/lab environment I find I'm more likely to stay on task and also more likely to get unstuck on something thanks to close proximity to other developers.
Everyone is different.
However, it’s easy enough for employers to provide both private & quiet offices and separate areas for constant collaboration and ambient chatter, allowing people to choose which type of area they want their primary workspace to be located in.
We used data from last year’s survey and trends in tags on Stack Overflow to identify which technologies to include on the survey this year. We prioritized popular and fast growing technologies, considering which smaller or shrinking technologies we could remove this year.
So, I think it possibly wasn't listed as an option. Something to consider next time one of these reports is cited as evidence for or against something, as editorial discretion may or may not wildly change the meaning of the less popular items. In this case it may have been the difference between an item being included but lowly ranked and not included at all, which without additional information implies it didn't rank enough to be shown, but I'm not sure if that's the case or not (but I have my doubts that WebAssembly outranks Perl).
I personally really like doing front end (Vue/React etc) work but when I saw this salary gap, I feel like that I need to reconsider my career path.
From my hobbyist exposure it's pretty awesome. I understand it's expensive for production... but why do people dread working on it?
% of developers who are developing with the language or technology but have not expressed interest in continuing to do so
Heroku 47.3%
VS Code and TypeScript, are kinds of technologies and tools that just win entirely on their strong merit, in spite the image of who has created them.
.NET Core is getting up there too. MS has always been a developer friendly company but they are definitely earning mindshare back from non .NET developers.
When asked what one thing they would change about Stack Overflow:
Women used the following words more often (compared to men): condescending, replies, nicer, rude, dumb, friendlier, assholes, thanks, confusing, knowing.
While men used the following words: simpler, huge, banned, angular, official, complex, algorithm, expert, bounty, force.
https://insights.stackoverflow.com/survey/2019?utm_source=so...
Now if only we could figure out how to get it up from the bottom of “most wanted” language.
Companies have realised that programming languages are like 'drill bit in a tool box', one needs to use the best bit for the job.
In all seriousness, people using non-mainstream languages are very attached to them. At least in my sample size of one.
>In the United States, almost 30% of respondents said they deal with a mental health challenge, a higher proportion than other large countries such as the UK, Canada, Germany, or India.
I would be interested to know just how much a higher proportion it was than other countries.
Overall:
2016: 7.2%
2017: N/A
2018: 34.9%
2019: 50.7%
Web: 2016: Unranked
2017: 24.0%
2018: 38.7%
2019: 55.6%
Mobile:
2017: N/A
2018: 36.6%
2019: 53.8%
Sysadmin/Devops:
2017: 22.4%
2018: 36.5%
2019: 55.2%
Of particular note, in 2019, VSCode is actually more popular than Vim among sysadmin/devops, and is a mere 0.4% less popular than Android Studio among mobile developers.
It seems like it's mostly been gobbling market from its competitors: Sublime Text (peak of 31.0% in 2016 down to 23.4% in 2019) and Atom (peak of 20.0% in Web in 2017 down to 12.7% in 2019), although its possible their decline is circumstantial.
What makes it the most dreaded? My only guess is having to maintain legacy code that's hard to understand or poorly written or another valid reason. I'd love to get into an embedded C / assembly role. I got pulled into web development early on, but I had a friend who was stubborn and held out and ended up coding games for casinos in C/C++ in Linux and SDL. I'm so jealous.
> 11% of our respondents said they didn't want to communicate with their fellow human beings via either method [face-to-face conversations or online chat]
and
> The aspects of Stack Overflow that respondents would like to change exhibit differences across demographic groups. For example, developers who are men are more likely to want change in official site rules (from the algorithms behind them to how they are enforced), while developers who are women are more likely to want to change norms for communication on our site.
The top words used by women to describe SO's problems include "condescending", "rude", "assholes".