Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

There is no steamroller.

I know many programmers feel this way, but in my humble opinion it is a fallacy, and not a very healthy one.

No-one can deny that our industry is evolving at breakneck speed, and it is an exhilarating place to be. But just because there's a new technology every week on HN doesn't mean that we are losing old ones at a similar rate.

It is perfectly possible to have done nothing but C or Java for your entire career and yet remain extremely employable. And I wouldn't be at all surprised if there are highly paid COBOL jobs still out there, nursing some vast banking-industry mainframe which is too precious to risk replacing.

In fact I'm hard pressed to think of any programming language which I would dare declare 'dead' in a HN comment.

But even if you're a specialist in something which you feel is in decline, or for which there are newer, snazzier replacements, you've got every opportunity to learn something new, taking as long as you like to do so. There's extensive documentation for every technology under the sun available for free on the internet, and an army of friendly, helpful people willing to provide help and advice without expecting anything in return.

In fact, it's entirely possible you could even get paid to cross-train. In my own company we use RoR for which (in England at least) demand far outstrips supply. I've paid PHP developers to learn Rails, and I would consider anyone with an in-depth knowledge of any language as potentially employable.

Really, the only way an experienced developer is going to end up flipping burgers or flying a manager's desk is because they have lost the desire to learn - ie fallen out of love with programming in general. I believe few people work in this industry for money alone - you either love programming or you don't do it - and if you love it then you will pick up new technologies out of sheer intellectual curiosity.

Feverishly reading HN every day and feeling threatened by the emergence of every new 'next best thing' is not a good idea. I would advise anyone feeling this way to take a chill pill and remember why they took up programming in the first place.



I'm in agreement here. The engineers that will lose out are the ones that think that by learning the latest and greatest frameworks and libraries, they are somehow improving in their mastery.

This is, in fact, stamp collecting. Fewer and fewer engineers feel comfortable doing the basics. Implementing a raw custom data structure, writing a new parser, twiddling bits on a wire, debugging segmentation faults. The new-age programmer is in reality, a scripter who learns hundreds of different ways to do more or less the same thing.

There is no steamroller, but there is stagnation.


Maybe there are lots of types of programmer now. I tend to do the sort of things you mentioned, and look in awe at the amount of api / domain knowledge good Java or web developers have.

Actually, I wonder if the steamroller is age.

I can remember talking to a HR at a company I used to work for. I asked why they spent so much more effort on recruiting graduates and juniors than seniors.

'Seniors cost twice as much as juniors. We need them, but we only need one for every three juniors'

If that means only one in three juniors gets to be a senior, I wonder what happened to the other two. No one hires a junior with ten years experience, so I guess they don't work as programmers anymore. I hope they are project managers. Maybe that explains why project managers are always so angry.


They go to work for companies with the opposite philosophy. Some companies do no or very limited entry-level hiring, because they choose to hire programmers who made their mistakes on someone else's dime.

Yes, some also go into technical management or project management roles, but in my base of anecdata, that was either out of a genuine preference or because they realized they weren't all that good at coding. And of course, some leave the field, but this is by no means an industry where only 1 in 3 entrants has a spot 10 years later if they want one. If you're even halfway decent as a coder, you'll have a chair and the music will keep playing for you as long as you reasonably elect.


New frameworks are getting simpler and easier all the time. They try to avoid the pitfalls that old ones fell into and thus become easier to learn than the last generation.

It's far far easier than learning a new language, and it's now common knowledge that you shouldn't make hiring decisions based on what specific languages a candidate knows. I haven't seen a trend in the real world forcing people to know new frameworks as a requirement for a job. In fact, I'd say it's less so than needing to know the language.

Many that put that they "know" a framework that I've seen "know" it just by doing a project in it over a weekend.


"It is perfectly possible to have done nothing but C or Java for your entire career and yet remain extremely employable."

I am Java programmer and the above seems to be true. However, it does not mean that Java programmers can stop learning and code as if it would be 1995. Even if you confine yourself into Java world only, there is enough to be learned in five lifetimes.

Many people here equate "learning something new" with "learning new cool programming language". It is sort of fallacy. New or improved frameworks are coming out every day. You can lean new design patterns, whole domains or simply dedicate few years to security, algorithms, graphics, gui design, sound manipulation, internals of common data formats etc.

That being said, it is ok to skip a technology or two. Most of them will disappear in few years anyway.


However, it does not mean that Java programmers can stop learning and code as if it would be 1995.

This is a great point. Java in 1995 and Java in 2014 are nearly different languages. If you add in common frameworks like Hibernate and Spring a programmer who hasn't learned anything new since 1995 will be just as confused as a person coming to 2014 Java from another imperative language.


