229 comments

[ 4.1 ms ] story [ 268 ms ] thread
Maybe this is why so much software these days looks like it was written by unsupervised youngsters.

I just wasted a day trying to get ListView's to work in Android only to find out that, well, they don't work, so you need to use something else. Then it took me a couple of hours to essentially duplicate the ListView functionality, except a working version.

The thing is developing a GUI framework isn't rocket science, its been done before and there are plenty of examples of reasonably well designed frameworks out there, Swing and Qt to name a couple.

Software is complex so it takes a while (years at least, probably decades) for a human brain to gain real perspective on what's important and what isn't in software development. A culture like the one we're living in that throws away those brains dooms itself to decline.

It's not the youngster who are jobless is the older software engineers who never learned to learn new concepts. The older programmer to so much time to learn everything from algorithms , to cryptography, and things that are analytical they forget about learning new technologies. Yoru comment shows why older people have difficult getting jobs. It took you a day to understand how a listview work while a good young programmer who understand technologies should be able to pick up any technology and understand it in a few weeks.
I think newer programmer's just work for less. There really isn't that much new under the sun in software engineering.
Really? And here I was thinking that my discipline was one of the most rapidly evolving on the planet...
Not so much, mostly people keep reinventing the wheel over and over again.

Consider, there is vary little that separates handheld Apps from desktop applications. Sure, if you come from the Web side of things it seems new and nifty but they are just stand alone applications. Capacitive sensing touch screens where where new in 1965, but wait it's 2012. http://www.billbuxton.com/multitouchOverview.html

People worry about what happens when desktop CPU's have hundreds of cores, but the super computer world is already dealing with hundreds of thousands of cores etc.

PS: I think this relates to the hacker mentality. If you find a problem you look for a solution rater than see how other people solved the same problem 30 years ago.

This betrays a stark lack of perspective. What's old is often new again, in different guises.
A loop is a loop. Math doesn't change much either. Nor does the concept of space and time, etc. It seems new and different to young people, but underneath, it's mostly the same as it was 40 years ago.
Since the 70s, most apps have comprised "forms" (screens for a user to enter something, that will be stored in a database) and "reports" (screen that nicely format the contents of a database). This is all Facebook et al really are...
Nah, go read some of the academic papers from the 70s. We haven't moved very far in software. The hardware shininess obscures that though.
> Yoru comment shows why older people have difficult getting jobs.

You make several assumptions about him that don't seem supported, but worse why make this personal?

> It took you a day to understand how a listview work while a good young programmer who understand technologies should be able to pick up any technology and understand it in a few weeks.

So, older people don't get jobs because it takes them a day to pick up what a young programmer can understand in a "few weeks"? Really?

I think he meant it only takes them a "few weeks" to understand a whole technology (e.g the entire Android API rather than the listview).

I think part of the reason you can feel like you are learning faster when you are younger is because you look at everything enthusiastically and hammer through your education seeking out the juicy good bits of a technology and kind of glossing over everything else.

As I get older I find myself evaluating things much more slowly and cynically, checking under every rock for things that can bite me in the ass.

Try reading what I actually wrote instead of what your preconceptions and prejudices are telling you.

It took my a day to find out that ListView's do not work.

So, you're not an English major then?
The parent was commenting on a broken framework, something that should be an anathema in any shipping product, and around spending (wasting) time determining that the API itself was faulty. Replacing the faulty API call took two hours.

But to follow onto to your point, it's also the case that the younger programmers can need a decade or more to make enough mistakes; to variously learn what the older programmers already know about various fundamentals of the programming and product-creation business.

And to extend your point, it's been my experience that having a team of younger programmers is just as big a headache and as big a mistake as having a team comprised entirely of older programmers. A mix works better, as the younger folks teach the older folks and they bring knowledge of new technologies and volumes of enthusiasm, and the older folks can teach the younger programmers about temperance, testing, productization and business in general.

What were you trying to do, exactly? I won't jump up on the barricades to defend the honor of the Android SDK, but ListView is a tool in my belt that I use to get real work done. It's certainly not perfect, but sometimes I miss it when I'm working with UITableView over in iOS land. Cursor management is pretty gross, but ListView itself is usually fine.

I have worked with some genius older developers. If I could point to a flaw in myself as I've grown older, though, it is that I fail to integrate and use working code in the larger ecosystem as quickly as my younger colleagues. More often than not, that shows up as blaming the tool or library because I failed to understand how it works, then falling back on something I already know well. Even if that means rewriting something unnecessarily.

Finally, look - as imperfect as software continues to be, you can't tell me that there weren't awful libraries in common usage ten or fifteen years ago. That doesn't pass the laugh test. You may only remember the good ones, but that's the luxury of memory.

I was trying to use EditText's in ListView items.

The focus handling is completely broken, but nothing in the Android documentation suggested there was anything wrong with trying to do this. It was only after Googling through many posts that I came to the conclusion that ListView's aren't useful for editable fields.

Of course there may be some magic sequence of API calls that will make the focus handling work but it turns out that using LinearLayout's is much easier.

Of course poor API's have always existed but I am distinctly unimpressed with the quality of Android's UI framework compared to others I have used and I find that very disturbing for such a high-profile and important project.

This seems like a very bad assessment of software engineering forgetting the cursial reason why older programmer have trouble finding job. The fact is that computer science is only really been a legitament profession for maybe 40-30 years. When it first was taught no one could of predicted the speed at which software engineering would become a dominate force in the world's economy nor seen how fast technology changes. So in the begginning computer science was viewed like math, physics, or any science it was taught so that you learned the basic first then you learned the newer and more innovative things. This is no longer the case. Yes most programmer will experience c/c++, some may even lean x86 and MIPS, but we now know that computer science require a constant change. It is no longer acceptable to just know c/c++ you must learn new languages all the time. Whether you decide to learn node,js, ruby, scala, or what ever cutting edge languages we are not groom to pick up languages in 2 weeks if needed to. Most great programmer are taught to teach themselves the newer technologies to stay relevant. Something I see my professor in college never really learned.
Just a tip: basic grammar and spelling contribute more to your long-term professional success than you might guess.
Statistics show that most software developers are out of the field by age 40.

If this is really true then where do they all go? There's only so many seats for managers and architects.

How many 40 year old software programmers could there be the area of science has only been around 40 years.
A lot of modern jobs have only existed for <= 40 years.

Trust me, there are a lot of us.

That's true, but software development is special because not everybody can do it.

Don't get me wrong here, I actually think that mostly anyone (lets say over average) can learn to code, including very young children or over 40 adults ... the difference between normal people and people that make a carrier out of it is that building actual applications is a lot harder than printing hello-world or sorting an array or scripting your home appliances.

I think that if you don't start doing software development early in life (at most in your early twenties), then chances to make it as a software developer are rather poor.

A couple of reasons come to my mind:

- like with every hard skill out there, it takes a phenomenal amount of time until you're able to be effective at it

- we constantly have to learn, just like doctors and while doable, it gets tiring. You can learn new stuff based on what you already know, so you never restart from scratch, but many people simply stop giving a shit

- getting a hello-world working feels like magic at first, but repeat that 10,000 times and pretty soon it starts feeling like drudgery. That's the story of most things you end up working on. And it is impossible to work only on new stuff, in fact most of the work in software development is drudgery

- related to the above, the motivation of senior software developers has to pivot from working on cool stuff to seeing happy users, or to money earned, or to other tangible byproducts or your work, because "cool" is relative and the initial magic starts fading away (which is why I believe many developers move into management)

