Can someone help this old (2^5 years) developer out? I've worked with a number of programming languages over the years, and have never found a combination that brings me such joy and productivity as Ruby and Rails. However, I've always felt that Python and Ruby were very similar in style & goal.
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.
You asked about why Python but it has a lot to do with JS too. But first lets compare against Python:
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.
Yes, one of the biggest drawbacks in the Ruby world is the lack of strong libraries outside of web dev. Python has scrapy, numpy, pandas, nltk, beautifulsoup, matplotlib, etc. Basically if you want to do almost anything (except high performance real time stuff) you can do it in python. it is an excellent general purpose language.
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.
There is only a shortage of scientific libraries, you can do others tasks than web development with Ruby. Ruby is great for sysadmin tasks too for exemple. Many configuration tools was developped in Ruby.
>The ruby world needs to expand beyond web dev if it wants to grow.
I mentioned this in my other post. Ruby is the only language on the top list that doesn't have a major cooperate backing. Basically Ruby community are really lack of resources.
This is a great answer, and to expand on one particular point regarding "lagging behind", Django is not the most popular web framework in Python, Flask is, and by a lot. 24.8m downloads for Django, vs. 58.0m for Flask in the past year.
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.
You're probably going to get a lot of responses with "this is why rails is bad" and "this is why django is good".
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.
I switched from Python to Ruby because I wanted make my own hobby website and Ruby on Rails looked great. And 14 years later, my website has long gone, but I still use and love Ruby for all my scripting needs while my Python skills have faded.
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.
Heck, I'm looking at this survey and wondering if I should put Python on my learning queue. It does seem to be in use across a lot of disciplines, including some of the most popular emerging techs.
and honestly. You'll be 60% competent within a week or two. There's a long tail of language features and idioms, but that basics get you so far in python.
I'd contrast this with say Java, my other mainstay and Scala which I'm picking up in pieces right now. Java is quite explicit and has quite a bit less built-in so you don't feel very capable or productive for quite a bit longer. Scala has so many syntactic variants and features that the volume of stuff I have to learn is relatively vast. Every third block of code I read uses a new unheard of language feature or concept. ... and I have some functional programming background.
I have no hard evidence, but from a business perspective I have figured that one of the main appeals of Python is the combination of simple and strict that defines the community. Some languages (cough Perl cough) are practically art, and that frequently translates to a steep learning curve for new developers to a project, which in turn means cost to the business. Bringing on a new developer to a Python team feels like it involves a much shorter time-to-productive transition period. As a manager that makes me biased towards Python for workloads where a scripting language makes sense.
Given that students are probably learning Python in university, I could see this being a strong reason for its growth. I hadn't thought of the "manager" angle - it makes sense that it's easier to plug a new developer into a Python codebase than it is a Rails codebase.
To me, Python's rise in growth centers more around its appeal to the Data Science community and the ease of non-programmer types to pick it up and use it effectively with a much smaller investment of training time. Ruby, although much more flexible of a language is much more difficult for a non-programmer to pick up easily.
I also don't understand this. Even today, Rails is, by far, the most productive environment that exists for developing a web application. I speak this as someone who also wrote a ton of backends in Node.js, Java, and many other languages (never tried Django though, so I don't know about that). Almost all of those applications would have been 10% of the effort if they were just Rails apps.
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.
Django and Rails achieve a very similar productivity, with similar high-level ideas, implemented by completely different low level architecture.
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.
IMO Spring boot is definitely more productive than Rails; it's basically all the nice things about Rails except more mature and more comprehensive. The JVM is also much more performant than Ruby and Kotlin/Java is a better language in terms of long term maintenance (a proper type system).
That's a fair point. Devise is pretty much standard so it's easy, but you're right that it would make more sense for it to be part of Rails to begin with.
`rails generate scaffolf products name:string` generate models, views, controller, migration and even controller tests. I dit not seen this anywhere outside Rails.
I use Python extensively at work for one main reason: Tensorflow. We're an ML shop, and Python has the most well-developed tools for ML. Ruby doesn't have anything that even compares to numpy in quality, let alone all the things built on top of it like scipy and pandas. It will take a huge amount of effort for Python to catch up.
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.
Separately from my other comment, you said Python and Ruby are very similar in style and goal, and what are you overlooking?
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.
I can speak to the RoR dread side, as someone who is now in Django-land coming from RoR.
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.
Over the years I've ramped a couple dozen engineers onto Rails. The very first thing I have them do is follow the full rails tutorial front to back, no matter how many years of experience they have. It usually takes a day or so.
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.
There's a saying I'm fond of that goes something like, "Python isn't the best language for anything, but it's the second best language for almost everything."
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.
Whilst I'm pretty heavily experienced in Rails I'm less-so in Django. If I had to guess Rails being dreaded is down to experienced Rails veterans wanting to move onto the new hotness, and the rise of Python / Django being simply down to the fact that people newly getting into web development are far more likely to know Python than Ruby.
Django is likely rising because Python is rising. Most people are learning Python as their first language, and Django is a logical tool for them to try to build web apps.
I seem to recall that Matz, creator of Ruby, once said (paraphrasing) that he didn't try to create a popular language, he tried to create a beautiful language.
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.
Personally I choose Python over Ruby and Django over RoR just on syntax and readability. There’s absolutely nothing about the way Django names and structures their framework that has me guessing but RoR is full of them.
The main reason why Python is trending is mostly because of the data science community. Things like Pandas, NumPy, Jupyter Notebooks and Tensorflow all are built on python, mostly because of its simplicity and ease-of-use more than anything.
There's nothing rising about it, Django been around and very popular for years.
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.
IMHO, I find python increasingly lacking in features, especially its lack of enthusiasm in adopting functional features, including immutable data structures, pattern matching/ destructuring, python lambda functions are restrictive. To my eye a strong imperative flavor pervades most python code. After some time spend dabbling in Clojure, I find python rather primitive.
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.
> To my eye a strong imperative flavor pervades most python code. After some time spend dabbling in Clojure, I find python rather primitive.
Likewise here (except Rebol instead of Clojure). I've never been able to explain it well, but something about Python feels really limited in a very similar way as Java (like, 1.6ish) does.
Not all languages need to be functional, or grow in their functional support. Functional programming isn't the future, and Python is very opinionated about how you use it, so adding functional features would further muddy the water in terms of how a new user gets started in the language.
Adding functional features would make Python materially worse.
If that opinionated manner is the usage of a plain imperative form, then it isn't leveraging the advancements made more popular in the upsurge of interest in functional methods in the last 10 years.
I am not saying python should grow these features, but merely that for any new work for which python is being considered there could be a strong case made for choosing a more modern, more safer, more functional language instead.
Functional isn't safer or modern, and Python is about as safe as they come. Try out type hinting if you're scared of duck typing.
Besides, safety for its own sake isn't all it's cracked up to be. I'm happy to take on additional risk in my development process if it allows me to move as fast as Python does. I can account for that risk in other areas, like how I deploy changes and how I do redundancy/failover.
One of the main findings of the SO survey was that Python is indeed rising, overtaking other languages as one of the most popular and desired, so although it was popular in the past, it's definitely rising.
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?
It's degrees. Sure Ruby has those things too, but Python's is better/more comprehensive.
Go look at the releases up from 3.4 of Python. The features that have been added since then are pretty specifically what the community has been asking for. asyncio being integrated into the language, type hinting, f strings, just to name a few.
But yeah, it's not about "does it check the box" at this point with language like Python and Ruby, it's about how they check the box, and to what degree. Simply having a feature isn't enough.
It's really sad that those smart people can name a programming language as 'Go' and I get confused whether you've started talking about it or was just a verb...
I think Python is trending up because it’s a general purpose language that’s easy to learn.
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 does what Node.JS does, to the extend that we’re talking about building quick prototypes, not running Netflix.
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
As an outsider to both: I think a lot of it is new/shiny. ruby on rails has been popular enough for most people to have seen the mess bad coders can make. Django never got as popular (I think it is older, but it for long has been an also ran).
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.
According to the developer survey, I'm in the upper 50% in years of experience. I know I'm not old by any reasonable metric (it was mildly a joke), but relative to the industry I'm above-average in age, which is wild but true.
Not really. I would take SO survey results with a grain of salt. The respondents always skew towards the younger, less experienced crowd (68% had less than 10 years experience in this last round). It's not representative of the industry.
Maybe language does not matter that much in many cases. Modern languages have become so good that I don't find myself wrestling with them very often. When it comes to the point that I do need to fight my programming languages, well, let's just say there are way more serious stuff for me to worry about first, like system designs, algorithms, underlying platforms, ecosystems, and team dynamics. Really, language is the least concern at certain point of your career.
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.
I agree but strong typing surely helps with a decent editor linting.
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.
Correlations. Language and framework preferences are driven heavily by the environment in which those languages are used. My hypothesis is that firms which still use Rails are likely to be less responsive to their developers' demands and interests in exploring new technologies and thus "working in Rails" has an association of "working somewhere which makes me use Rails."
Python is really simple and easy to read, and macros can make it really hard to switch from code base to code base in ruby. Python is also the #1 intro teaching language in boot camps.
> "almost 70% of respondents say they are above average while less than 10% think they are below average. This is statistically unlikely with a sample of over 70,000 developers who answered this question, to put it mildly."
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.
> 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.
Indeed. I always wonder if programmers smarter than me don't go on SO as much as I do and therefore don't participate in the survey. Maybe more people are using Haskell than reported. :-P
Plus: There are so many aspects of software engineering that 70% can easily be above average (or the median) in at least one of them. It's like asking drivers if they're better or worse than average. The skill hasn't been defined with a clear metric. It's lazy to just pin this on dishonesty or hubris on the part of the respondents.
> Do Developers Need to Become Managers to Make More Money?
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.
I think this is an example of developers taking questions quite literally: You don't need to become a manager, but many (myself included) would admit that it does help.
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.
That is fair. For many of the young developers who responded to the survey, they probably have a ways to go before they start hitting compensation walls.
Another aspect is autonomy. It is routine in most companies for a low level incompetent manager to be able to waste all the time and talent of a senior engineer. So the issue is more than just money.
This also depends on the country and its work culture.
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.
> We asked respondents to evaluate their own competence, for the specific work they do and years of experience they have, and almost 70% of respondents say they are above average while less than 10% think they are below average. This is statistically unlikely with a sample of over 70,000 developers who answered this question, to put it mildly.
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.
You have a point. It's not hard to imagine that actually using SO in the first place might correlate to you being an above average developer (among all developers).
I'm a non-binary manager who was formerly a non-binary engineer. I use singular they.
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.
You should search for the term + "gender", but the long and short of it is that certain folks don't feel particularly compelled to identify as "male" OR "female" and thus identify as a non-binary (!(M|F)) gender.
Great question. It's more of a workplace concern, as I'm sure that nonbinary folks experience these issues in other workplaces. However, software development is definitely a male dominated environment and there's a lot of discussion in the industry about how we make that environment more inviting to women.
So there's a shared experience there of being a gender minority within software, but also the difference that some of our concerns are very different than women's concerns.
And software rules our world. My company lets me declare my pronouns on the internal org chart tool (yay!) but required me to select man or woman to receive health benefits (boo!). As an engineer, I can help inform system design and provide feedback on the software that gets written to handle cases like these, which makes our software better.
I expect it will take a while for insurance companies to build up risk profiles for new pronouns once those stop changing. They will want to know your biological sex and whether you are in or after transition into one of them. Depending on whatever effects social genders might have they will want to know those as well. And as a third separate item they will want to know your preferred pronouns for communication purposes.
They sure do! And trans people have different insurance risks (and presumably nonbinary people do too.) Rates of suicide, for instance, are considerably higher in trans populations.
But, in this case, my insurance company basically said, "Pick either one, and you can change it whenever you want" when I asked how I should pick as a genderfluid person. I asked if I could change it daily, they said, "Sure."
shrug I think you are right, we'll eventually settle out a couple of forms for things like pronouns/gender identity/sex characteristics/etc. But having a member of the minority who is also an engineer can help make sure we build those tools in a way that doesn't leave small integer N% of people feeling left out.
Most professional software development is about working with a local (your team/the people you directly collaborate with) and global (your stack’s ecosystem) community as much as it is about writing code, so it stands to reason that a high visibility social characteristic like gender identity might affect other aspects of the professional experience.
Case in point, demographic information like gender identity is a useful feature to contextualize or find patterns in the data — like how the blog post points out that more than half of respondents wrote their first line of code before age 16, but that this statistic varies by gender and country.
If it really doesn’t matter, it will be borne out in the statistics (i.e. the gender identity feature will give you no additional information).
Ok, this is a HIGHLY abbreviated overview that I'm sure other LGBTQ+ folks would say doesn't get it exactly right:
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.
Do you think you have a right to dictate others use of pronouns, or maybe that they're wrong to use a pronoun that matches your sex (as it appears to them, whether that's factual it counter-factual)?
I have a beard, and people always comment on it but I'd rather they not define me by it (honestly, I'm not making this up) - it's hair that grows on me, that's it - should I get to tell them they can't say I'm hairy/bearded (despite that being obviously true)?
I'll engage on this, assuming these questions were asked in good faith.
> should I get to tell them they can't say I'm hairy/bearded (despite that being obviously true)?
You can say, "I'd rather you not refer to me/define me by my beard." Do they have to respect that? Of course not.
Does not respecting that mean that they are now knowingly violating a boundary you've specifically asked them to respect? Yep. Sure does.
Does knowingly/deliberately violating someone's boundaries make you an asshole? Maybe? Probably? At the very least it's likely to make that person like you less.
> Do you think you have a right to dictate others use of pronouns?
I have the right to indicate that my pronouns are they/them, just as you can (presumably) indicate yours are he/him. When people deliberately violate that (e.g., if people started calling you 'the bearded lady' or used she to refer to you) I believe I am well within my right to feel disrespected, just as if they had used any other verbal insult. I see it in a similar light to nicknames. If my name was William, and I tell people to please call me William, and someone continually refers to me as Billy despite being asked not to, then I'm going to feel disrespected.
I get sir/he/him/his/etc all the time. When it's people I'm close to (colleagues, friends, etc.) I'll gently offer a correction and move on. e.g. "Sorry, my pronouns are they/them, please, continue." I don't bother correcting the gas station attendant or the coffee shop barista.
I generally assume most times the wrong pronouns aren't coming from a place of malice -- either someone just forgot or they don't know. I give people a lot of latitude.
I don't really have anything to add here but I just wanted to say I appreciate your tact and attitude.
Especially online, it's very easy to just assume bad faith when responding to something like that, but I think the internet would be a much better place if people were more likely to keep cool and stay civil even in the face of comments which they suspect to be in bad faith.
It seems impossible to ask questions on some subjects here (on HN, I don't really use other mass fora); which makes it very hard to learn the scope of someone's position. 'Assume good faith' has to be the basis of online discussion -- I'm really not sure what's wrong with the questions.
>"in the face of comments which they suspect to be in bad faith" //
I asked two questions and avoided making comments (other than to set the basis for the second question. People often don't appear to read questions as questions.
It's like if someone said "So, do you just not like static typing?" and the responders appear to think the person said "dynamic typing is crap and you're crap if you like it" when in fact they're just interested in someone's rationale for avoiding statically typed languages.
I go to a group where the other adults are mostly always mums or other older women. The leaders almost always refer to the group as "mums", but I just accept it assuming they're not being exclusionary -- I guess that's my choice though. Funnily one of my children has started calling me mummy, which is a little weird to me but not at all disconcerting.
As I reflect on that, I wonder; you say you feel disrespected when called by a pronoun that's contrary to your preference (presumably only if you've already requested the person address you differently), as if it's an insult. Surely it's just an element of language combined with your outer appearance. If you feel being called by the pronoun of one sex or the other (or either) to be disrespecting, that would seem to imply you feel people who are correctly identified by those terms are some how lesser? Perhaps "disrespected" is the wrong term, or my understanding of it is wrong. I guess if you call me "the bearded lady" but it's not malicious, then it's not disrespecting (for me, from my perspective; I'm not trying to tell you how to feel, obviously).
I guess I still don't really get why a strangers pronoun usage matters?
One last aside, if you could do away with gendered pronouns altogether, would that be better/worse? I guess you can't identify as neutrally pronouned if there's no gendering of pronouns?? (https://en.m.wikipedia.org/wiki/Gender_neutrality_in_genderl...).
Thanks for sharing your experience, it sounds like it's much harder than I'd think (as a cis hetero man) to be non-binary. This might be wildly off-topic, but if you wouldn't mind answering, I have a question about workplace bathroom policing. Last week I was leaving the men's bathroom at work and saw someone walking in, who very much looked to me to be a woman. I had a split second to think about if I should say something or not, and didn't say anything. About two seconds later I was walking away and saw this person leaving the bathroom quickly, so I think they were a cis woman and accidentally went into the wrong bathroom.
Was not saying anything the right move here? I imagine non-binary folks get a lot of "are you sure this is the right bathroom for you?", and I'd hate to contribute to that accidentally.
I'd say most cis folks will pretty instantly recognize when they've accidentally entered the wrong restroom and make a hasty (if somewhat embarrassed) retreat. I generally assume most people are headed to the right spot or will very, very quickly figure out when they've made a mistake.
That feeling of, "Oh shit, I don't belong here", btw, is basically what I feel using either gendered restroom. Thankfully, most tech companies try to provide some gender neutral restrooms.
As with every year, take these result with a massive pinch of salt.
The results are heavily weighted by students and young developers who are way more likely to chase the latest trends and buzzwords
The survey provides specific numbers on this, no need for the pinch of salt: 41% of respondents have fewer than 5 years of professional experience, and 68% have fewer than 10.
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.
I know they're stated, that's where I got the info from!
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.
Kudos to the Visual Studio Code team for all its success.
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.
Curious about the salaries for the top four paying technology languages. Three of the four for US are functional focused languages, and for global all four are functional focused.
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?
Scala is the language for big data. It's also used in minor roles for hardware synthesis, finance etc., but big data is where it dominates other languages. Big data pays well.
I would imagine it's partly a reflection of the classic Python paradox. Developers who'll go out of their way to learn a new language and paradigm before it's mainstream are more likely to be highly talented. Companies that are using less popular languages rather than sticking with the default are more likely to take hiring high quality engineers seriously and pay them well.
Alternative possibility (that I just made up on the spot): the people who get to choose what language to work in, ignoring the popularity of the language (and therefore how easy they are to replace) are already in very senior positions. More junior people do not get the opportunity to work in functional languages.
It's half of that. On the chart "Salary and Experience by Language", people doing functional languages have much more experience.
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.
As a solo indie developer running my own saas business for 20+ years now, and rarely interacting with other devs, this survey is priceless. I often wonder where I and my stack/tools are in relation to the rest of the field. This report (even if it is biased or skewed) makes me feel like I'm not alone and gives me some validation on my life path and technology choices.
I wouldn't put any stake in this survey as any sort of representation of the field in any way whatsoever. The people with SO accounts who even are even aware that SO is conducting a survey is so self-selecting that its in zero way any sort of representation of the industry as a whole.
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.
Is "coding as a hobby" intended to be mutually exclusive with "coding professionally"? If not, I don't think I'd be that surprised by the 80% number even if it came from a source that everyone agreed was statistically significant.
I think it’s more interesting that if I load up a job-index site or search for techs on linked in, you get a significantly different picture of what is actually “wanted”.
Maybe that’s from being Scandinavian but 90% of our jobmarket is still .Net framework (not core), JAVA and PHP.
I think the most interesting portion was the "Developer's perspectives by gender".
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.
For me: because the languages that it is supposed to replace ie the C-style curly brace Lang’s in the systems/low-level/backend niches are all pretty bad. And a lot of us have used them for a decade or three so we are very aware of what’s bad.
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.
For me, it's hard to quantify. Writing Rust feels different from any programming I've ever done in the past 12 years. It reminds me of the first time I dove into functional programming. You pay so much of the development cost up front in both time and frustration. But once it works, the guarantees you're left with provide a level of security and confidence that's unmatched in my experience. Somewhat similar to having a high quality unit test suite and strictly following TDD Kent Beck's way. The process is weird, but I love it.
I just started working through a textbook to learn Rust, coming from a heavy Typescript/Node background. It's too soon to say whether or not I'm in love but I already really like the approach to lower level programming with modern development perks like linting (RLS), package management (Cargo), simple build scripts (Cargo again). Comparing it to NPM+Node, there's a lot to like.
Rust has an elegant concept in its ownership paradigm.
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.)
I made this as a presentation to the people I worked with a couple years ago. I haven't updated it since then but I think it's still relevant today if you want some perspective on why I personally like it: https://aphistic.github.io/why-i-like-rust/
Others have answered about the performance, and it is incredibly efficient. But for me it's the community - /r/rust and discussions on here about Rust have always been pretty friendly and understanding, which hasn't been my experience with other programming language fans (looking at you, C++).
For me, it's because it combines the perfomance of a low-level langauge with convenience of high-level statically typed functionally-oriented language.
Fetishization of low-level languages by primarily Javascript developers, plus it has the same socially liberal online community that Javascript has, due to Mozilla.
Bittersweet to see how much “distracting work environment” is reported to reduce productivity, given that companies abjectly refuse to provide private & quiet workspaces despite it being unequivocally cost effective to do so even for most start-ups in dense urban centers.
I continue to find the discussion of salary disappointing though. The survey provides a good opportunity for more detailed information.
I personally find non-private settings where you can easily collaborate with other developers more productive.
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.
You occupy such an extreme minority among knowledge workers that, as a matter of default policy, your view has to be discounted in favor of privacy and quiet conditions.
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.
> However, it’s easy enough for employers to provide both private & quiet offices and separate areas for constant collaboration and ambient chatter
To clarify: this is my situation. I have an office and an open lab in which to work. Usually I eat lunch in my office but find myself working in the lab most of the day because of the perceived increased productivity
I actually found this to be the most interesting excerpt from the survey results
>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.
Odd that Perl isn't mentioned anywhere, good or bad, in these results. It's usually at least in there among the Most Dreaded. Was it not listed as an option this year?
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).
VSCode has seriously dominated these lists since its release in 2016.
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.
Regarding the most dreaded languages, 3 (C, Objective-C, Assembly) of the top 4 probably my favorites actually. I find working with and developing in C (Objective-C in iOS/macOS) and doing assembly the most fun I have had and look forward to. Maybe it's because right now I only do it for hobby.
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".
Is anyone surprised seeing Bash/shell scripting being so popular? In my experience, I have seen very few people taking Bash scripting seriously. And it is frowned upon in tech interviews.
Shell scripting just comes with the turf wrt Linux. Even just editing your `.bashrc` can technically be considered scripting. Elsewhere in the survey ~50% of devs claimed to used Linux, so it doesn't seem unreasonable.
Interesting that WordPress is the most dreaded tech every single year for the last 3+ years, yet WP "market share" is increasing every single year (it's now powering 1/3 of the web). Is it a disconnect between developers and non-developers? Is it just that developers don't like to work on "boring" tech, and working on WP is not a super-great resume builder? Curious to hear what people think.
Having built lots of WordPress sites over the years, I can give you 2 strong reasons why it continues to grow, despite being disliked by software engineers:
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.
Wordpress sites are easily done without any development work. There are many platforms providing ready to use wordpress sites, with nice themes and common needs covered. It is not targeted toward developers at all.
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).
That's really interesting to see more Latinx developers (7.3%) than East Asian developers (5.3%) as a proportion of all professional developers. It's an awesome surprise, but is there a measurement reason for this? Unfortunately, this doesn't match my experience working in tech in the Bay.
Just curious, for the salary section, could someone explain why the salary for frontend role is lower the full stack role which is then lower than the backend role?
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.
This is likely because more front end developers are younger/less experienced. While more expensive/older developers prefer backend work and are compensated more highly because of their experience.
* Frontend engineering is a newer discipline than backend engineering.
* Frontend engineering is the first thing you run into as a kid. You interact with technology through the web browser. I learned HTML 4 when I was 11 because I wanted to make web pages. It wasn't until much later that I moved to backend engineering. It's just not as visible.
I would guess in absolute terms it must be dreaded by a lot of people simply because of it's extremely large user base. Any product is bound to rub someone the wrong way.
To be honest it doesn't surprise me hugely. Whilst jQuery is hardly the best choice these days the simple fact is that such a ridiculous amount of libraries and plugins use it that it's sort of hard to avoid it.
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.
I think the questions are formulated as such: "What web framework(s) do you use?", and respondents can pick as many as they want. That would explain the popularity: It's hard for me to think of a website I've touched that doesn't use jQuery, even if only for a small part.
I'm working on a local government site at the moment. I have 5 different tabs open for reference. 5 out of 5 are importing a jQuery library. Considering it's age and integration with Bootstrap (among others), it's not that surprising.
I was a bit surprised by this as well. As a heavy ReactJS user I tend to avoid from the jQuery stuff.
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.
As a "full stack developer" with 80% or more of my work being on the backend, JQuery would be my goto choice. Keep things simple and keep most of the logic in the backend.
and also second most dreaded web framework, i wonder if it's because 95% javascript questions have a jquery solution and it's hard to find vanilla js one
It has a reputation for spaghetti code. Just as it's the simplest to reach for, it's the simplest to hack something together with, with no thought to overall structure.
1. I don't quite understand why people love Rust. I have nothing against it but I just don't quite get why the love. I viewed it as Modern C++ with Memory Management done right from Engineering perspective and elegant syntax with package management done right from the beginning. And may be just my circle or reading list, many Rubyist jumped to Rust, and more often after trying a few times and clicked, they felt in love with it.
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.
> I viewed it as Modern C++ with Memory Management done right from Engineering perspective and elegant syntax with package management done right from the beginning
> 8. Am I correct to assume those Salaries exclude any Stock grant? Which is common in US?
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).
"Men are more likely to say that being tasked with non-development work is a problem for them, while gender minority respondents are more likely to say that toxic work environments are a problem."
Interesting. Isn't the former a subset of the latter?
non-development work is a subset of toxic work environments?
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.
To add onto your comment - I'd also consider a work environment that automatically assigns the documentation, test-writing, etc. to a gender minority (or other minority) to be toxic.
No. Software development for any non-trivial project requires more than just slapping a few requirements down on paper and then flinging code into an editor.
The competence vs years graph is interesting to me because over time things converge, but women and non-binary folks are significantly less confident in the early/mid career.
Not only are there issues of subjectivity, such as DK effect, the survey itself also has selection bias, so there is no average ground-truth to compare against.
Not necessarily. Women on average reported less experience than men. This would mean we would expect the opposite self-ratings if the Dunning-Kruger effect was at play.
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.