I’m starting to realize that I’ve walked into the aftermath of a silent revolution in program development. When businesses want to hire a developer, they aren’t talking about Λ the Ultimate-style programmers anymore. The value in someone who knows all the languages, and if they don’t know it, they’ll learn it now, has past. Nobody in business cares if you know Java anymore — they care if you know JavaBeans, JSPs, JUnit, Ant, Maven, Eclipse, or some other subset of the hundreds of pieces of infrastructure that exist for Java. The same can be seen with the .Net framework technologies. This is why there are so many people who are just “Java programmers”, which is something that Λites have trouble understanding — your Java programmer is a technician, familiar with all the toggles and gizmoes that make up the Java infrastructure, and instead of learning a new language in order to expand their knowledge, they learn a new piece of infrastructure attached to it. The disdain expressed by Λites towards this kind of person is unjustified, and looks to the me as a simple, straightfoward holdover from academic snootiness towards those whose knowledge is more practical in nature.
Categories
Sponsor Us
The Enfranchised Mind has been online since 2006 and boasts thousands of conversations, many author open source projects, and high traffic. Help continue EnfranchisedMind: sponsor us and we will set aside some space in the sidebar or footer to feature you.
7 Comments
Brutally: no.
First of all, I disagree that the majority of the LtU crowd is any more snooty than the majority of Java programmers. Consider: you encounter this programmer who reveals that he’s working in Cobol, and doesn’t really “get” Java. Now, what’s the response the average Java programmer will have for that guy? I’ll bet dollars to donuts that it’ll be a hell of a lot more snooty and condescending than just about anything you’ll see on LtU.
If anything, the condenscension is on the side of industry. Industry has a huge NIH syndrome with regards to academia. Simply mentioning that something came out of academia is tantamount to labeling it useless to the vast majority of industry programmers. Never mind that a lot of academics move between industry and academia, and that even in academia “real” work is being done by any measure you want to make- consider the job of maintaining a cross-platform optimizing compiler over decades.
Where the condescension is revealed is for programmers who don’t want to improve either themselves or their craft. I don’t care if the only language you know is Cobol, Fortran, Java, PHP, VB, C#, or Ocaml. If you’re not learning, if you’re not improving your skill as a programmer and as a software developer, then yeah- I’m going to look down on you (unless you’re not trying to pass yourself off as a programmer). If you’re not part of the solution, you’re part of the problem.
I also note that it’s OK if you don’t know everything- I don’t know everything. No one knows everything. The important point is to be wanting (and working) to improve.
Now, I think part of the problem is business. In theory, business makes all decisions on the basis of pure economic benefit, but we all know the relationship between theory and reality. It used to be (up until very recently) that corporations had two classes. You had the managerial class (which included engineers, back in the day) and the working class. The nobles and the peasants. And the peasants were replaceable. If a guy’s job was to tighten a bolt on every assembly as it goes past, and he looked at you wrong, you could toss him out onto the street and grab the next guy in line to replace him, and the line wasn’t disrupted for more than five or ten minutes. The power and money were reserved, almost entirely, for the lords, er, managers.
The computer revolution changed all that. Nowadays you have companies who are all managerial class, at least in terms of money and power. All chiefs and no indians. All lords and no serfs. What fun is that? Worse yet, you have these people who bear all the social signs of being working class- the dress, the manners, etc. But who are demanding you pay them managerial wages and grant them managerial political power, simply because they aren’t replaceable by the next guy in line, or almost at all.
So there is, I think, the alure of the idea of the techno-surf. The techno-surf comes in a number of different disguises, the “standard Java programmer”, the “standard C# programmer”, the MCSE ceritifed administrator, the A+ certified technician, etc. People whose main technical qualification is their replaceablity. Peasants who won’t demand to sit at the table of the lords.
And guess what? If that’s your main qualification, expect to be treated like a serf. Hey, there are people in India, in China, in Russia, who’d love the wages you sneer at. If you’re a techno-serf, you’ve got no wage pricing power. And don’t be surprised if the managers decide to kick you out onto the street, and the next guy in line happens to be in India.
And as someone who damned well expects to sit at the lord’s table, of course I’m going to sneer at a self-identified (even if they don’t know what they’re doing) serf. Guess what: that’s part of the benefits package of being a serf, free sneers.
Wanna learn how not to be a serf?
I do agree that there’s a push to standardize the system out of existence, but the meandering into class warfare doesn’t explain the issue simply at hand: that there’s a new kind of developer who is a specialist in a single field. Maybe you don’t see the snootiness because you’re part of the club over there, but if you poke around over there, status is clearly deelineated based on how many programming languages you know them and how deep you know their implementation.
Now, there’s a mindset that’s implicit in the old school programmer mindset which you demonstrate in this line:
> If you’re not learning, if you’re not improving your skill as a
> programmer and as a software developer, then yeah- I’m
> going to look down on you (unless you’re not trying to pass
> yourself off as a programmer). If you’re not part of the
> solution, you’re part of the problem.
>
See, it’s possible for someone to stay in one technology and to keep learning. There’s enough infrastructure built around the .Net framework or Java to keep someone learning for years, and those technologies are changing and evolving fast enough to mean that you can keep learning about them. All of that without learning a single other language.
That knowledge has a lot of value to business. Someone who knows a lot of languages and can pick up a new programming language quickly isn’t nearly as valuable as someone who knows the software infrastructure deeply. Sure, it’s one thing to know Java, but you can learn Java in a weekend if you’re sharp. Knowing how to use (and use effectively) the various infrastructural tools that Java provides (e.g.: Tomcat, JBoss, Hibernate, JDBC, JNDI, JUnit, Maven, etc., etc.) is an entirely different, and largely experiential, matter. If you look out on Dice, jobs aren’t based solely on programming language — almost universally, they ask for familiarity with a variety of development infrastructure technologies.
Admittedly, the poor developer who dedicates himself to being a Java technician is putting all their eggs in one technological basket. I, personally, am extremely wary about that kind of decision, but I see where business is coming from in wanting those people to exist. And I’m not about to sneer at the person because they’re dedicating themselves to learning mroe within that one language and not to expanding into others. It’s certainly not the academic approach to programming, but it is a valuable one.
So why is that Java developers do not respect the guy who only knows Cobol- but he’s been coding that for thirty years? He certainly has a deep knowledge of the (Cobol) infrastructure. And simply because he hasn’t bothered to learn a new language since the Nixon administration doesn’t mean that he hasn’t been learning- has it?
Note that status in LtU community isn’t based on how many languages you know, it’s how well you know the theory of language design. And since the purpose of the site is to discuss language design theory, this follows pretty well. Of course, knowing more languages- especially knowing certain languages (like ML and Haskell) means it is more likely you will know the theory.
And I comment that I’m not that strong on the theory. I still haven’t (quite) wrapped my brain around monads, and lazy evaluation is only a recent acquisition.
Note that knowing a lot of the wrong languages doesn’t help- knowing C and C++ and Java and Pythin and Ruby and Perl and Visual Basic and Fortran and Cobol and Pascal, you still probably don’t know the theory.
Read the Pragmatic Programmer I leant you. Your knowledge portfolio is like your investment portfolio. In addition to investing regularly, diversify. What do we think of people who invest their entire savings in the stock of one company? Or even of one industry? They’re fools, we know they’re fools, and there is some condecension there. Is it unwarranted? Same goes for those who invest all of their learning into one language.
Two years later, and this still rings true to me. Magic-based frameworks like Rails have made it even worse, since their power is based on having the right plug-in and having seen the right code sample.
BTW, I’m Candide.
It’s not so much the “computer revolution” that changed how (and by whom) work was performed. In broader terms, the service industry revolution is responsible, and will most likely be the successor of the Industrial Revolution in history books of the future.
Software engineers make their living providing a service. If the service you provide is poor then you can be replaced easily. If the service is high quality then you cannot. Waiters at restaurants are the same way. It is not easy to find a waiter for high end restaurants because most wait staff will not provide your customers with the same level of quality as you expect. In the same way, high end engineers are hard to find because most engineers produce work that is vastly inferior to that of the high end.
As for the single-technology-stack developers… I see two distinct questions with two distinct answers:
1) Will there always be jobs for these people? Yes. Absolutely.
2) Will there be a future for these people? No. Absolutely not.
When the industry stops and quits evolving is the day that investing in a single technology stack will pay dividends. In the meantime, for most it is a single investment that will pay diminishing returns in the long term.
What’s your definition of “the long term”?
So far, there’s still a solid market for COBOL, Perl, and C++ jobs: I’m not sure you get much “longer term” in the programming word. Growth is certainly dropping off, but if you went into the market learning COBOL, you’re pushing firmly into retirement age at this point.
The problem is that while the industry may be evolving, many companies aren’t. And companies want interoperable parts. They don’t want to pay someone who is going to have to come in and learn how to operate Eclipse or Visual Studio or Hibernate/NHibernate or whatever. They want someone who can hit the ground running with the technologies they are using now.
To this extent, someone who knows many languages somewhat is providing a much poorer service than someone who knows one language and its tools well — think about the level of expertise required to masterfully handle Seam or Rails. You could (and many people do) spend full-time chasing after the “bleeding edge” of Ruby/Rails or Groovy/Grails, and for clients using those technologies, that is a very important skill.
The role of a polyglot is limited to experimental teams, either in start-ups or in experimental (and often politically risky) projects within larger corporations. From a project manager’s/business owner’s standpoint, a new technology is only justifiable if it gains a value greater than the cost of retraining the team and taking the initial productivity hit — and usually that’s measured between now and the 1.0 release, because most projects don’t get past that point. In that kind of limited scope, it’s very hard to justify a new technology as relevant or valuable.
And that’s how new technologies get added onto the “to try out” list, and never get off.
2 Trackbacks
[...] More on programmer-technicians over at The Programmer is Dead; Long Live the Developer!, a post which has proven itself more and more accurate with the rise of CMSes (including [...]
[...] of software development has transitioned in large swaths of the industry. As I noted in my ancient The Programmer is Dead; Long Live the Developer! post, actual computer programming is often not the part of the job that pays the bills. The part of [...]