- the demand for "good" software developers is high. But it's actually pretty hard to find a job as a software developer if you're not at least decent or come from a good university. This makes it a hostile environment for rookies, being a bitch to get your foot in the door

- software development is not only hard, but must be complemented with people skills ... being able to communicate effectively with others is of extreme importance, knowing how to do efficient marketing is also essential if you want to build your own products or if you want a good carrier path

Yeah I agree that programming, for whatever reason, seems to be something that a lot of people just can't do well.

But we're talking about the people that have been doing real work in the field for ~20 years getting booted out to god knows where. Is this true? If so, where do they go? It's not really so easy to start a completely new professional track at 40. Are they stocking shelves?

I really think those people just gave up for one reason or another.

But do note here that 20 years ago there weren't many jobs related to software development. This industry started taking off in the early nineties and got popular in the late nineties. And as I said, it's not an easy job.

So if you want to make statistics based on that, the sample is really small. We should wait another 20 years for any meaningful conclusions, and my guess is that in 20 years from now there will be many software developers over 40.

How long ago was 1992? Anyone that was working as a developer as recently as 1992 is now almost guaranteed to be 40+.
If you are 40 today, its reasonable to expect that you graduated college in 1994. That's 32 years after Purdue University opened the first computer science program in 1962.
You really think that the first computer was invented in 1972?
Sure, computers were around back then. But I don't think there was much of an industry around them outside of academia. There are quantum computers now, but not many "quantum programmers" :P. (It's not a perfect parallel; I'm just being a little glib.)

Edit: My point was that there won't be very many programmers with 40 years' experience. Turns out the OP meant 40 year old programmers, which is a different story.

Sure, computers were around back then. But I don't think there was much of an industry around them outside of academia

And the banks. And defence. And aerospace. And factories. And.... well... lots of other places. IBM started selling the 1400 series in 1960 for Pete's sake!

The industry was obviously a lot smaller then - but it was well past the pure academic/military phase by that point.

The first home console game - http://en.wikipedia.org/wiki/Magnavox_Odyssey was launched in 1972 - although I guess the Magnavox wouldn't really classify as a computer :-)

Hmm... My first job as developer was in 1978. My college major was math, but a CS minor. Still coding everyday.
I would love to see these statistics...anything available online and if so, any links?
I guess Crockford better pack his bags and send himself to a retirement home.

There are always going to be under qualified and over qualified candidates. Some people simply loose interest in their field after 20 years. What a load of over generalized garbage.

That's an absurd interpretation of the article. It never said everyone is out of the field by 40, just "most".
He seems to have missed making the point in the title. Why would software engineers work for english majors? He thinks that a 20 something english major is a better manager for a software engineer than a 40 something software engineer?

Plus he seems to completely miss a separate alternative for software engineers over 35-- start their own businesses.

I think the perception that 40 year olds are not up to date on technology is laughable-- just look at how resistant 20-sometings are to erlang. This resistance or letting skills get old can come from two sources: First, some people just are kinda blub programmers who never want to learn something new. The second is that its possible to be pigeonholed. I was that way- forced to write windows software for years (several companies who had mac apps who hired me with the promise of working on the mac app then switched me to windows because I had windows experience) until I seriously de-emphasized that experience on my resume, and started outright refusing.

The reason companies hire people right out of college is really simple: They want engineers who are going to accept being over worked due to bad management practices. They think it is easier and cheaper to just hire out of college than to fix their broken processes. I've seen this everywhere - from Microsoft where the managers have some technical back ground but the company culture is broken- to Amazon where the managers are DMV rejects and the company culture is broken. (notable exceptions exist in both cases, of course.)

It is cheaper to hire someone right out of college than to hire someone with 10 years experience... the problem is, "professional" management thinks both are equally productive. In my experience this is not the case.

I had to laugh when, in 2007, Zuckerberg was on the stage at Startup Weekend claiming that 20 year olds were more productive-- at the time he was too young to even know the difference! Standard issue youthful hubris, that.

You and mchurch should start a YouTube sitcom or something, where you rant about all your horrible experiences.ike a Curb Your Enthusiasm for techies. It would be entertaining and more profitable than just posting on HN. Larry David should love to invest, you've nailed his technique of railing against the firstworldproblems facing people who can't be happy in the most rewarding and comfortable niche around, and brought it from the LA social scene to the Silicon Valley / Seattle office space. And you are good writers.
(comment deleted)
Huh? Looks like a compliment to me...
Nah, you're right, retracted. Sorry, early in the morning for me and I'd seen a couple of actually insulting comments against both of them yesterday and I guess it was still on my mind. Apologies.
Me, at 20 years old: "Man, young people are so much quicker and smarter than older people."

Me, at 40 years old: "Just wait. You'll see."

I always loved the Mark Twain quote "When I was a boy of fourteen, my father was so ignorant I could hardly stand to have the old man around. But when I got to be twenty-one, I was astonished at how much the old man had learned in seven years."

http://www.toinspire.com/author.asp?author=Mark+Twain

Another point to bear in mind is that us programmers can be a vain lot and since it is possible to be highly successful in software very early in your career. This can mean you will be put in a position of doing the hiring early on.

We will naturally prefer someone younger and greener than us that we can mentor rather than hire someone 10 years our senior who's experience we might find threatening.

I see this all the time, and I think it's the least useful way to further your own career. Sure, I understand that notion of the power grab, but why? What real world benefit will you see by asserting unearned power over a new hire.

Much better to hire someone who you can learn from, someone who perhaps can mentor you, and help you actually achieve more in your career.

Objectively that may well be true, however if you hire someone more experienced than you then perhaps they should be supervising you and not the other way around.

Also I think most geeks like to think of themselves as Jedi Masters. There is also the fear of someone tearing you a new one for the quality of your codebase.

I'd like to think in an ideal world we only ever hire colleagues, and our teams are, for the most part, meritocracies without hierarchy. Technical Leads guide development and mentor those less experienced, instead of directing it and passing down tasks. Management should be isolated from the team you work with daily, and should be there only to help long term progress (and other hands off management things).

Working with closely on a day to day basis with someone up the management chain from you is miserable.

Working with closely on a day to day basis with someone up the technical competence / experience scale from you is fantastic.

>Working with closely on a day to day basis with someone up the technical competence / experience scale from you is fantastic

Oh dear god yes. Masterful experience for engineers.

"He seems to have missed making the point in the title."

I think his title was more of a gimmick to catch people's eyes; I think it worked.

"I think the perception that 40 year olds are not up to date on technology is laughable"

I strongly feel that this depends on whether the 40 year old likes programming for its own sake, or they feel that it's just part of a 'clock in' and 'clock out' job. It's also very difficult for many programmers that I've known over the years to step outside of the language that they started with, and start learning and heavily using something new. (Maybe it has something to do with aversion to risk and experimentation? For me, the ease in which a programmer can jump from one language to another, is a key test for their longevity in the field.) Of course this also holds for younger programmers; it's just that their skills are fresher and in my limited experience they tend to be more open minded both technically and to things like longer hours.

That said, I've known two programmers in their 50's who could kick any 20 something's ass in any of the latest tech. Sadly in my experience, they are very very rare.

I strongly feel that this depends on whether the 40 year old likes programming for its own sake, or they feel that it's just part of a 'clock in' and 'clock out' job

Your right. It is. Then again it's equally true of the 20 year old in my experience. Most people in their forties who are still cutting code have been through three or four "fashionable" languages and have done serious work in all of them. You'll be amazed a the number of fresh faced young folk I interview who just know Java.

more open minded ... to things like longer hours

Nah. It's just that folk in their forties have figured out that longer hours aren't more productive :-)

"Most people in their forties who are still cutting code have been through three or four 'fashionable' languages"

I'm not sure where you're located, but in my experience even in Silicon Valley this is very rare. Most of the older engineers are either all about C++ or Java. A few may tinker a little with a new language, but they rarely take a risk to do more serious work with them. Moreover, many of them just transition to managerial positions. This is even more pronounced in less progressive metros like the South Eastern US.

I feel that one main reason I've been able (and will continue) to avoid this trap of comfort is because I'm a neophile.

I'm not sure where you're located, but in my experience even in Silicon Valley this is very rare. Most of the older engineers are either all about C++ or Java.

My context: I'm UK based, but I know a fair number of US folk. I'm in my forties and most, but obviously not all, of my friends are 30-60.

The point I was, somewhat poorly, trying to make is that in my experience it's equally common to find a single language focus with folk in their twenties. Most young developers I encounter only know one language to any level of competence. Lots of people seem to come out of university having used nothing else but Java. Lots of folk who've self-educated seem to only know one of PHP/Ruby/Python/Perl/whatever. People in their twenties seem just as resistant to learning stuff outside of their particular domain as folk in their forties and fifties.

The mild advantage that older devs have is that they've seen languages come and go a few times. If you've got a Java developer in their forties or fifties now, then they were definitely using something else before 1996, and probably something else again ten years before that :-)

> The point I was, somewhat poorly, trying to make is that in my experience it's equally common to find a single language focus with folk in their twenties.

I definitely agree with that. My point is that newer devs tend to know newer languages that are in vogue. Eventually the cycle repeats itself once these 20 somethings get older. I've already seen this happen to most programmers that I personally know with very few exceptions.

This is very true (I'm UK based too).

When I did my CS degree we were taught Java and that was all most people knew. A few also knew PHP because they were interested in webdev or Visual Basic/Pascal because that was what they had done at A Level. I don't think anyone on the course knew functional programming until we did a module in it.

This was particularly pronounced when we were given an assignment to do where the tools to be used were not specified but it was to basically build a shopping cart system. Obviously the best tool to use would be either something like PHP or to use Java but with JSP etc.

What the majority of the students produced was a AWT/Swing application to control the shopping cart and used the file writing classes (FileOutputWriter etc) to output HTML.

Perhaps the difference though is that young developers would expect to be re-taught a bunch of different stuff when they started their first job.

Back in the late 1980's my degree had us use: assembler, Pop11, Common Lisp, ML, Prolog, C, and Module2 over a three year course.

Frankly I find it incomprehensible that any CS degree doesn't at least cover using declarative, functional and OO languages.... but it seems to be common.

"I strongly feel that this depends on whether the 40 year old likes programming for its own sake, or they feel that it's just part of a 'clock in' and 'clock out' job. It's also very difficult for many programmers that I've known over the years to step outside of the language that they started with, and start learning and heavily using something new."

I'm not so sure.

At one of my previous jobs I worked with a lot of people in their 50s and 60s who were used to assembly language, Jovial (it was an Air Force contract), and Fortran. They couldn't wait to transition to newer stuff because the old languages were so difficult.

On the other hand they were all really smart, so maybe you're right.

"They couldn't wait to transition to newer stuff because the old languages were so difficult."

I think this is just yet another really poor excuse for not learning something new, which further reinforces my point. There's no reason that any of them couldn't learn something new right now and years before. It's not like the middle class can't afford a really powerful computer. They've been affordable ever since the late 80's. You don't even need a powerful computer to program and learn something new. Nor do people have to pay to get access to new languages, and other related dev tools. Plus even the OS is free now. All you need is motivation to make time for it.

In their defense, this is a really hard habit to break and what makes it worse is that most people don't realize that they're addicted to one language. As for myself, I'm too addicted to the imperative paradigm even though I get my toes wet with functional from time to time since it's baked in with some of the stuff I use.

Okay, maybe I didn't make it clear.

The problem isn't that people weren't learning new stuff. Everybody knew the newer languages - how else would they know they wanted to use them?

Unfortunately, not everybody can drop everything and re-implement a large system in a trendy new language.

> how else would they know they wanted to use them?

By reading blog posts and articles about new 'hotness'. I often want to use something without having previously used it.

Good point, but here's the kicker: How many of these older folks couldn't wait to LEARN vs. USE the newer stuff? Too often, I've found that middle-aged programmers in gov't/defense jobs won't learn a language unless its a job requirement. In other words, they don't do any coding as a hobby at home. As other commenters have stated, they would have been able to have home PC's to code on at home since the 80's. If I didn't do home projects, all I would know would be Java. Hell, I had to teach myself Python at home just to be able to get my boss to allow me to use it for data stuff. Node.js and whatever fun, vibrant open source community is blowing up at the moment? Never if I didn't do it on my own time.
"Why would software engineers work for english majors?"

Maybe it's just me, but I've "worked for" several English majors. OK, perhaps they weren't my direct boss, but I've been on many projects managed by Project Managers with degrees in areas like English and History. (IMO, whoever is managing your project is the person you're "working for").

And I didn't "choose" to work for these guys. Usually I go through a technical interview, then get assigned to a project whose PM is a non-technical person.

Perhaps this is unusual at places like Google, MS, etc. But outside of those types of companies, it's not unusual at all in my experience.

Zuckerberg was at Startup Weekend? Did you mean Startup School?
Age-related observations tend to be 1% fact, 99% confirmation bias. It is also a short circuit to actual debate by invalidating opposing viewpoints.

"John refuses to switch the project to MongoDB. They're too old and complacent."

My suspicion is that the "young" developers they speak of (not all of them, obviously) are faster in the same way not writing tests is "faster". You're taking on a lot of debt that you'll have to pay off sooner or later. For most startups, the bad technical decisions younger developers will make won't bite them in the ass until much later - maybe never if they go out of business for not finding product/market fit - and so getting somewhere, anywhere as quickly as possible is perhaps better than having expertise at writing "great" software.

Also, Moore's law helps folks ignorant of Big-O, algorithm design, memory management, indexing, etc. push off needing to know that knowledge until much later - if ever. When you can spin up thousands of Amazon servers for pennies it really "doesn't matter" (to biz people) if you improve your search algorithm memory footprint (or performance) by 100%.

I think it's possible to have both - older developers that know when to take on debt and how to responsibly manage it can be just as fast as the cowboy younger kids, but that's even harder to find.

Not worrying about algorithm performance and memory management means one of two things 1) you are making a prototype and couldnt care less, 2) you are a shit developer.

I'm still in college and the only time I don't give a hoot about either of those things is for class work when I am not peanlized for it. But anything that goes to production has as small of a footprint as possible. But that may be because I know all of my stuff runs out of an ec2-micro and not on a $100/hr sever cluster.

Or 3) You are an excellent developer who understands the cost as well as the benefit behind optimising for performance and memory.

Is the time spent optimising better spent building a new feature (i.e. the money saved through efficiency will be less than the value gained by doing something else)? Is the optimised code going to be less flexible in the face of change? Is the optimised code going to be less comprehensible for future maintenance? And so on...

Folk who spend their time making sure that everything has as small of a footprint as possible are a royal pain in the many situations where "small footprint" is not the biggest cost of the system :-)

"He seems to have missed making the point in the title."

I hate to say it, but all Bloomberg editors seem to miss making the point in the title.

> Plus he seems to completely miss a separate alternative for software engineers over 35-- start their own businesses.

That's not a super practical option for most people. Not in a country where giving up your job means giving up your health insurance. Not when you have a wife and kids.

The first problem will go away on Jan. 1, 2014, if healthcare reform doesn't get repealed or overturned by the Supreme Court.
(comment deleted)
-- "Although the very term “coding” evokes an image of tedium"

This is ridiculous.

Replace "coding" with "writing" and you'd describe most of my k-12 and undergraduate educational career.

Many people can't seem to grasp the differences in ways a computer could be used, and lump it all in with "data entry".

I get the odd feeling there is something personal going on for the author. There isn't anything in there to back up English or humanities majors taking more managerial positions in tech companies.

"If you choose a software-engineering career, just keep in mind that you could end up working for one of those lowly humanities majors someday."

I completely failed to parse the title of this article. I thought it was about some union-like action in which some set of software engineers will donate their salaries to some set of, supposedly, poor English majors.

The more I read, the more confused I got since it never seemed to get to the point: who are doing this? Heh. English is not my native language, which I guess this served as a good reminder of.

The title initially made me angry, but there's a lot of truth in this post. The sad fact is that once you cross 35, the salary growth slows considerably for most engineers and you have to jump to management roles to make more, even if your output translates to more dollars.

Contrary to the article, I think people in Law and Finance go through the same thing, but they get about 10 years more than us. My friends in Finance can stay in technical roles well into their 30s while still making double what even a typical Software Engineering Manager would make. When they finally have to go into more managerial roles, their kids might be getting out of the house and their personal responsibilities are lower, so they can take less stressful roles, or even go into consulting and start traveling if they want to be more hands on.

What you do see in law that you don't in engineering is the up-or-out pressure in big firms. You either make partner in years 7-10 or you go find another job. But if you do make partner (possibly at a much smaller firm than where you started), you basically get to do technical work for as long as you want. Partners do some business development and management work, sure, but they're still the ones that go into court and argue the motions. And in that role you only get more valuable with age. People go to lawyers when something has gone sideways, and all else being equal they want the cool-headed guy with 20 years of experience over the young hot-shot.
Wow, what hogwash. I still don't see where the article connects the dots -- why, exactly, would I end up working for an English major?

As for the balance of the article, most of the finger-pointing to dead-end oblivion for 40+ programmers is that they're priced out of the market. While that may be true in some cases, it's certainly not a trend I'm seeing -- rather, the opposite.

Mostly, this article was written by someone who has no idea what programmers/developers/architects/engineers do with their time, nor why companies value them in those endeavors.

Eh... I wouldn't write off the author that easily. I had him as a professor at UC Davis.

http://heather.cs.ucdavis.edu/matloff.html

Lots of credentials, but I don't see much in the way of real-world technology experience working in the field. Not to knock the guy, but his only vantage point is academia and government. He's certainly well publicized (gets his name in the paper a lot), but it just doesn't add any credibility to his story.
There's a persistent myth that needs to be put down:

It doesn't get at all harder to learn new technologies when you get older. In fact, it gets a whole lot easier.

There's an old saying "You can't teach an old dog new tricks", and this is true, to the extent that any cliche can be, when referring to people becoming set in their ways. For many professions, where the technology doesn't' change, this is true. For programmers "set in your ways" simply describes the method by which we pick up new technology since that's what the profession is all about. (I prefer books to youtube videos, for instance.)

Learning new languages and new technologies and new platforms is a whole lot easier now than it was 20 years ago, in part because the technology for delivering information is a lot more available (hell the internet alone is a huge impact) but also because, having learned a dozen languages the next language is a lot easier to pick up.

It's also easier to learn new technologies and languages since so many share the same concepts.

Also what's old is new again but just done in different mediums.

Reminds me of a place I worked where we joked the company's technology was 180 degrees out of phase with whatever was the hot new thing. Looking at the code base you could see how it oscillated between what was hot or great at the time.
(comment deleted)
I prefer "It is hard to teach a new dog old tricks". Much of today's cruft was originally written by new dogs.
I'm 31, and I have coworkers in their late 30s and early 40s, working in a large multinational with legacy systems.

The truth is, while it doesn't get that much mentally harder to learn new technologies, it is very hard psychologically.

For someone used to a large paycheck, to being the go-to guy in the technology and set in their 9-to-5 ways, to get out of their comfort zone, and admit that what they know is no longer relevant is scary as hell, especially for those with families.

So, rather than update themselves and make up all that lost ground from getting too comfortable, they'll try to keep in place the old legacy systems only they can maintain.

I got caught in that trap too, one of my main responsibilities is maintaining a Forte 4GL system ( http://en.wikipedia.org/wiki/Forte_4GL ).

While I've kept myself relatively up to date, it was on Microsoft .NET technology only, and I'm still a few years behind. I wanted to supplement my income, and took a look at the online marketplace, and it confirmed what Hacker News was already showing me: my skills are useless, I don't know Ruby, Javascript, the open source stacks, Amazon Web Services or anything currently relevant and in demand.

I can either try to switch into management, or accept I'm obsolete and take a large pay cut (or try to improve myself on the side, probably by trying to do a startup) if I want to stay relevant.

I was in a similar boat, and I decided to take the pay cut and spend a few years building my way back up.

I'm much happier this way than I ever would have been in a managerial role that I never wanted.

Thank you :) . However, I think I could be happy in a managerial role.

As long as I'm solving problems, facing challenges and feeling relevant, I don't believe I need to be the one doing the coding :)

To be fair far more programmers today (even new ones) will be familiar with .Net than they will be with Ruby (and complex JS probably).

I can see .Net sticking around for a while in one form or anther. Also AWS really isn't that complicated (at least from what I have used which is only really S3). Just think of it as another layer of abstraction around your Filesystem (FTP/Rsync with bells). You can figure S3 out in a few hours and I can't imagine EC2 being much more difficult if you're already familiar with Unix.

I think the crux of the problem here though is that you take a risk whenever you devote any significant time to learning a specific technology as to whether it will still be relevant in a few years.

This problem is made worse by the fact that often your employer will make that choice for you. Imagine being a young hire at your first coding job with ambitions of moving on to a career at Google after a couple of years to then be told that you are to be transferred to the COBOL/FORTRAN team where you will spend the next 2 years.

I think this is probably part of the reason that many developers are so keen to re-implement perfectly working systems in new languages. They will try and sell their boss on the benefits of technology XYZ and how it will be good for the business when really in the back of their mind they are thinking "I desperately want out of this job and XYZ would look great on my CV".

I'm 36, and you sound exactly like me when I was 31. Same situation, surrounded by a team who was on average 10 years older than myself married with children, working on mostly legacy stuff. Nobody seemed to really care much about their jobs, just wallowing in skill rot. When I was 32/33 or so I was offered to go into management.

I turned down that management offer, kicked butt where I could and got promoted to a principal engineer. It was at that point I realized I was in a dead end job, went nuts in my free time reading book after book, tutorial after tutorial... and two years later finally summoned the courage to do a Rails project pro-bono on the side for a small local marketing firm; for about 4 mos I was putting in 60-70 hour weeks between my day job and side gig.

Now I have another Rails project lined up for a NYC fashion site that pays about 15% more per hour than my day job and I've been contacted for no less than 5 full time Rails positions, one of which I interviewed for and turned down. The demand for this stack is fierce. And you know what? I'm madly head-over-heels in love with the latest and greatest the web has to offer (ie. meteor.js gives me goosebumps, and at the very least in the near term I want to do a front-end mvc project ala backbone). I'm not great - yet - but I feel like for once I'm really in the game. It's exhilarating. I feel more alive than I have since my early 20s. This NYC contract is about to be signed, and once that happens I'll be saying goodbye to the windows world altogether, join a co-working space, build a network, go to local tech meetups, etc, to ensure I have a steady stream of work. It also helps to have at least 6 mos of savings in the bank to mitigate risk.

Seriously, go thru easy/free books like Learn Python the Hard Way, Eloquent Javascript, Michael Hart's Ruby on Rails Tutorial, the tutorials on the W3C site. You should be able to do all that in a couple months, and that's probably 50% of the battle (okay - there's alot more, but once you have some foundation the rest will be much easier).

EDIT: Wanted to mention about the full time Rails positions, 3 were for small startups, 2 for larger companies. Naturally the small startups you can expect to take a pay cut if you're mostly maxxed out in your compensation in your respective area. But the 2 corporate Rails gigs the recruiters wanted to put me in at or slightly above my total compensation package at my current job (partly due to those being a mixed environment and needing someone with both C#/C++ and Rails skills).

Be careful.

"Now I have another Rails project lined up for a NYC fashion site that pays about 15% more per hour than my day job"

Contracting is vastly different than being an employee. Your employer pays considerably more than 15% more per hour for you (employer portion of taxes, portion of health insurance , etc.) As a contractor you'll be responsible for those expenses.

That 15% is not taking into account base salary (I'm including bonus + 401k matching)... it's more like 25% if you look at it that way ;). And this is a pretty entry level rate... in a year from now I know I'll be able to command at least 50-70% more.

Health insurance can be had for barely more than the cost of fuel I was using in my daily commute, which is $200/mo. Yes, I have to do my own taxes, and yes they'll be a bit more, but as a sole proprietor I can also deduct many expenses. It's pretty much a wash. I firmly believe people make a bigger deal out of this than it is, it's a fear thing.

But this is beside my point, I'm transitioning out from Windows dev, and it doesn't have to be some huge sacrifice like many make it out to be. I have a plethora of full-time work I can take in front of me if I wish, I decided the 1099 route makes more sense for me at this moment in time.

As someone who left full time about 2 years ago to do 1099 work only, I recommend you definitely work on pushing your rate up as you go. Not only do you have to account for the extra costs, it's also likely you won't always be billing 40 hours a week. I've finally gotten my rate to a point where I feel alright if I only bill 20 hours of work a week. I am working a full week, balancing programming time with managing existing clients, connecting with potential new ones, and taking time to stay involved in open source projects which have been my best marketing strategy. Also account for the fact that all time off is unpaid. My hourly rate is now about twice what I was paid as a full time employee. Good luck!
Thank you. Those are great points.

Is it weird that I love doing this stuff so much, that the simple idea that I can go work anywhere means I can go on a 2 week road trip and work while doing that is vacation enough? Granted, me from 2 years from now might have a different take. But the fact that 'work' means going into a coffee shop, staying at home with my dogs on the couch, or going into a cool co-working space and collaborate with like-minded people... it's like my whole life will become this big vacation. Because I really love writing software, it's just exhilarating. 'Work' to me is having to slave through rush-hour, deal with water cooler talk, walk into a sea of cubes in a faceless corporation, spend hours upon hours in meetings that accomplish little, then put on my headphones and pretend I'm somewhere else. The work itself is what actually takes me away from that reality.

Yep I'm right there with you, and a lot of those points are exactly why I left to do freelancing and enjoy it for the most part. I've definitely done "working trips", and I do work each day when it's best for me. That being said, the part I'm struggling with right now is how to take a real vacation. I mean like 2-3 weeks off, full disconnected. I have 3 clients I'm working with right now on an ongoing basis, and trying to find 3 weeks where I can break from all 3 (and have anything to work on when I get back) is next to impossible so far. But that's part of the challenge, and I've learned to allot time to figuring out strategies for running the business, both in drumming up work and making it a better experience for myself (hence I only end up billing 20-30 hours a week generally).
The starting point for your contract rate should be the thousands number of your salary multiplied by 1.5

i.e., if you make $50k a year, charge $75/hr. If you make $100k/year, charge $150. How much do you think an associate attorney at a law firm that makes $150k per year is billed out at? CPA? Management consultant? All of these professionals are generally billed out at a median rate of nearly $200/hr. And the top end is astronomical, like $800/hr or more.

The hardest part about software consulting/contracting is learning to say a polite "fuck off" to the people not willing to pay your price. Everything else is easy. Making some money is the easy part. Earning respect is the difficult part.

"No less than 5 offers" - CHARGE MORE MONEY. As an engineer it is your responsibility to the craft to increase the prestige and respect of the job.

First and foremost, I named my price on this contract, which will be 27 hours per week average for the first 3 months, then option to renew for another 3 months. By your metric I should have asked almost 3x as much. But I'm not charging for a principal .NET guy, I'm charging for a jr. Rails dev. Put it another way, I'm probably at 1/3 the speed of a sr. Rails dev. There will be a day... so in a way, perhaps by this scale I took a huge pay cut against the risk. More than the $$, I get tremendous amount of value from this experience. It's my first paid 1099 (well not quite, but in this space it is). I get to work with a top-notch client and design firm, and I have a very sr. guy on retainer the client pays for for my use to help out on areas I get stuck and review all my code (FWIW, he is actually the one who introduced me to this client, we worked together on the prior project as well).

I also have another client who wants me to bid shorter term work (they did offer at a rate that's 40% higher) but I told them to hold off for now because I want to get used to the new contract first and make sure I'm comfortable with the cadence.

Key point - I will consistently be raising my rate, but for now I'm making almost as much as my day job and working much less hours, and I need to get out there network, get good, etc... and the rest will come. I'm approaching this in a way that aligns with my own principles. I'm not trying to be a bottom feeder in this market. I just am getting my feet wet with a minimal portfolio and simply happy to be in a position that I can make the transition into something I'd much rather be doing.

According to this rule I should be charging around $200 / hour. I would love to be able to do that, but I think your logic is flawed. I've found that multiplying by 1 or even less actually nets you more overall income after expenses (considering you get to expense some toys like that brand new macbook pro / air, ipad, etc.) for the year.

This is in Canada though, so I'm not taking the requirement to pay for your own medical insurance into consideration.

Thank you for the advice :) . I'm already committed to a Master's (in Management of Technology), so I'm putting 80 hours a week already, but I'll probably tone it down and start on Ruby and Python and Javascript :)
Thanks for the inspiration...I was pumped after reading this since I find myself in roughly the same frame of mind. I'm in the process of wrapping up Hartl's tutorial and preparing to do my first Rails project. I am so happy to read about your excitement with the projects you're working on and your employment prospects. Congrats!
I think you may be seeing a bit of a confirmation bias. Naturally with any group of people who stick it out in one company for a long time you are going to see "lifers". These people are complacent in there careers. They know they aren't getting fired and they are happy not going anywhere. As a result these people are not naturally life long learners either.

I wouldn't use 40 something developers in a large multinational as a representative sample. As the saying go, it's easy to retain average people, it's the exceptional people it's hard to keep around for long.

Also you mentioned .NET, the .NET ecosystem and culture is notoriously corporate, and not very innovative or leading edge, again that's not to say all of .NET is like that, but a large multinational is likely to fit that model pretty well.

I'm not really sure I can agree that .NET isn't leading edge. For instance, it's been implementing dynamic language support, LINQ, and ASP.NET MVC is no slouch either.

As a framework, I'd say that it's actually pretty advanced.

What I mean is that .NET as a culture and ecosystem is not full of people who embrace leading edge. Though, since you bring it up, as far as features it still isn't leading anything, just following reasonably close to a lot of others.
Again, I disagree. It is full of people who embrace the leading edge. Just look at the IronRuby early adopters, or the folks who embraced WCF and WPF. This seems like your perception of thingS, not reality.
So, rather than update themselves and make up all that lost ground from getting too comfortable, they'll try to keep in place the old legacy systems only they can maintain.

The flip side of that problem is dealing with the bright young things of all ages who thinks it'll be a couple of weeks work to rewrite that COBOL legacy app in in Clojure/MongoDB. Y'know - the one that's been correctly doing the interest payments for the last twenty years. How hard could it be?....

Guess what's not fixed one year and £200k later... :-)

Heh, that Forte app I was talking about? Plenty of people thought it would be "easy" to replace parts of it... at least two projects failed, I succeeded replacing part of it with a .NET program (the data entry part). Every new manager thinks about replacing it, and then realize it's insane.

Now we're looking at buying a proven software package - even though its price will be in the millions of dollars, it's better than trying to build it ourselves (I estimated three million dollars for an in-house project, and a big chance of failure, most certainly not satisfying user's expectations).

This is going to sound more dramatic than it was, but here's one way of summarizing the last five years of my life:

I was 35, working at a great job as a physicist. Amazing team (I was usually the dumbest guy in the room), amazing project, but I was bored. I knew that if this didn't make me happy, I needed to get out. I read a few PG essays, caught the startup bug, and started coding in the evenings.

Within 8 months, with a brand-new daughter and another that was two, I was gone from that job, working on my own. In that 8 months I had taught myself web-dev from scratch.

I knew nothing of Ruby, HTML, CSS or JavaScript. I had a smattering of Unix knowledge and had been coding data-analysis in Python and C for a while, but the amount I had to learn was staggering. I bought tons of books, learned tons, and (luckily) had no idea how much I still had to learn.

The first startup idea (online graphing software for physicists -- I didn't exactly reach far for the idea) was a complete flop. That's okay, though. I turned to consulting for a while. Gave some talks. Wrote part of a book. Met my co-founder by consulting for him for a while.

Now, things are good. Leanpub is growing steadily, and I couldn't be happier.

The point is, that you can and should teach yourself some new skills. You're way closer to being employable than I was, that's for sure. It may take some evenings and weekends, but they'll be some of the most fun evening and weekends you ever have. Find something that you want to do and build it. Fall in love with the idea, but be ready to dump it for something better.

The market for people with even a smattering of Rails knowledge is huge. iPhone dev is bigger. or Erlang. or fancy JavaScript using Socket.IO.

Location doesn't matter. Age doesn't matter (I'm 40 now, in Vancouver, not in SV, and I bet I could find 10 jobs at the drop of a hat). My blog isn't huge. My startup hasn't had "an exit".

There are excuses, and there is getting out there and having a blast learning and making your life better.

Seems like an easy choice. Go kick some ass.

More hacker news, less flamebait submissions and flame comments, please.
This is more about risk than it is intelligence. It's the case that as most people get older, their tolerance for risk gets less and less: they pick up things like "spouses," "mortgages" and "children" which make it so that they cannot afford to work for equity/cash combinations.

I suspect this is also why you see a trend of "I don't want to work 80 hour weeks" posts bubbling up these days as well (though that could be confirmation bias) -- the initial Web2.0 generation is getting to be that age.

Sure, many software engineers are over their creative prime by the time they hit 40 and move into management, training, recruiting, etc. With 15-20 years experience in the complexities of software engineering under the belt, they are probably pretty good at it. What does that have to do with English majors?
How many English majors are still in "English" at age 40? Many of them will have exited the workforce , started their own business, changed careers, or leveled up high enough that their occupational classification the government uses changes.

Programmers do all these things, too.

I love programming. I didn't even make it to thirty as a "programmer"! (P.S. There exist lots of benefits to not calling yourself a programmer.)

I doubt many 40+ programmers are going to come out in support of this article. In cases of discrimination, you are labeled a crybaby so it's better to just stay quite. HN is mostly young and the only 40+ ones here are the type who like puzzles or in top 1 percentile of programming (e.g. patio11). For a vast majority of 40+ programmers, the reality is as grim as painted in this article.

If you are not in top 1 percentile of programming abilities, you better move to management. This is hard for someone who isn't verbally aggressive. Positions for management require X years of managing Y employees so if didn't make the move early on, you are doomed. Given that there isn't a puzzle/test type of way to rank managers, the management positions get doled out as opposed to competed for. You have to be in the shoes of a 40+ programmer who is not in top 1 percentile to know this :-(

Given that there isn't a puzzle/test type of way to rank managers

False. The test is: how much money did your team make? (For the truly crafty, the test is: how much money did your team make relative to the initial investment and risk?)

You reveal a short-termist Anglo-Capitalist bias.

This is not how good managers are assessed in other forms of capitalism or business.

Consistent long-term business growth is far more important in some, e.g. in Germanic and Scandinavian countries.

In general, you could say a good manager meets the targets that have been set by higher management, whatever they may be.

Yes, I am a manager.

You're more right than my response was. I just wanted to point out that tests for managers do exist, which was what was under dispute.
"The only 40+ ones here are ... in top 1 percentile of programming"

Thanks. (Although I do like puzzles as much as the next HN member)

While I appreciate the praise, I am likely not in the top 1% of programming ability. (People often say that I am, because I'm pretty good at written and oral communication. Take note, young impressionable HNers, because this strongly suggests reprioritizing which trees to put your talent points into.)

As to your own circumstances: there exist many clueful companies which would hire you. Find my email if you want to talk specifics. This is not a market where anyone skilled should be hurting for offers.

To add to patio11's note: I don't have as much social clout here as he, but believe me when I say that people skills (I'm lumping in various communication skills here) are way, way more important than technical skills. Reprioritizing is right. In my opinion, his success is due more to his "soft" skills; he's closer to a one-percenter [grin/duck/run] in terms of his communication skills than his technical ones.

Even so, this isn't rocket science. Just like any other skill, effective communication can be taught. Like many other pursuits, it doesn't take long to distinguish yourself just because there's so much rubbish out there.

HN is mostly young

Interesting. I wasn't aware of an age breakdown of HN readers. Could you point me to it?

Most of the people I personally know on HN are over 30... but that may be selection bias on my part :-)

Given that there isn't a puzzle/test type of way to rank managers, the management positions get doled out as opposed to competed for

That may be true of some organisations, but certainly not all. Managers get judged on a bunch of metrics in many organisations... often bad ones unfortunately (then again - so are puzzle questions for developers :-)

I know that "don't call yourself a programmer" is advice you often give. So let me ask you a question - I'm now starting a freelance company. We are 3 programmers. Right now, we build web and mobile applications for hire.

What should we be doing to "rebrand" ourselves in a way that will get us more money?

I ask this here and not in email in the hopes that your answer will help other people as well.

What should we be doing to "rebrand" ourselves in a way that will get us more money?

We solve businesses problems and, in the process, make them gobsmacking amounts of money by increasing revenue and cutting costs.

Computers and telephones are sometimes involved.

Alright. Given that, how do you find customers?

It's pretty easy for me to market us as "we do freelance programming". It's something most people that I talk to understand. I'm not sure how to market myself as a "solver of business problems".

Keep in mind we don't really know SEO that well.

I'd like to know patio11's opinion on this too, but for me, networking face-to-face with non-technical business people has done a lot to show me how valuable the basic knowledge I _do_ have is.

Though you may not think you know much about SEO or conversion, explaining the benefits that you pick up from casual reading on HN tends to bring the business cards out pretty quick.

I dunno, people who know programming know they need progammers. What kind of problems can be solved with programming, but the people don't know what programming is?
Stop talking about job titles. Stop talking about the things that you do.

Instead talk about increased ROI, more conversions, decreased support costs, better PR, etc. Talk to potential customers about their problems first. Then give them solutions to their problems.

Ideally have stories from previous customers about those areas. Stories sell much better than skill lists.

For example a while back I sent this letter (lightly edited to removed some identifying material).

<quote>

Hi $joe,

Thanks for talking to me last week about $company. From our chat it looks like your biggest problem was transitioning from startup geeks to long term customers. I think we can help.

We worked with $similar-company who had the same sort of issue reaching their long-term market. After helping them re-build their on- and off-line marketing materials their sales team saw a big increase in qualified leads, which helped them save money and focus their sales folk on some new markets. Conversions also increased significantly.

If you like I can put you in contact with their CTO and head of sales who can talk about their experiences with us.

If you'd like to talk about this further we should meet up. I could come and meet you next Friday afternoon in your offices. Drop me a line if this sounds interesting or if you have any further questions.

Cheers,

Adrian

</quote>

Note how I'm not talking about user interviews, analysing their search engine results, a new visual design, user testing, new CMS, web design, HTML5, jQuery, agile development, etc. Despite the fact that we did it all for $similar-company.

Instead I'm saying "You told me this was you're biggest problem. Look we solved it for $other-company. Here are some people you can talk to for verification. Here is what you should do next".

Find out their biggest business problems. Show them you can help them solve it. Leave out the details of how until the last possible moment.

I agree with this in theory. Here's our problem: What we're mostly looking for is customers who need to build systems, and come to use to build them. Whether it's doing it per-hour, or taking some product specification and building it.

What we aren't doing is going to companies that already have systems, and improving them. We're more focused on building products from scratch.

It's possible that the problem is with our focus - but this seems the most natural fit for us right now.

So I guess these are the questions:

1. Should we be focusing elsewhere?

2. If so, how do we find the kind of customers you're talking about?

3. If not, how do we take a customer, who's a lone guy or a company with a new product, and use the techniques above to present ourselves differently?

What we're mostly looking for is customers who need to build systems, and come to use to build them

You might find it helpful to think about your customers as people with problems that mean they have to build systems. The customer doesn't care about the "system". They care about solving the problem.

1. Should we be focusing elsewhere?

No idea. Are you finding customers for what you're offering now?

2. If so, how do we find the kind of customers you're talking about?

I think we're talking about the same customers. Or were anyway (we're in the process of moving to doing more consulting/teaching/coaching ATM since it gives us more options). We build things for people who needs things built :-)

You find customers for consultancies in the same way you find customers for software products. You need to start going to where the customers are. On-line and offline. Try adding some business meet ups to your technical ones. Listen - don't sell (at first anyway).

Talk to them. Figure out what their problems are. Solve them. Do a reasonable job. Figure out what worked and didn't. Tweak your offering. Go talk to more potential customers. Solve more problems. Do a better job. Start getting references. Repeat.

I've found the Business Model Canvas a useful tool for brainstorming ideas on my own business - looking for alternate revenue streams and markets - http://www.businessmodelgeneration.com/canvas - as ever YMMV :-)

3. If not, how do we take a customer, who's a lone guy or a company with a new product, and use the techniques above to present ourselves differently?

I don't know - how do you present yourselves now?

We're new, so everything I say here is subject to change.

We present ourselves as a software freelancing company. We ask our connections to refer people to us who need web applications built. We've also looked at something like Elance (but that targets the Israeli market, specifically). Most of our customers and potential customers were either: 1. people looking to build a new startup (or webapp), and want to outsource the development to us. 2. Freelance shops who represent customers looking to build webapps, and who are outsourcing the actual technical work to us.

We're new, so everything I say here is subject to change.

Good :-) That's the right attitude to have.

We present ourselves as a software freelancing company

To whom? Addressing individuals or organisations? Shop floor? Middle management? CEO level? What kind of project are they looking for? What kind of budgets? What kind of timescales? What do they expect during the project? Long-term or short-term relationships? Do they want to collaborate or expect you to do everything by yourself? In any particular industry?

How? Do you just have a website? A blog? In conversation? Advertising? Cold calling? References? Magazine articles? Press? Raising a personal brand or a company brand?

If you don't have answers to these sorts of questions off the top of your head you don't have a strong model of what your customers are like, and how to get yourself in front of them.

We ask our connections to refer people to us who need web applications built.

Are your connections people like you - or people like your customers? While any work is obviously good it's the references from customers that you really want to try and get. They're much more likely to be convincing to other potential customers, and to know more potential customers.

Flip it around. Whose recommendation would you trust more for a development role. Another techie or a sales guy?

We've also looked at something like Elance

The folk who go to Elance et al tend to be extremely price conscious, and often the kind of client ends up being... difficult... I steer clear of them myself. Also clients tend to think of their solutions coming from "elance" rather than from yourself. If you look how elance et al are mentioned online you'll see folk recommend "elance" not "this great company I found on elance".

I have heard of people using Elance to bootstrap themselves to a client based. They used them to explore different kinds of client, collected references and testimonials, etc. Then used those to get more work outside of the elance system. It's not something I've tried myself.

Obviously don't throw work away - but think about how it helps you in the longer term.

Most of our customers and potential customers were either: 1. people looking to build a new startup (or webapp), and want to outsource the development to us

They sound useful. How did they find you? Were they happy with what you did? Have you asked what you could have done better? Have you asked for references and testimonials?

Have you looked at your most successful projects and asked "How can we find more people like this?"

Have you thought about how to get repeat and ongoing business from these folks? Are you keeping in touch?

2. Freelance shops who represent customers looking to build webapps, and who are outsourcing the actual technical work to us

This is mostly a lousy business to be in too - since: * the freelance shops are the ones who get the biggest slice of the pie. * the freelance shop is the one that gets the recommendations and references - not you

Again, if it's helping cashflow now - don't throw work away. But think about how it helps you in the longer term.

---

I'm hoping this is coming across as vaguely constructive criticism rather than a grumpy rant ;-)

I guess if you want it wrapped up into a bite sized piece of advice it would be to: 1) Have a goal; 2) Have a plan that moves you towards that goal.