In some countries, like New Zealand, almost the inverse of this "steamroller" concept is true and you're potentially disadvantaged in this job market if you have focused on developing 'contemporary' software skills. The vast majority of software jobs here are .Net, php and Java, and I haven't seen anything to indicate over the last 10 years that the status quo is shifting.

As much as I love learning new things, and would love a day job working with Clojure/cljs or contemporary js on regular basis, in terms of my career I potentially would have benefitted more from consolidating skills in the aforementioned ecosystems. In the valley these things may be perceived as legacy and completely outmoded, but in the rest of the world that's hardly the case.


There definitely IS a steamroller. However you have to be in your 40s to be able to look back and see it fully. The article was about the grand scheme of things over decades. If you're under 25 you've only really experienced a single decade of the evolution of software. I'm 46 and started coding at age 13, so everything in the article made perfect sense to me.


As it happens, I'm 43, and I've also been coding for 30 years. I even have a beard :)


This is actually a very good response. There are new technologies sprouting up continuously but only a few survive. However, the older ones have already shown resilience and will likely survive a long time (C/C++ and Java were mentioned).


My advice to people feverishly trying to keep up with the latest JavaScript frameworks is to take a step back, and learn a new language that's been around - like Java or C++. The only knowledge that's throw-away is too domain specific, too library specific etc.


I'd also like to point out that most software projects are in maintenance mode right now. Startups focus on creating new products but what do you think every company on earth is running right now? There's infinite amount of work for a good programmer in the world, getting bogged down by trying to keep up with the latest cosmetic changes isn't the best long term plan.


> Really, the only way an experienced developer is going to end up flipping burgers or flying a manager's desk is because they have lost the desire to learn - ie fallen out of love with programming in general. I believe few people work in this industry for money alone - you either love programming or you don't do it - and if you love it then you will pick up new technologies out of sheer intellectual curiosity.

I think this is spot-on!

Mere inflexibility or old-fashionedness is often not enough to make one unemployable. I have colleagues who insist on various odd-and-nearly-dying technologies without that having a negative impact on their work. I have my own perks, like instantly turning off syntax highlighting whenever I have to use a new editor (sadly, the state of most embedded development ecosystems usually means new MCU = new fucking everything, oh, and on Windows!).

What I do find troubling and hope I never get is something akin to calcification, only intellectual rather than physical. I currently work for a company that has developed, among others, various computer security tools. Consequently, I have a lot of colleagues who have spent their entire careers writing software for nothing other than Windows. Some of them get very excited when they talk to me about other operating systems (I haven't used Windows, except when occasionally forced to, like a few years ago because well fuck you too Microchip!); I get to find out interesting stuff about various pieces in Windows, they find out about interesting stuff that hasn't made it to Windows (like ZFS) and we get to compare programming approaches.

Then there's the other group. The people who are absolutely 100% convinced that the only way to do something is the one they know. Unix? Phbt. Broken because the applications keep their settings all over the fucking place in whatever format they want. Windows does it neatly and keeps them in the Registry, in a singular format. You mean you read a file to find out if an Ethernet device has a link? That's really clumsy, what does a file have to do with anything? Why don't they give you a neat API? What do you mean "What happens if you want to use it from a language that doesn't have bindings for that API"? You got C# and C++ for complicated apps, VBScript for moderate ones, PowerShell for scripting and a bunch of hipster stuff like F#. Python? There's no support for that in Visual Studio, I'm not sure it even exists.

Sadly, the latter camp vastly outnumbers the former. It's not a case of I'll-just-use-the-tool-I-know-best. I see programmers I honestly respect doing that for the sake of safety: X is probably a better fit than Y for this, but I know Y inside-out and I only know the name of X. Deadline fast approaching + Y can do it as well without being bastardized = we're using Y.

No, these guys are at the other end of the spectrum: it's the "Y is a programming tool, I need to program something ergo I use Y". Technical merit is secondary as long as we can do it, and human effort is not only expendable, it's being paid for. The fact that this misled can-do attitude is indistinguishable from the one backed by technical prowess to most people in HR and management certainly doesn't help.


> - and if you love it then you will pick up new technologies out of sheer intellectual curiosity.

I like learning new concepts. I don't like learning things that are kind of the same as the what I'm already used to, lacks 5% of what I had in the 'previous' technology, adds 5% of what that other 20 year old technology did (and did better) that I already know, and "learning it" is more about rote learning and getting used to corner cases than it is about gaining a new perspective.

I don't know the ratio of this type of learning to the more perspective-shifting type of learning.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: