Stack Overflow Reveals Results From 'Largest Developer Survey Ever Conducted' (stackoverflow.com) 139
More than 64,000 developers from 213 countries participated in this year's annual survey by Stack Overflow -- the largest number ever -- giving a glimpse into the collective psyche of programmers around the world. An anonymous reader quotes their announcement:
A majority of developers -- 56.5% -- said they were underpaid. Developers who work in government and non-profits feel the most underpaid, while those who work in finance feel the most overpaid... While only 13.1% of developers are actively looking for a job, 75.2% of developers are interested in hearing about new job opportunities...
When asked what they valued most when considering a new job, 53.3% of respondents said remote options were a top priority. 65% of developers reported working remotely at least one day a month, and 11.1% say they're full-time remote or almost all the time. Also, the highest job satisfaction ratings came from developers who work remotely full-time.
62.5% of the respondents reported using JavaScript, while 51.2% reported SQL, with 39.7% using Java and 34.1% using C# -- but for the #5 slot, "the use of Python [32.0%] overtook PHP [28.1%] for the first time in five years." Yet as far as which languages developers wanted to continue using, "For the second year in a row, Rust was the most loved programming language... Swift, last year's second most popular language, ranked as fourth. For the second year in a row, Visual Basic (for 2017, Visual Basic 6, specifically) ranked as the most dreaded language; 88.3% of developers currently using Visual Basic said they did not want to continue using it."
When asked what they valued most when considering a new job, 53.3% of respondents said remote options were a top priority. 65% of developers reported working remotely at least one day a month, and 11.1% say they're full-time remote or almost all the time. Also, the highest job satisfaction ratings came from developers who work remotely full-time.
62.5% of the respondents reported using JavaScript, while 51.2% reported SQL, with 39.7% using Java and 34.1% using C# -- but for the #5 slot, "the use of Python [32.0%] overtook PHP [28.1%] for the first time in five years." Yet as far as which languages developers wanted to continue using, "For the second year in a row, Rust was the most loved programming language... Swift, last year's second most popular language, ranked as fourth. For the second year in a row, Visual Basic (for 2017, Visual Basic 6, specifically) ranked as the most dreaded language; 88.3% of developers currently using Visual Basic said they did not want to continue using it."
Using Javascript (Score:5, Interesting)
(If anyone wants to know why, I will pick one feature out of many. Say you wrote a large program in Javascript, which is happening more often these days. Then you want to refactor by renaming a variable. In Java or C or C# you can refactor by using an IDE automatically, and if somehow you miss an instance, it will be caught at compile time. In Perl or Objective C or Smalltalk, it will caught at runtime in the worst case. But in Javascript, it might not be caught even at runtime, and instead will just cause strange behavior).
Re: (Score:2)
I have never written a web app in BASIC. Is there a good example to look at ?
This survey is mis-labeled. The title should be "largest web developer survey".
Re:Using Javascript (Score:5, Insightful)
Javascript variables are the way they are so that you can use them on the fly without having to pre-declare each and every variable along with it's type which is a god send not a problem.
If you think that's not a problem, you're the problem. :-)
Re: (Score:3, Interesting)
Re:Using Javascript (Score:4, Insightful)
Let me turn that around for you - if it's so important, why did MS wait until c# 4.0? Hint - it's not.
Also, maybe we need a bit more rigour, because too much crap that's released is still obviously in the proptotyping stage. "We'll fix it after release" is bs. Used to be that the cost of distributing bug fixes was entirely on the vendor (duplication and mailing of media) so there was a lot more incentive to get it right the first time.
Re: (Score:3)
For example prototyping often goes much more quickly with languages that feature dynamic types
I don't think that's true, but I'm open to data that proves otherwise. Prototyping goes quickly in languages that have good libraries (if I want to prototype a new kind of web server, for example, I might try Golang, because it has good libraries for that kind of thing).
Re: (Score:2)
On the other hand, if declared variable types are so nonessential, why did Microsoft invent TypeScript, complete with proper support for refactoring in Visual Studio?
Re: (Score:3)
In Haskell and Erlang you can also use variables on the fly without declaring them, and yet they don't allow one to just refer to a non existent variable and have its value automatically replaced with null or empty or undefined or whatever they call it in js land.
Re: (Score:3)
From painful experience: declaring variables on the fly is wonderful to start out when adding features to small projects. It _does_ come back to bite you, hard, when something conflicts when two developers add the same variable in conflicting fashion.
Re: (Score:2)
In Erlang this is impossible, In Haskell code is supposed to be small enough so that it doesn't happen.
Re: (Score:2)
The risk of "have its value automatically replaced with null or empty or undefined" for on-the-fly variables may be addressed in Erlang. Are you saying that Erlang avoids the risk of _overwriting_ desired data with a separate write to the variable with the same name by a different procedure added by a different developer? Unless all functions are local, or all scoping is local, then I find that quite difficult to believe. It's also quite expensive in system resources when function calls occur.
Re: (Score:2)
In erlang all scoping is local and single assignment. There are special APIs to access global variables and they are very limited. If you try access a local that was not assigned yet, you will get a compilation error. If you try to do it with a global, it depends on the function you are using if i remember correctly, either an exception or null.
Re: (Score:2)
Forgot to say this, but the globals in erlang, unlike the locals, are mutable.
Re: (Score:3)
When you say refactor do you mean variable scope? Javascript variables are the way they are so that you can use them on the fly without having to pre-declare each and every variable along with it's type which is a god send not a problem. You perhaps just need to get a better handle on how the scope works, that isn't really a language problem, that's a logic problem with your mind.
No, when I say refactor, I mean refactor. I can't imagine the state of mind that would even cause such a confusion. The point is, there might not be any errors, because the usage might be entirely legal
Re: (Score:1)
Re: (Score:2)
...nobody, including yourself, has any idea what you mean when you use the term.
Nonsense, I understood him perfectly. He said "refactor" and he meant "code thrash."
And he's partially right; if you're engaging in code thrash, and think it is called refactoring, then you'll benefit from a language with more hand-holding.
Re: Using Javascript (Score:2)
LMAO. I shudder to think how awful your code must be.
Most compilers are free (Score:1)
Most compilers are free if you don't use Microsoft stuff.
And even MSFT gives away a version of their compiler - think it included application tracking, but that is to be expected from them these days.
I haven't needed to pay for development tools since around 1997. IDEs are for noobs. My entire OS is an IDE.
Perl, python, ruby, C, C++, FORTRAN, Ada, Rust, Pascal, Go, Erlang, lisp are all free. Out of 500+ different languages, only about 30 have paid compilers that people actually use.
OTOH, you couldn't pa
Re: (Score:1)
Re: (Score:2)
If anyone thought, even for a moment, that this person was not serious and not a moron, there is your proof that he is one, the other, or both.
Re:Take the survey with a gain of salt (Score:5, Insightful)
Yeah, statically typed languages look overwhelming/verbose and take more time to type and plan out
That nasty "planning" - there's no time for it in today's culture, where everything is just thrown together after a few "planning sessions" that are basically verbal diarrhea pushed by "big vision" marketing and bosses who may have had a clue in the past, but don't any more and are flailing about to find some project to justify their jobs, same as almost everyone else chasing the big-money exit strategy dream instead of doing the hard stuff like, you know, planning.
The whole "vision thing" has turned software into the cesspool it is today.
Re: (Score:2)
Re: (Score:2)
Re: (Score:2)
Geez, would you guys just get a room!
Re: (Score:1)
Re: (Score:2)
Well, if you discover the answer to that for Tom "Barbara" Hudson, let us know. :)
Re: Take the survey with a gain of salt (Score:2)
That just sounds like bad teaching. It's not as though packages and classes in Java are hard to explain.
Re: (Score:2)
That is more of a tooling problem, not so much of a language problem
No, tools cannot be made to fix this problem. For example, say I decide to refactor the variable 'message' to be ' outMessage'. Then in one of my code files, I have this line of code, which I fail to refactor:
obj.message = "I <3 Javascript";
That is perfectly legal, and if I miss a usage of the variable later in the same function, it's impossible to detect without understanding the intent of the code, which no tooling can do. It just gets really tough to write large programs in Javascript.
Of cours
Re:Using Javascript (Score:5, Insightful)
Plenty of IDEs can already handle this without much of a problem, and as I said, Google closure already does static code analysis which will probably catch any "bad" refactoring you've done.
It's not clear you've understood the problem. The bug is syntactically and semantically correct, so static analysis will not detect it. It's only manifests itself as a behavioral problem. Please try to say something that indicates you understand the issue (if you choose to again reply).
Re: (Score:2)
obj.message = "I <3 Javascript";
My condolences. Personally I loathe code that messes with variables in far-away objects, if it's a huge program you should call obj.setMessage( "I <3 Javascript" ); I don't know how much time I've wasted trying to track down WTF just did something compared to just setting a breakpoint on or printing a debug line in "setMessage()" to see what's happening from where. Yes, setters and getters are annoying copy-pasta code but it's a wonder for sanity. Same with stored procedures and databases, if something i
Re: (Score:2)
Re: (Score:2)
Of course, you can use Typescript as another commenter pointed out, but then you're not using Javascript anymore, you're using Typescript.
Not strictly true, since TypeScript is a superset of JavaScript. Unmodified JavaScript code is still perfectly legal TypeScript.
Similarly, other people have advocated using strict coding discipline as a way of writing better JavaScript. Sure you can do certain things in JavaScript, but you just don't ever do those things, including ignoring entire language features completely. This alone wouldn't solve your refactoring problem, though.
Re: (Score:2)
Similarly, other people have advocated using strict coding discipline as a way of writing better JavaScript. Sure you can do certain things in JavaScript, but you just don't ever do those things, including ignoring entire language features completely.
That's true but important libraries (like D3, for example) use that sort of idiom standard. So unless you're just going to rewrite all your own libraries (which actually isn't entirely unreasonable), you're going to run into that kind of problem.
Re: (Score:3)
Why don't you just "use strict" for all your code, then?
https://www.w3schools.com/js/j... [w3schools.com]
Re: (Score:2)
Re: (Score:2)
Re: (Score:2)
In this case, you can in principle get some of the benefits of both worlds,
There is an alternative principle to consider: it could actually give you the worst of both worlds.
Re: (Score:2)
JavaScript is just an umbrella term for people using TypeScript and/or CoffeeScript or other stuff that gets compiled down do JavaScript.
As a 'concept' JavaScript is nit that bad, but the type conversation rules and the possibility to use undeclared variables is a nightmare.
Think of the maintainers... (Score:2)
The people building massive systems in Javascript may not mind it too much, but I sure hope I never end up having to maintain one of these massive Javascript systems. We all know it's difficult to come back later and extend a system, even if you were the one who originally built it. Javascript makes that problem 10x worse. Refactoring Javascript consists of running Find across the entire source and slowly going through the long list of results to see what needs to be changed. Hopefully all the developer
Re: (Score:2)
Easy solution: Use TypeScript
Re: (Score:2)
Re: (Score:2)
The original code you wrote will live on, forcing companies to offer 5$ discounts to anyone willing to install flash so that your old code could continue to run. Other companies will keep using WinXP64 so that they don't have to refactor the old code.
Re: (Score:2)
Found the problem with your otherwise quite amusing science-fiction story. No companies ever used WinXP64.
Re: (Score:1)
Re: (Score:2)
Re: (Score:2)
Re: (Score:2)
Everyone is underpaid. (Score:2)
Oh, you hate your job? Why didn't you say so? There's a support group for that. It's called everybody, and they meet at the bar.
Also what is a 'developer'? I have a Mechanical Engineering degree and don't Identify with 90% of the stuff that comes up when Slashdot or most places discuss 'developers'. I write code for stuff like Simulink Embedded Coder [mathworks.com], Vector CANape [vector.com], dSpace boxes [dspace.com], etc.
Am I a developer? An engineer?
Re: (Score:2)
Better watch it. All those stack overflow knobs are going to hate you. The whole thing stinks of selection bias:
About Stack Overflow
Stack Overflow is the largest, most trusted online community for developers to learn, share their knowledge,and level up their careers.
"I'm going to post on stack overflow and level up my career" said no real developer ever.
Re:Everyone is underpaid. (Score:4, Insightful)
Yeah, I've never talked about it in those terms, but we all know bullshit marketing-speak when we see it. On the other hand, I've often said "thank God for Stack Overflow" after finding a quick and informative answer to a technical question I had.
It's an incredibly valuable resource. I often find it useful when I'm first digging into a new language or technology. Nearly every basic or even advanced question I tend to ask has been asked and answered already, and I can just reap the benefits.
But the *real* payoff, in my opinion, is when you find answers to incredibly obscure issues for which you might have to work days or even *weeks* to figure out, and some kind soul who has already gone through that pain shares knowledge for the good of everyone else, even though doing so is even more work for them.
Re: (Score:3, Interesting)
Of course this then raises the question of what's in it for the people who are actually answering the questions?
I can't speak for anyone but me, but I answer questions on Stack Overflow because I find that effectively communicating how something works requires organizing your thoughts in a way that is of benefit to my own work later, and as I get more seniority also helpful in my ability to explain concepts and ideas to others in my workplace.
In that regard, contributing to Stack Overflow does help me "leve
Re: (Score:2)
I would be willing to post solutions/answers on StackOverflow,
If StackOverflow would generate revenue for me based on people viewing or using my solution.
Re: (Score:2)
I think we would all be OK with that as long as we could all get paid when you offer a "solution" that is stupid and/or wrong. I know I could use the significant income such an agreement term would generate!
Re: (Score:1)
Re: (Score:2)
Re: (Score:2)
I get job offers via my Stackoverflow profile. So I'm quite certain HR does know what stackoverflow.com is.
However it is quite astonishing that the job offers usually have nothing to do with my expertise on SO, last job offer was regarding GWT, I was hailed as an expert. I doubt I answered more than 3 GWT related questions.
Re: (Score:2)
Re: (Score:2)
I guess they even pay for it ;)
Re: (Score:1)
I am a coder. I am a software developer. I am a Software Engineer. What is the difference? For any system that involves a non-trivial amount of complexity or is not lacking importance competent people design before they code. They document their des
Re: (Score:2)
For any system that involves a non-trivial amount of complexity or is not lacking importance competent people design before they code. They document their design. 90% of system development is design.
Well, that's because I wouldn't say I "write" Simulink models, but vernacular aside that's exactly how most modeling work is done.
Now we get to get into the 'no true scottsmen' question of if Simulink modeling is coding.
Re: (Score:2)
we can all agree Simulink is not a programming language.
Why? Based on the GP we go through at much, if not more, design before we make our control systems.
Every paradigm of programming that goes into written code goes into Simulink modeling.
Re: (Score:2)
You are probably both, engineer as academic title and job title, developer as job title. What is your problem?
Re: (Score:1)
Popular vs. loved (Score:2, Funny)
Rust was the most loved programming language
And yet the use of Rust is down in the noise, didn't even make the chart. Apparently the one guy who's using it really likes it.
Re: (Score:2)
The two points may not be related.
One can love a programming language while not being able to use it for it's current task. e.g. I really like Java* but I need to program assembly on this obscure microcontroller.
*I don't.
Go Forth and multiply (Score:2)
What about Forth? I hope it was fifty-fifth.
Or from the classic TDWTF (Score:3)
Or, from the classic TDWTF: MUMPS [thedailywtf.com].
No, Visual Basic has nothing on such "brilliant" languages, in fact it is much more pleasant than many other languages as well - e.g. COBOL.
Re: (Score:3)
If I had to chose between VB and COBOL, my choice most certainly would not be VB.
COBOL might be verbose, nut it is a fine programming language/paradigm.
I guess you never used it and have not much clue what magic you can do with PIC().
Real developer survey (Score:3)
I'll believe the results of a developer survey when all they release is the specs for a web API to vote, and you have to manually do the REST call to submit.
Re: (Score:2)
That's too low a bar to entry. It needs to be a socket that hangs off an IPv6 address that specifies its endianness at connection time and requires your connection to handle obscure return values from socket commands. The server may also, depending on its mood, request the client to speak EBDIC or request that it negotiates microsecond time synchronization before accepting any answers.
213 countires... (Score:1)
Funny that the United Nations recognises 193 countries but this survey includes 213.
http://www.infoplease.com/ipa/A0001295.html
Closed (Score:1)
This issues has been closed because somebody asked the same question.
To summarize (Score:5, Insightful)
To summarize, a bunch of dime-a-dozen web guys, who rely on stack overflow for every other line of code, have declared that they are underpaid. And, they would prefer to work at home so that if someone asks them a hard question, they can ask it on stack overflow before answering.
Re: (Score:3)
It is because of douchebags like you that slashdot has gone to the gutters.
Re: (Score:2, Insightful)
No one disputes that stack overflow is an invaluable resource for a modern programmer. But, it's also a crutch. And the programmers that lean on that crutch the most seem to be the most represented in this survey.
Re: (Score:1)
That sounds like bullshit. How do you know?
Re: (Score:1)
Re: (Score:1)
No one disputes that stack overflow is an invaluable resource for a modern programmer. But, it's also a crutch.
So any kind of documentation is a crutch? Does that extend to header files?
What about intellisense? Is that a crutch too?
Geez, what about compilers? Any programmer that doesn't translate his own code into bits is just flat out lazy!
Re: (Score:2)
Re: (Score:2)