Write down a brief one page description of your ideal company. Write down a brief one page description of the clients you would need to support that company. Write down a brief one page description of the ways you would get those clients.

You may find that you can't do anything to get those clients at the moment. The market or the channels may be out of your reach for various reasons. Fair enough. Start thinking about ways to get to that market or those channels. Use that as a goal. Think about what you'd need to get there. Repeat until you find something you can try.

It's easy - especially when you start - to just j...

I think some of the reason for this is that younger people are more likely to start their programming careers with the current "cool" tools/languages whereas the older programmers will have large amounts of experience and therefor be most valuable (and able to command better salaries) maintaining software that is becoming legacy.

Take myself for example, I started doing programming seriously around 2001 when PHP/MySQL was the hot technology. This meant that I got a lot of experience quickly in a field that was high in demand for new projects. This means of course that I now have several years of PHP experience and could get a PHP job relatively easily.

However very few new cool startups etc are being built using PHP but that is not a problem since there is still plenty of PHP around, however what happens in 10-20 years when all of the PHP codebases have been retired and everything is done in NodeJS or whatever.

I will be competing for jobs with recent graduates who "came up" using Node and who will be willing to work for lower salaries. I may have more experience than them in programming but probably not in something like Node. Sure I will be able to learn these skills on my own time to an extent but probably not with the sheer enthusiasm and vigor that an 18 year old who is dreaming of making his million dollar idea could muster.

