Btw surprised to see "contributing to OSS" at ~50%. Looks like an incredibly high number (cit. Trump), so would be awesome to see this question more fine grained next time. This may be an indirect measure of all the work that goes into OSS to make it sustainable.
I would like to see: kind of contribution (Opening issues, PR, managing a project, ...) and average hours spent per week.
For those of us using it for many years now, it’s not surprising at all. Thanks antirez!
> I would like to see: kind of contribution (Opening issues, PR, managing a project, ...) and average hours spent per week.
StackOverflow could infer quite a bit of this by cross referencing the demographics from their survey results (assuming it’s not stored anonymized) with public profile information from GitHub.
It wouldn’t reflect the whole picture but, for a lot of major projects that are hosted there, one could see the engagement vs usage ratios.
And I kind of think the above ballpark is where a lot of developers are.
Not every OSS project is massive and mature, like Linux or Firefox. I use a fair bit of OSS tools and libraries in my job and not all of them are highly polished. So when I run into an issue, I'll file a bug and usually supply a fix if I can.
Given the sheer volume of OSS out there and the ease with which one can make contributions, 50% seems surprisingly low to me. My best guess is that some developers are afraid to contribute.
And I completely agree about the OSS - this makes me really question the sampling bias of this whole survey, because there's no way so many developers contribute to OSS. Unless you really do mean something like "reporting issues", etc, in which case i'd still guess the real number was below 10%.
That will lead to some really weird results when viewed in aggergate.
Certainly, a front-end developer has a choice of compile-to-JS languages from which they can choose.
It does not surprise me that it is 40% (and #1) amongst sysadmin/devops practitioners.
I don't care how you feel about nano, I use it less than .0000000000001% of my development time and it serves its purpose just fine.
80000(.0000000000001/100)60*60 = 2.88e-7 seconds spent in nano in your lifetime
[ I know it's an exaggeration :^) ]
To get a good vi v emacs question you’d want to ask “what is your primary text editing environment?” Or something like that.
I'm in the system files / remote box camp regarding vim, tho.
Emacs I gave a try for a month, and I still felt like a beginner. There isn't a single core idea that you can master; it feels like it's a never ending series of chords that you have to remember for every plugin and lisp code that you have to write to configure and personalize everything for yourself. And pre-configured distributions like Spacemacs feel even more complex. Evil mode behaves like vim 95% of the time, but 5% leaves you buffled and completely, utterly lost.
Sometime in the future, when I have enough time on my hands, I will build myself an emacs build from scratch, learning every plugin as I go along. Right after I build my own linux distribution from scratch - oh wait, I already did that, and it took less time and mental space than Emacs.
I prefer Emacs to Vim, but I prefer Idea for Java development over either, so since I mostly work on java projects on Linux servers, I actually use Vim significantly more than Emacs.
Anything else can quite easily be added via more plugins or by using a terminal multiplexer like tmux or screen (or a more complicated terminal like terminator, iTerm2, etc
I use vim/tmux exclusively for my development, and while I don't use Java, I don't feel that I'm missing features that my coworkers running atom/vscode/etc have. I will admit that stepping through a debugger might be a bit harder, but I seem to find a few debugger plugins around, so I'm guessing someone has solved that.
Vim and Emacs are editors for languages where you do more thinking and less writing.
VSCode does a pretty good job implementing the vim engine, IMHO. They integrate neovim directly . The plugin has almost 2 million downloads, btw.
I think the future of vim is not "vim the editor", I think it's "vim the engine".
I guess this is also the reason why Vim is so much higher than Emacs in the stackoverflow survey.
I think huge disservice has been done to Emacs to use it as an email browsing or as an project management utility. One could use Elisp and do all sorts of curious stuff inside the software development workflow itself.
But if you are using it for editing and for that purpose only, I can absolutely see why vim would be winning. Its just the best lightweight line editor out there.
Day to day coding ... VS Code. Used to be Emacs, but I switched.
Oh and Vim is still the only editor I dare use to open a 1GB CSV file with.
vim isn’t actually even so good at this. It still needs to read the whole file into memory. Yes, it doesn’t need to syntax-highlight the whole file, but it does still need to keep it in memory.
Other editors work by just loading enough of a big file to keep the illusion up that they have loaded all of it, when they are in fact dynamically loading and unloading parts as the user navigates within the file.
I think sublime works like that, though it still does something that requires load time proportional to the file length.
Many hex editors also do this, probably out of necessity because they are often used to inspect huge binary files (like disk images), though thanks to never having to do line wrapping, they also have it much easier to do so.
There are actually editors which are disk-based instead of memory-based. The only one I can think of, though, is UltraEdit.
The learning curve is anything but smooth for Emacs. For Vim, it's much easier (note I said VIM, I'm not wasting my time with pre-direction keys typing methods)
I've seen developers even people with 10+ experience repeat several manual things in case of general software development workflow. Every developer must know how to automate things like this.
In fact everything apart from the thinking part should be automated in most cases.
A lot of my automation is done in Bash, some in Python and other languages, not necessarily in the editor
This kind of surprised me. On the one hand, we complain about being considered code monkeys and mere "implementors," but on the other hand, if we're asked to code something unethical, well "we're just following orders." I personally think we, as a profession, need to kind of grow a backbone and step up our responsibility to no do harm. Ask doctors this survey question and see the wildly different results.
Being a doctor or developer is entirely different. The doctor has much more freedom in deciding a course of action. As a developer you have very little power to decide what get's produced, because it's not your job function: that's what product managers are for.
79.6% said they consider the ethical implications of what they are asked to do.
82.3% said they would report ethical concerns in some form.
58.5% said they would refuse to write code they thought was not ethical (36.6% said they are unsure).
Not possible in most companies where your career depends being a yes man to the management. You would be surprised how often doing the right thing gets people fired. Of course you could say 'grow spine' or whatever. But you can't suffer for ever in a ecosystem where everything is stacked against you.
At some point in putting food on the table takes precedence.
But for serious development, I don't think I'll be dropping Webstorm or Rider for it any time soon though.
I do my personal statistics for colleagues I’ve met and the percentage having no degree or degree in another field is around 7 out of 10.
Maybe that’s because I primarily work for startups and do my survey in the startup culture, but still it’s fascinating how much of those developers took the decision to become one at around high school age.
But still, I'd say the percentage of career changers is much higher than in most other fields.
You also have to consider this isn't an scientific survey, just a fun parlor game.
startups are only a teeny weeny blip on the scale of "code" companies. Mastodonts such as IBM, Atos, CapGemini, Sopra and a few other are alone more than multiple hundred thousand employees.
People tend to put in the most relevant one anyway when given the exclusive choice.
But I've worked mainly in companies building quite technical products.
As a Rails developer, it's sad the number for Rails is far behind Django. This might make some confusion for people who are deciding which
MVP framework to use.
I'm surprised that Elixir was the 6th most loved language last year and disappeared this time, while Erlang gained some points. Was it even in the survey?
Also it's interesting that women placed compensation at 4th in "Differences in Assessing Jobs by Gender", but if you point that fact as a contributing factor for the pay gap you can be labeled as sexist.
You'd have to take those data points in isolation and conclude "men like money more than women" to earn that label.
I don't think anyone is surprised to see evidence that an exclusive workplace culture contributes to the pay gap. I'd posit that all else being equal, women value compensation and culture about the same as men. The priorities reflected in the survey are a symptom of the problem, not the cause.
> The tech industry is struggling overall with issues around diversity, and individual developers are not making it a priority when looking for a job.
So perhaps it's not the "tech industry" that's struggling, it's some vocal minority that would like to convince you it does.
That question is not "how satisfied are you with the state of each of these things now", it's "how much do you weight these categories when assessing new jobs". The fact that women don't put diversity at the top doesn't mean that they think that the state of diversity is good. It means that it's not a highly ranks job-selection criteria.
What people are prioritizing in a job hunt is what they're not getting in their current job. Women put "The office environment or company culture" first, men put it fourth. Why? Because women leave jobs because they get treated poorly. Men leave jobs because they think someone else will pay them more.
For most people, the priority is not in making sure their company looks like a college brochure, it's in finding a place where people will treat them with dignity.
What a stereotyping generalization.
Also, underpaying is a (fairly common) form of poor treatment.
My wife works at a tech organization that is (unsurprisingly) mostly men. The data here seem to align quite well with what she has told me several times. Namely, she doesn't much care about diversity at the workplace since she feels the organization's values and culture result in her being respected and able to be a valuable member of the team regardless of who she is working with.
When she is able to work with other women in the organization, she does find that refreshing. So I think she would like to see more women among the team, but it's not something she thinks about much, putting it below other more important matters.
How can you be labeled sexist if you point out a simple fact?
This is the "simple" fact:
> Women placed compensation at 4th in "Differences in Assessing Jobs by Gender" in a StackOverflow survey targeted at people (mostly developers) who use stackoverflow
This is the additional fact that has been added:
> [that fact is] a contributing factor for the pay gap
And then the phrase
> you can be labeled as sexist
is added, which of course can be applied to anything anyone ever says about anything gender related.
If you deliberately add unsubstantiated information to a fact you will probably be called out for it, and rightly so (IMO).
So while the fact itself may be true, the causation could be different from the implied causation by the presenter. For example I'm sure you noticed that women skew younger on this survey. If people are earlier in their career perhaps experience and culture matter more than pay. People later in their careers have families to worry about, so they want more pay and care less about culture and languages.
I'm not saying I'm correct in this assessment, but what I'm getting at is there needs to be greater context around "facts" beyond the first thing that pops into your mind. Facts can be twisted in many ways to hurt people, be more critical of the things people say on the internet.
So the survey data may be a hint that it's not entirely a myth.
My personal experience would be that developers are bad at (or hate) negotiating salaries anyway :)
Adjusting for your argument the answers are as follows:
19.0% The compensation and benefits offered
17.6% The languages, frameworks, and other technologies I'd be working with
15.7% Opportunities for professional development
16.8%. Opportunities for professional development
16.4% The languages, frameworks, and other technologies I'd be working with
14.1%. The compensation and benefits offered
Unless you want to argue that women should knowingly accept positions where they will be discriminated against, the effect of sexism is that the viable job pool for women is smaller for reasons outside their control.
Perhaps the women that responded would rather get paid less than work in a bro culture because they find it unbearable, not because they don't value being compensated well.
One exception is when higher salary is because of "moral values and ethics" trade-offs. And I would be very careful before I would imply that men are more likely to do that trade-off.
Wait its written in coffescript...fuck you.
That's a replay of a real life experience that went down when I first heard of Atom.
Things have changed in the past few years. I would now put Apache Groovy in a different tier than those other two. Kotlin's rise has been at Groovy's (as well as Java's) expense. So nowadays I would rank JVM language adoption as these tiers:
2. Kotlin, Scala
3. Clojure, Groovy
4. others, e.g. JRuby, Ceylon
This shows how much power opinions have.
It’s a start.
(Also, this survey never claimed to be measuring either of those metrics...)
The Rust code is not only mission critical, it is literally THE defining factor that has won us several very large contracts now.
I make no attempt to compare Rust to other alternatives in its class, we chose it because we were developing primarily with Ruby/Ember at the time and it felt like a natural fit.
Or how little power developer opinions have.
Then again, -managing developers is like herding cats I heard so I wouldn't be surprised if there are a lot of small Rust projects hidden in the undergrowth.
Also, software developers are much more highly regarded by young people now than ever before. There's this image of the young, rich entrepreneur creating products that everyone loves, and people want to be this. So a lot more smart people get into the industry because it's the cool place to be, hence the rise of "brogrammers."
Students and younger devs need to ask more questions, so they have a more active presence. While an older dev may still need to ask questions, they can just google, and find the answer without needing to create an account.
I'd be willing to bet that people that answer surveys about this are generally more involved in other areas online like OSS.
Plus, calling bug submissions as open source contribution is a stretch. You would not call "contributing to close source" when someone reports a bug to a company.
18% claim to have done development work for macOS. That's more than for iOS, which is neck and neck with Raspberry Pi.
What's going on here? Have web devs simply checked all platform boxes?
Do Developers Have an Obligation to Consider the Ethical Implications of Their Code? 79.6% voted "Yes"
(Completely unrelated but the first thing that came to mind: https://www.youtube.com/watch?v=GKdgDX2dGh0)
As a native iOS dev I write my own wrappers for web applications, I think Cordova is too just too much hassle for what it really does and only limits my possibilities as a native developer hosting a web application.
You're starting to see the same thing with other cross platform tools like React Native with managing upgrades and out of date plugins that rely on now-deprecated APIs. It's a hard problem if you're not willing to go in and learn how to manage each platform. Cordova is a victim of its own success when it comes to these surveys.
On a side note, I've been using it at work and I'm actually quite liking it myself
Also because anyone jumping into the Docker/Kubernetes train eventually has to deal with Go.
I am both a C# and F# developer, and in my experience functional code (F#, OCaml etc) tends to be 5 times less buggy than an imperative equivalent. F# compiler does an impressive job of catching errors at compile time: this is the primary reason for better outcomes. The second significant contributing factor: functional code tends to have less side effects, and thus developers can reason about such code more realistically.
A third contributing factor is lazy computations. Which leads to (surprise, surprise) better overall performance at runtime.
Less bugs + Better performance = Higher salary
Though I don't say F# is perfect. It has its quirks and there is a lot of room for future improvements.
Real-World Functional Programming With examples in F# and C# is another good one
The NoStarch Book of F# is a pretty decent beginner's book
Would second the vote for F# Deep Dives as well.
Multiple places I've worked, and many places I've heard about from my peers, require employees to participate (either as a "this is just mandatory" requirement or as a "this influences a milestone on your performance review" requirement) in company-sponsored or external hackathons.
This trend is somewhat distressing and deserves to be highlighted, I think.
Your average web product Java developer is all middleware. They write code that gels between internal services and output to the user environment. At most large web companies real back-end teams are heavily isolated and don't let the middleware people come anywhere close to them even if they are all writing in the same language. If your web-product Java developer needs data they call to a service managed by an unrelated team.
Thanks they hadn't put a Silverlight instead of .NET. StackOverlow makes this mistake third year in a row. It is not .NET Core, it is .NET.
.NET Core is just yet another implementation of .NET runtime.
You can be interested in .NET Core but not in .NET in general if you're looking for cross-platform applications, for example.
Having used .NET for almost a decade, I think I selected .NET Core for a couple options since I hadn't been able to learn about the differences. And there's pretty significant differences, especially tooling support (like the inability to really do database-first as easily as you can with .NET).
So, I think it's fine.
I get that a lot of people want more diversity in Tech, but honestly it's just not something most girls are interested in.
If you saw the following gender ratios for pre-shcool teachers: 92.7% Female, 6.8% Male, 0.9% Non-binary, 0.7% Transgender
Would you be surprised? Would you think more men need help "getting into the industry" since they are underrepresented? Or would you think that most guys just don't want to do that for a job/career?
> Race and Ethnicity
> Sexual Orientation
Could we agree that :
1/ a coder is a coder, no matter his color, his sexual orientation, his whatever
2/ the notion of "race" is problematic at best
And before I get down voted : who cares about a statistic about sexual orientation or ethnicity in a survey about IT ? I mean honestly.
People trying to make the IT industry accessible to all regardless of sexual orientation or ethnicity, who want to check in on how we're doing at that?
Certainly, if you remember that minorities are reporting harassment in tech companies as a reason they leave, the demographic under representation of these must at least partially encode the scale of the problem.
Redshift is incredibly powerful, but can be a pain to work with if you're a data engineer. To get the most out of it, you need to turn a lot of knobs - and knowing how to tune it is really complex. But if you get it right - it blows everything else out of the water. Including Snowflake and BigQuery.
The key to success is using Redshift's Workload Management, and using best practices for your schema, table and query design. Many people who start using Redshift come from a mySQL world and are not familiar with a columnar storage db. Sort / dist keys are not concepts that people are necessarily familiar with.
This is just one example of a strange anomaly in the data.
Also you can see that the race/ethnicity question only has ~55k responses out of 100k respondents in general.
To many of us it feels like a very US-specific question that we are glad to skip. Racial identity is just not part of our lives. I might identify as as European, but certainly not as 'White or of European descent'
Over 45% of men prioritized one of the above three, whereas a mere 6.5% prioritized "How widely used or impactful the product or service I'd be working on is." Revealingly, "How much impact I could have by working there" isn't even an option. Sounds like the survey authors didn't even consider that people might actively care about improving the world.
So many developers have comfort to spare! Maybe spend a little bit more optimization power on trying to accomplish something important?
Compensation isn't a comfort -- it's more like payment which is necessary. Not really something a developer could forgo.
Regarding languages -- why would they not want to leverage their knowledge to get more compensation?
Sure it is. If you can "be fine" with $X, but are looking for a job that pays $Y (where $Y>$X), then that's seeking comfort.
You are happy doing something because of its impact, but to expect everybody else to seems very presumptive.
Edit: just noticed who you are ha ha