Employers Want JavaScript, But Developers Want Python, Survey Finds (infoworld.com)
An anonymous reader quotes InfoWorld:
When it comes to which programming languages are in demand by employers, JavaScript, Java, Python, C++, and C -- in that order -- came out on top in a recent developer survey. Developers, however, want to learn languages like Python, Go, and Kotlin. A survey of developers by technical recruiter HackerRank, conducted in October, found no gap between languages employers want and what developers actually know, with JavaScript barely edging out Java...
HackerRank also found gaps in JavaScript frameworks between what employers want and what developers know. The React JavaScript UI library had the biggest delta between employers and developers, with about 37 percent of employers wanting React skills but only about 19 percent of developers having them... [But] problem-solving skills are the most-sought by employers, more than language proficiency, debugging, and system design.
The survey involved 39,441 developers, and concluded that "Python ruled among all age groups," according to Application Development Trends, "except for those 55 years or older, who narrowly prefer C."
HackerRank also found gaps in JavaScript frameworks between what employers want and what developers know. The React JavaScript UI library had the biggest delta between employers and developers, with about 37 percent of employers wanting React skills but only about 19 percent of developers having them... [But] problem-solving skills are the most-sought by employers, more than language proficiency, debugging, and system design.
The survey involved 39,441 developers, and concluded that "Python ruled among all age groups," according to Application Development Trends, "except for those 55 years or older, who narrowly prefer C."
Companies want flashy pretty webpages. Developers prefer to produce something else.
I only look for jobs that use Simulink, Matlab, and embedded C/C++. But that's because I have no desire to ever be near the web front end. I know nothing professionally about TCP/IP but have CAN memorized.
Yep, my employer is starting a new project in nodejs because they want to attract "top talent" so there is a big pool of nodejs developers, over my objection that the "top talent" isn't actually in that pool in the first place (and suggested Go, as there is also a performance requirement).
Or more
But I like Basic, not C.
Guess I'm an outlier.
I would have answered the survey with the majority.
Personally I learned and started using both Python and Javascript late in my career that goes all the way back to writing assembly language on the CDC 6000 and I can't remember how many languages I used. (DIBOL anyone? APL?). As with most software engineers I read Javascript seems to be one of the most unprofessionally crafted languages ever put into wide use.
The updates to Javascript (ES5/ES6) go a long way to fixing things. However I have often wondered how much the world would be different had Python been used as the in-browser programming language rather than JS (ECMAscript) from the start.
The only problem I think Python would introduce is its dependence on white space as a syntactically significant element. That seems like a small compromise. Anyone else think this?
Rust is better than all these and should be required by law.
Haven't seen too many C jobs around these days, except maybe for embedded applications. A shame really, as that's the language I know best, but I'm having to polish up my C++ as the number of C++ job adverts is an order of magnitude or two higher.
You said "performance requirement". What widely used, dynamically typed, memory-safe language has a runtime faster than the V8 engine used in Node.js? Go is statically typed. Or does the "top talent" in this area prefer static typing?
Is your project a web application? If so, what automated process would you use to translate server-side authoritative input validation written in Go into JavaScript in order to ensure that the client-side prevalidation enforces the same rules?
I don't mind javascript as language. The problem is the DOM, CSS, cross browser incompatibilities, and all the rube goldberg machines like jquery and select2.
The russian doll that is modern web programming is a nightmare. Things like jquery remind me of script kiddies who think they are cool when they use a source filter and/or operator overloading to completely redefine a language.
The hacking that has gone into things like jquery is impressive but it should never have become the standard for production code. It should have stayed in the "that's a cool hack" category.
37 percent of employers wanting React skills but only about 19 percent of developers having them
37% of employers may need developers with React skills, but they don't need 100% of their developers to have React skills. Statistics like this are nonsense. I really doubt that 37% of all unfilled developer positions need React skills. I doubt 19% of all unfilled developer positions need React skills. The whole article is full of garbage like this.
-- All that is necessary for the triumph of evil is that good men do nothing. -- Edmund Burke
Javascript runs (usually) on the browser, while Python is server side. Not really the same purpose.
Slashdot, fix the reply notifications... You won't get away with it...
I don't have real strong opinions on languages in general, but it takes a gun to my head to get me to use Python.
And maybe, if I wasn't convinced there was actually a bullet in the chamber, maybe not even then.
Most important finding in the survey. ... Gets popcorn ... Where is everyone? ...
Guess I'm getting old.
I'd probably hack something together using Python if it was a quick and dirty job. Maybe a combination of bash, sed, PHP, awk & sed if I had the luxury of doing it properly.
Confucius say, "Find worm in apple - bad. Find half a worm - worse."
No one has programming jobs anymore since they are all outsourced. Real programmers program for fun in any language they want and make money by writing crypto currency miners.
Why is that relevant? Dynamic typing is retarded and every single popular statically typed language has implementations that are far faster than V8.
Use Haskell and GHCJS you brainlet.
Mainly because of how it uses space-based alignment as part of its syntax. What a stupid design! It's like the Makefile issues all over again!!
Now go forth and swiftly teach your employer the language she basically needs, whether it be JavaScript, Java, Python, C, or C++ and then go coding in whatever language you need to before you turn to rust.
Also fuck frameworks
Or does the "top talent" in this area prefer static typing?
Yes
Javascript has the problem that you can type obj.typo = 5 and it will run just fine, and you won't ever be notified of your typo unless there are some behavioral issues. Whereas many languages will catch that typo before you even run the code. Python, of course, has the same problem.
"First they came for the slanderers and i said nothing."
After developing software in Objective-C and Swift and before that in olden times, Java and C++, i never could get javascript.
After downloading an IDE, nothing ever seemed to work out of the box. I understand that the node framework is similar to Cocoapods but I couldn't navigate my way around getting all the libraries that I needed. There seemed to be thousands of libraries to do simple tasks. Which one do I choose? What in the heck is ES6, ES7? Why do I need to install all these libraries just so I can be backwards compatible? Why doesn't javascript have a common core set of methods/libraries that works across all browsers, then you can pick up specific components that you need to work with??? When searching out online how to do something there was 10 different ways to do depending on a multitude of factors and what you were trying to accomplish.
I couldnt even get arrays to 'work'. At least work how I think an array in any language should work. I would print out the elements and I would be shocked at the results. After a week or so I finally figured out objects weren't really objects. What??? I also found out not too long ago JS finally got the 'Constant' keyword. Huh??
I got frustrated with it and really don't want to go through that again. Perhaps someone could explain why its so frustrating.
Sometimes, it's strictly about the tech. One language is superior to another for the job being done
Other times, it's about the team. If the entire team is expert at a language, there needs to be a really, really good reason to change
Other times, it's about the tools, or the libraries
Unfortunately, some times it's driven by clueless management, who have no idea how to program but still have strong opinions
Individual programmer preference is only important for personal education or hobby projects
That's why companies want JavaScript. They have huge piles of the stuff, mountains of spaghetti code, a mishmash of frameworks and Stack Overflow copypasta.
const int one = 65536; (Silvermoon, Texture.cs)
SJW, n: "Someone I don't like, and by the way I'm a fuckwit" - AC
Seriously ... as soon as I heard of it, I knew I'd never ever code anything related to a browser platform ever again. I'd just write universal programs, and make them run on the web and on the phone via small adapters.
Because let's be frank: Today's web browsers just shitty operating systems in virtualized platforms. The whole URL retrieval architecture is about the only plus they have over normal OSes. And I said for a decade, that we should just add application firewalls around our OS's virtualization containers, have an instance with a bare-bones OS pre-loaded in memory, and provide an URL input / state manager, that clones the prepared instance (just a memcpy), loads the file from the URL, and runs it inside the clone. For legacy support, there would be a HTML OS, based on a browser. Done right, it would entirely replace browsers, but without requiring a pointless layer of inner-platform effect.
At least web applications that is. Actual web pages ... as in: Documents ... would still be in HTML and CSS... *documents*, as that makes some actual sense. Or TeX with an adapter. ;)
That is why the dynamic language ccrowd 'invented' (rediscovered, cough cough) unit tests and test driven development.
To bad they throw it on the staticc typed language crowed now as if we never had heared about compilers.
(For those who wonder: I only write integration tests and 'system tests' on the level of use cases, scenarios or stories. For real software, that means deployed applications, not 'libraries', ordinary 'unit tests' are in 90% of all cases complete pointless and a waste of time - in a compiled, strong typed language, that is)
Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
Ah, on what planet does "ESC d d" make sense to delete a line?
No one will ever convince me that any variant of vi is a good idea.
People moved from assembly mainly to dynamic typed languages like LISP and Smalltalk.
Calling dynamic typed retarded only shows how new you are to programming and how less you have grasped so far.
E.g. write a DSL in a dynamic typed language and then the same in a statical typed one. Have fun :)
Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
There's nothing particularly special about the Lisp family of languages or Smalltalk outside of history and nostalgia.
Writing DSLs in Haskell, Scala, Kotlin, Swift and most ML descendants is trivial.
The languages that are on top are on top for a reason: they are the most effective solution to the problem.
If devs who want jobs can't handle that, go back to academia.
Javascript has the problem that you can type obj.typo = 5 and it will run just fine
Perhaps I've not done enough of it, but Javascript just seems something that should just die. Both C# and Java seem to have actual careful design behind them. Yes they by default allow too much access to use in a web browser tab, but that is fixable by limiting classes allowed and such.
The biggest thing Java misses is output or reference variables, and you can toss together a mini class if you really want that. Not having them forces you to try to code not to need them, which is not the worst thing in the world. Both are strictly typed. Java even throws away the unsigned types in some quest for simplicity.
The biggest reason I mention such a somewhat radical idea, is if your trying to make all web pages more or less computer programs, then it is better off starting with an actual programming language, and not one that is being manipulated into one over time.
Security could be enhanced by web browsers supporting a common set of interfaces, then if you want to filter some crap, you can install plugins that replace the interfaces with better versions. You also control browser security by what interfaces can be downloaded. The main "application (web page tab)" likely has a limited set of Interfaces it can draw on, so as to limit what can be done maliciously. Every component could be cryptographically signed as usual. Adds would need to be sandboxed to effectively run as a component of that page, without access to state information about the page. Also a good design would probably have any content originating off the page to have at least one tier less in permissions. Most likely third party content would be limited by the browser, or at least could be, to a safe set like video, html, or audio. Just because you have a programming language available doesn't mean adds should be able to run cryptocoin miners...
At any rate, I know the idea is hopeless and we aren't going to be able to start over with something cleaner. Thankfully we will probably evolve our way there, eventually..
problem-solving skills are the most-sought by employers, more than language proficiency, debugging, and system design.
Yeah. Try getting your resume past HR if you've had 15 years of problem-solving experience in a dozen different languages but not the one their shop uses.
And: TCP/IP has no 'security' build in either, that would be on much higher levels.
Actually, IPsec (initially developed as part of the requirements for IPv6, but back ported as an option of IPv4) *is* at the "Internet Layer".
(It sits at the "IP" part of "TCP/IP", right under the "TCP" / "UDP" transport layer).
But yeah, most other the other encryption is usually happening in the application layer (HTTPS, SSH, etc.)
"Sufficiently advanced satire is indistinguishable from reality." - [Tips: 1DrYakQDKCQ6y52z6QbnkxHXAocMZJE61o ]
No competent developer would defile their mind with Python or Go.
That's what I was thinking too. To make things more confusing, people moved from assembly to FORTRAN and COBOL, not LISP.
Good people do not need laws to tell them to act responsibly, while bad people will find a way around the laws-Plato
Webassembly will make other languages possible in the front-end. But it will take 5 years or so
First of all you said dynamically typed like that is a strength, it's easier but more bug prone. Secondly, Perl. I see lots of benchmarks showing Perl near the end of the row but that is because you if you don't speak Perl you'll end up using it's flexibility to code up a bunch of array based garbage written like it's C code and include 400 spam modules to "avoid reinventing the wheel." When you load a module just to get the PID of your script when there is a built in that contains the pid... you are definitely reinventing the wheel.
I remember a sysadmin like you. I had to edit her init.d from single user mode every time she had issues because she too could not manage to use an editor that everyone needed to learn. That was the only job i ever had where I was truly just a typist. It was fun, she used to get mad when I pretended not to know the right commands, or clicked with the mouse to move the cursor and nothing happened. (this was Bill Joy's vi, not gvim!)
I've written Python (2.7) and Jython in the past for scripting out IBM WebSphere administration stuff for WebSphere Admins who were to lazy to learn how to script their stuff. Been writing my JBoss/Wildfly stuff in Python 3.4 now - I would NEVER use JavaScript on the server side - much less on the Client side. It's all a giant steaming pile of shit! Consider the whole language was written in what 10 days? Even Netscape who wanted that language couldn't implement it right in their browser. I've used Perl to write scripts for backing up Subversion (SVN) repositories. I've done DOS Batch and PowerShell - but Python kicks both of those scripting languages ASS! I've done a TON of Java and all it's associated stuff. But right now I'm really enjoying coding in Python - it's versatile, fast and clean. Jython is nice because you can have the best of two worlds - Python and Java. But JavaScript - employers that want that real bad don't know SHIT about real languages - JavaScript is NOT a real language - it's a FUCKING JOKE!
The Truth is a Virus!!!
CoffeeScript
Beautiful Python-like syntax, AND it compiles down to JavaScript.
Don't worry, the results haven't rendered in the Emacs browser yet, they'll get here.
Millions long for immortality who do not know what to do with themselves on a rainy Sunday afternoon. -- Susan Ertz
MyBalls=function(you){
you.call()
you.lick()
}
Yup, and for dynamic typing (if it doesn't grow hair on your palms), I've found perl faster than most anything else, but then I'm careful and know how scoping issues affect the invoking of its garbage collector. Most don't, but most thing perl is like selfgol from Damian Conway - which is explicitly an example of how to be bad and to "don't do it this way". Mine looks pretty clean.
Why guess when you can know? Measure!
Maybe it is time to shut up and listen to the expert you hired than some bullshit hype.
Mod parent up. It's the programmer, stupid. You can be a shite-head in any language....or write good code in *some* of them.
Why guess when you can know? Measure!
Json schema.
That's horrifying. Lol.
Yes
What widely used, dynamically typed, memory-safe language has a runtime faster than the V8 engine used in Node.js?
SBCL is pretty fast... So is LuaJIT.
Ezekiel 23:20
There's nothing particularly special about the Lisp family of languages or Smalltalk outside of history and nostalgia.
That, or the fact that you don't lose the state of a running application when you edit a single function.
Is there top talent anywhere that prefers dynamic typing?
Your ad here. Ask me how!
LISP and Smalltalk were early exemplars of functional programming and object oriented programming respectively. Dynamic typing had little to nothing to do with it.
Your ad here. Ask me how!
"(For those who wonder: I only write integration tests and 'system tests' on the level of use cases, scenarios or stories. For real software, that means deployed applications, not 'libraries', ordinary 'unit tests' are in 90% of all cases complete pointless and a waste of time - in a compiled, strong typed language, that is)"
Is your code coverage the same or better? Can be pretty hard to exercise all the code paths at such a high level.
For real software, that means deployed applications, not 'libraries', ordinary 'unit tests' are in 90% of all cases complete pointless and a waste of time - in a compiled, strong typed language, that is
Chances are that this is an observation of status quo, not of potential. Tests catch problems with logic and types, with the latter in a sense being a subset of the former. Type systems only catch problems with types. Type systems extended to handle problems with logic become non-decidable and therefore aren't used in general practice. By the way, I assume you meant strong static typing rather than merely strong typing. And I'd also remark that decent compilers of dynamically typed languages still catch many potential errors at compile time so there really isn't a reason not to have both.
Ezekiel 23:20
That's what I give about what developers want.
I do not believe in karma. "Funny"=-6. Do good and forbid evil. Yours, Oft-Offtopic Flamebaiting Troll.
in order to ensure that the client-side prevalidation enforces the same rules?
Hahaha! So funny! Did anybody else fall for your "client-side" and "[enforce] the rules" in the same sentence bit?
Or does the "top talent" in this area prefer static typing?
Yes.
My experience is that dynamically typed languages make you feel more productive but lower your productivity overall. It takes longer for a programmer to persuade a Haskell or C++ or Java compiler to accept their program. Python programmers interpret this as "satisfying the arbitrary whims of the compiler", where C++ programmers interpret this as "finding and squashing bugs before deploying".
If you don't mind deploying bugs because time-to-market is more important than software quality, that may not be a concern for you. But you won't attract "top talent" with that attitude.
sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
bash + sed + awk == Perl
sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
Based on all prior occurrences. No need to read any further.
That is why the dynamic language ccrowd 'invented' (rediscovered, cough cough) unit tests and test driven development.
Oh, no. You can thank the Extreme Programming Gurus (now known as "Agile") for this.
The system that I work on now is an API, so unit testing it is necessary. For external APIs, you absolutely need to know if any user-visible behaviour has changed.
For internal APIs, the main job of unit testing is to make refactoring sufficiently expensive that it will never happen.
sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
Really top talent doesnâ(TM)t really get bothered about dynamic or static typing.
If you are advancing the discussion for academic purpose and maximising future productivity for the industry great.... but if thatâ(TM)s what you are thinking as important on just yet another project ..... then you arenâ(TM)t top talent and is trying to hire the wrong people.
Did anybody else fall for your "client-side" and "[enforce] the rules" in the same sentence bit?
I have no idea what you're getting at. I said the authoritative validation runs on the server. I was referring to ensuring that the behavior of the pre-submission validation, which runs on the client, matches that of the authoritative validation, which runs on the server. Any mismatch causes a poor user experience, as users who want to enter data that is server-valid but not client-valid have to "hack" it in using Inspect Element.
I'm writing code in Python now. The primary purpose of unit tests is to make sure the code "compiles". You need a 100% code coverage to make sure you don't access an undefined variable.
I agree that top talent can use pretty much any environment. And that static vs. dynamic typing has never been (even close to) the most important decision point (or event a point that comes up unless you're writing a language).
I do also think that static typing is superior, and like to argue about it on the internet.
Your ad here. Ask me how!
Web programming should use easy scripting languages, to suit the large numbers of technically less skilled, whom make their own websites. Something like Python, or Visual Basic.
OK, I know C# isn't the most popular language on slashdot. But it is really popular with businesses. The fact that it's not even on the list makes me question the survey's methodology. Other surveys certainly include C#, such as http://www.codingdojo.com/blog....
I might be tempted to quote you...
You can thank the Extreme Programming Gurus (now known as "Agile") for this.
And in what programming language did those guys work at that time? Hm?
The system that I work on now is an API, so unit testing it is necessary.
Agreed.
For internal APIs, the main job of unit testing is to make refactoring sufficiently expensive that it will never happen.
You could "black box testing" only the APl and only have further unit tests for essential stuff.
Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
Oops, of course I meant strong _static_ typing.
Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
Both are dynamic typed, so what is your point?
Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
I'm not sure they did, except in niche applications & academia. But in any case it's a huge leap to say they did that because they're dynamically typed, and it's another one to say that just because a lot of people do something that means it's not retarded.
Confucius say, "Find worm in apple - bad. Find half a worm - worse."
My point is that LISP and Smalltalk weren't interesting because of (or hell, I would stay were interesting in spite of) dynamic typing. They have other other important reasons people used them. It's like claiming the reason that people like to go n cruises is the unlimited soda for their children. Sure that's a thing that some people want (and other people oppose), but it's never been close to why its interesting.
Your ad here. Ask me how!
And in what programming language did those guys work at that time?
Mostly pre-ANSI C++. Smalltalk also gets quite a bit of coverage in GoF.
sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
He actually wrote "the same rules", implying it's being done [at least] twice. Which is the case. I don't even play a web developer on TV and I know that.
Confucius say, "Find worm in apple - bad. Find half a worm - worse."
No real surprise. Employers want to pay programmers to do the same things they have done before. Programmers want to do things they haven't done yet.
You may credit me as "some random person on Slashdot".
sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
I consider myself 90th percentile (in that I think I'm better than at least the bottom 10%). :) I might or might be what you consider "top talent," but for whatever it's worth, I prefer dynamic typing when it's appropriate, and static typing when it's appropriate. A lot of times, that's dictated by a choice of tools or technologies made by others. Much of my work is done in C# which is statically typed by default but supports dynamic types as well, which I use only rarely, but like to have available when needed. But I also love Python, and can tolerate JavaScript when and if necessary. :) Proper automated testing can often mitigate the lack of compile-time checks inherent in dynamically typed languages, and the use (abuse?) of things like Object and generics can often mitigate the lack of full support for dynamic types in many otherwise strongly-typed languages. Normally, what can be done in one can be done in the other, but it always makes sense to have multiple tools at one's disposal and to try to choose whatever seems like the right one for any given job.
Nonaggression works!
No, they worked with SmallTalk. ...
The GoF guys are not the unit testing guys
The GoF actually did work mostly with C++, however they analyzed code in other languages, too, to find patterns.
Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
The other important things, like dynamic dispatch (calling methods that don't exist and provide runtime glue to 'interpret the call') is only possible because the languages are dynamic typed.
The typesystem (and meta type system, and meta object protocol) is the most important part of SmallTalk and OO LISP variations.
Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
Well, :) and C evolved into a more mature language and had then its offsprings like C++. ... but also in most of them they fixed it a good deal over time.
most assembler programmers 'in the old time' invented their own 'business high level assembler' languages that they interpreted with a relatively small interpreter.
Besides that we basically we only had two crowds, language wise: the FORTRAN / COBOL crowed that from different points of views wanted to write compilers; and the LISP / Smalltalk crowd that were in the early steps of working with OO concepts, IDEs and other unique things, like the Smalltalk images.
Then again suddenly the C crowed popped up, but I would put them into the operation systems crowd. They basically only invented C and its predecessor to easy port their toy operation systems to new processors, untill they suddenly where no longer toy operation systems
I guess in all crowds they made retarded stuff
Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
You have no clue what you're talking about.
Unix and C were invented to run on the PDP-11 (though the OS started out in PDP-7 assembly) and weren't ported for many years.
The graph in the original article shows (for 55+ year olds):
Python: 68.2%
C: 70.8%
(a bunch of other languages, then)
Swift: 75% (emphasis mine)
Whoever wrote that didn't look at the graph for more than a second or two.
jQuery has been irrelevant for a while now unless you are targeting some really old browsers.
Ronnie O'Sullivan could massacre me at snooker using a broom handle.
He'd still be better using an actual cue.
Confucius say, "Find worm in apple - bad. Find half a worm - worse."
If I was under thirty with tribal tattoos and piercings you could hang a towel on I'd invent my own language that translates on the fly into whatever you want.
As long as you want swift or go.
Confucius say, "Find worm in apple - bad. Find half a worm - worse."