Of course there are areas like algorithms etc that do not change so much over time, but the odds are that a bright college grad will be able to remember his CS classes much more clearly than an older developer would (unless the older dev had reason to exercise those skills often during his career).

The main thing an older developer would be able to offer is Wisdom, but this is largely something for which there is not a high value placed in modern software.

same deal, started in 2001 on LAMP stack

2 years ago woke up and started exploring, Groovy, Ruby, and then, bing, penny dropped, Scala.

New life at 40 ;-)

In the end you need passion. I would be shocked if I am not coding full-time at 60, nothing grabs me more...

+1 for Scala. It's like Java on Steroids without the verbosity.
Umm.. The author is not objective. He (Norman Matloff) had long since been spouting off on H1-B and why its bad. He also found a way to work it in to the article, in the same way that he had used in the past so effectively, to scare the current programmer segment in to being worried for their jobs.

I am not saying that H1-B isnt abused, but his take on it is largely one sided, and against.

Some programmers dodge this bullet, others don't.

I know a guy who worked for UNISYS his whole life writing Macro Assembler for 360 mainframes. A few years back the state of New York found that the official printer interface for IBM mainframes wasn't fast enough to print all of the paperwork New York State sends out, so he invented a whole new printer interface.

He just retired at age 60 and he's got enough $ to have a home in upstate NY and one in Hawaii.

The trouble you do have is that as you get older you will want to get a more senior job and those do get harder to find.

So, I'm confused. What percentage of English majors are still in the "English" field by age 40? What is the English field? Outside of academia, it barely exists. Publishing? So, it's laudable to receive a general education which provides one with many opportunities in life? Great, I agree. Now, why shouldn't the same logic apply to a computer science degree? Aren't the ways CS majors learn to think easily transferred to other endeavors? Why is it not celebrated that CS degrees are so flexible that a high percentage of graduates ostensibly find ways to do what interests them, pays well etc.?
I am an English major who's over 40 with a love of programming and writing. I've only recently realized that these two passions are not mutually exclusive. Given the latter, I suppose I'm a bit of a slow learner. But on the upside, since discovering this, I'm applying more and more energy toward contributing to open source projects as a writer. I contribute as a programmer when I can, but for many, many projects improving the documentation is where the greatest benefits can be had.
"This page is not available for mobile viewing at this time."

Are you kidding me?

It said 'over capacity' before, so I'm wondering if they're having server issues on the mobile version.
Nope, still moronically broken.
Either that or programmers will have to play catch up and become fully literate.
One would think, with the story coming from Bloomberg, that they might mention that finance almost exclusively hires older programmers. Hedge funds, trading firms, and even the banks place a significant premium on expertise and are generally staffed by a much older crowd than what you'd find in Tech. (For many of the reasons you'd expect...)
I've found an easy answer to age discrimination. For the past seven+ years I have worked from home. Many of my clients and coworkers have little idea of my relatively advanced age.
The article states: "A large technology company might typically pay new law-school graduates and MBAs salaries and compensation approaching double what they give new master’s degree grads in computer science. "

But, from what I've read, those high-paying law school jobs are very few, only for the elite of the elite, and requires the new employee to work insane hours. Same for those MBAs.

I'm pretty sure that, on average, a new master's degree grad in Computer Science outperforms a typical law school graduate, and should be close or better than an MBA.

Let's Google:

http://www.nalp.org/classof2010_salpressrel

Law graduates:

"The national median salary for the Class of 2010, based on those working full-time and reporting a salary, was $63,000"

and only because of those few outliers making $160,000.

http://edition.cnn.com/2011/LIVING/06/06/paying.jobs.2011.gr...

"Computer science -- Average annual salary offer to 2011 grads: $63,017"

http://www.businessweek.com/bschools/content/sep2009/bs20090...

"PayScale's average (for starting salary MBAs) clicks in at a much more modest $66,300"

So, basically, he's wrong.

He also mentions that programmers are supposed to move up the ladder, and there are fewer upper management jobs. So obviously there's going to be unemployment for those programmers who don't get the rare slots - but that also implies that getting an English degree becomes more of a lottery ticket than a CS degree.

Do you win the upper management job and continue increasing your income over your entire career? Or do you work at McDonalds? Perhaps you'd rather be a programmer where you aren't assuming so much risk...

> But, from what I've read, those high-paying law school jobs are very few, only for the elite of the elite, and requires the new employee to work insane hours. Same for those MBAs.

My sister got a law degree and then did an internship specializing in tax law (I know). She got a job last year straight out of college (at age 25) making $130,000 at a firm that handles the tax issues when one company wants to acquire another. Among all the jobs you could have as a corporate (and especially tax) lawyer, it seemed pretty cool. One of her early projects involved a well-known entertainment company that wanted to buy another entertainment company (although the deal eventually fell through).

In recent months she's been crying a lot and wanting to quit. She works 6-7 days a week and 12+ hours a day. She's never home and has no life. She'd rather start her own restaurant, which is something that she's always had a passion for. Even if her pay were cut to 25% of what it is now for the first few years, she says she would be happier, but she's contractually stuck in this job for a minimum of 12 months (until September), so it's kind of a personal hell. Also, there's the sunk cost issue. She's already devoted 8 years of her life and $100,000 to preparing for this career, so it's hard to just walk away.

My point is, good money is rarely easy.

Many people are graduating from law school with the same amount of debt as your sister and no job. While programmers in general seem to have a better shot at getting their first job.
> My point is, good money is rarely easy.

You should ask her if she seriously talked to the partners managing her about scaling back her hours. I'm not a psychic, but I'm very certain that she hasn't actually done that. A friend of mine has a very similar story ($160k straight out of law school in NYC and hating it) and is dealing with it in a similar way (passive-aggressive complaining to friends and relatives, escapist fantasies, but hers center around travel instead of restaurateurism).

A lot of people seem to be closet masochists when it comes to work. If you tackle the issues bothering you directly you'll be surprised how easy they are to resolve, and your managers will respect you more for standing up for yourself.

Few lawyers make good money when you look at hours worked. You'd make far more in software working those hours than you will for many decades (if ever) as a lawyer.
The author definitely does a little bit of comparing the average case in engineering to the top 10-15% case in law.

That said, the tone rang true for me. I left engineering for law because I didn't want to be a 40 year-old engineer with all of the things that entails. In law the older you get the more valuable your experience makes you. You can be 70 and still practicing law. In engineering you're forced to move into management or business to give the young people a chance to fuck things up.

Max career length depends on how the young engineer sets himself up. Early in your career you want to bootstrap yourself with some hot new technology to get your foot in the door. Once you are about 3-4 years in, you need to switch gears and focus on learning the things that change slowly. Such as:

1. How to work with people (technical/non-technical)

2. More about math and general concepts of your craft, not just new language X.

3. Measuring the business effects of your work.

People are more apt to deal with a 20 something nerd with a bad attitude because he's cheap and fits the stereotype. An expensive 40 something with the same attributes will be seen as a weirdo.

Yes, I can imagine far more people wanting to hire Mark Zuckerberg than Richard Stallman.