The title of this article is pure flamebait, but I am a 41 year old former English major, and I've founded several software companies and had several hundred software engineers work for me since I co-founded my first company in 1995. I'm a little bit of a unique case, since what got me started was being hired as a research assistant for a forward-thinking biology professor who wanted me not only collecting information, analyzing it, and writing (my core specialty) but also administering a Gopher server, which turned into a web server, which became a proficiency with 1993-era web design. When I co-founded my company in 1995, I was the only one of the co-founders that really knew anything about the web. I eventually settled into the head of product role, and I've been a jack-of-all-trades product executive ever since.
So not every English major is going to have a similar backstory. But I do know this: research, organization, and strong writing skills got me where I am. It helps also that I was an engineering school dropout and I share many of the proclivities of my engineering brethren. I just decided at some point in college that I liked writing as a way of making things, and switched to English.
As other commenters have noted, no forty year old is an English major anymore. The point worth making is that receiving a good education and being ambitious, hard-working, curious, and embracing new technology is a good recipe for success. And if you think you're going to get anywhere in this new world without strong written communication skills, you're fooling yourself.
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 :-(
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.
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 :-)
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?)
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.
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".
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?
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 jump from client to client with no overall aim. I know I worked that way at the start. Which is great while you can find work. But unless you take a step back occasionally and think a bit more strategically - you're either going to stay the same, or get gutted by the next guy who comes in a bit hungrier and leaner than you are.
Have a plan. Feel free to change it every few months - but have a plan.
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.
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.
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.
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.
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.
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.
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...
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.
> 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.
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.
> 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.
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.
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.
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.
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...
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.
> Statistics show that most software developers are out of the field by age 40.
Really? What statistics? And where do these statistics show the developers going? People don't just dry up and blow away at 40. They move to managerial positions. They start their own companies. They stay in jobs longer, so while you might see fewer of them being hired, that doesn't mean they're not still working in the field.
And there are simply not many older developers to begin with. How much of this effect is the fact that there are simply many more qualified developers under 35 than there are over 40, as the field wasn't as big and not as many people were getting training 20 years ago?
This article is high on anecdotal doom and gloom and low on actual evidence. "Statistics show" is not a very convincing argument.
I think you touched on the core of the issue here. How much has the market grown on the past 20 years? Quite a lot actually. As the market grows, more people gravitate towards it as a career choice, and they are mostly young people looking for career choices. 20 years from now, those people will be seniors in a highly competitive market where solutions grow in technical complexity day after day.
The only thing certain is that things will have changed by them from what they are currently.
This would be dead-on except for he misses a key point: programming is not about programming anymore.
"Programming" in the sense he uses it is a corporate cog working in some huge technology-producing machine. That job? Sure. It leans heavily towards younger workers. Why not? Have you seen the way they treat programmers?
But the general skill of programming is not practiced in that environment much anymore. Today programming is everywhere. It's more like the way cursive writing used to be -- you won't get far without knowing it. Programming is that skill you mix into some other skill to make the whole thing better.
Programming is quickly becoming more of a necessary add-on than an end-point in itself.
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.
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.
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.
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.
This whole idea that the wisdom of an older experienced programmer isn't somehow hugely useful mystifies me. I'm at the top of my CS class in the UC system and spending this summer interning at one of the biggest Intenet companies. I'm also very comfortable in C++, Objective-C, Java, and a host of "hot" web languages.
With that said, I'm aware I truly "don't know jack" despite being one of the best in my degree program. If given the choice of hiring a new CS grad at $75k a year or an experienced developer at $150k for a startup, I'd choose the experienced developer every time. Maybe it's a product of my self education supplementary to school, but someone who has done it before(even if using something as ancient as COBOL) is the person I want to be my superstar.
I'd take the graduate at 100k/yr if he had awesome side projects that show hustle/autodidactism rather than the experienced developer at any pricepoint.
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.
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.
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.
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 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.
The author is a CS professor. Does he not enjoy CS or something? I'm not certain what his goal is with this article.
"Finally, those high programmer salaries are actually low, because the same talents (analytical and problem-solving ability, attention to detail) command much more money in other fields, such as law and finance."
This is a tricky one, because it really boils down to "it depends." I can't speak about the law sector, but my limited experience in the financial world speaks to sales guys making oodles more than the analysts or quants. Further, the high salaries come with many more hours, so the per-hour salary of a software engineer would actually be higher.
Regarding the Facebook preference for hiring young people...
The "young" developers today are those who grew up with the sorts of stacks that start-ups today are being built on. The 1.0 release of ROR was late 2005. If you were hacking away at 12 years old in 2005 then you would be 19 today!
Learning the web dev stack is a lot of effort, especially if you throw Linux in with that. Most people generally don't want to put in the time / effort to do new things. That's even more true of people who have families and busy lives.
Also, it's the web dev stack that is bringing down the barriers to entry for starting new businesses. Things like dirt cheap server resources and cloud services are even more recent than Ruby 1.0.
No wonder it's all young people! It's the young people who grew up with this stuff and who don't have to be stuffed into the old molds of work and education. For example, I'm a U.S. citizen working from the Philippines just for a change of scenery. Perhaps I could have been able to do this 10 years ago, but probably not much earlier than that.
This train is moving fast. Quit reading these articles because nobody can predict where we are going. It's getting crazy.
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.
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.
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.
This guy is so off the radar it is a wonder why he is allowed to publish this stuff.
I will just add two points.
1) Facebook, Google, and other silicon valley companies are far from the norm of software development jobs. There are far more jobs in finance, retail, and travel for engineers than the type of position he is describing.
2) Most directors, executive directors and VPs I have worked for started their careers as software engineers as a matter of fact engineering is how they developed the business knowledge to become executives.
Many software engineers will one day work for English Majors. Most English majors without a strong support network will one day work for Burger King. Not that there's anything wrong with that. Frankly, if you didn't work for Burger King at all before college, it might be worthwhile for you to work for them for a little while after, though some other gig in the food service industry is probably a better call.
I haven't always been in computer science. I actually minored in English in college, and now I'm finishing up a MS program in CS (though I've always tinkered and programmed computers).
I have a tendency, for better or worse, to constantly think about the future. I'm 26 now, and about to graduate and go to work for a well known tech company. Originally I was much more interested in starting my own company, but I spent so much time catching up in CS that I never had enough time to network at school (which I think is crucial for startup success). I could have taken a job with an existing startup, but I never found one that really clicked for me (which I also think is crucial for working at a startup). So I went with the big tech company. It helped that they offered a lot of money. But it also makes me worry.
I'm not really worried about being unemployable, like the article suggests, because I doubt I'll ever be substantially worse of a programmer than I am now. But I do worry that I've hit some sort of ceiling. I'm pretty sharp now -- will I ever be twice or three times as sharp as I am now? Probably not. Assuming my pay tracks my ability (is this a valid assumption?), my current salary at 26 may be 75% or more of my lifetime max salary. In other words, I've already peaked.
Admittedly, some people may enjoy the comfort in this, but I don't. I feel a bit like the proverbial "shark" in that if I don't keep moving, I die. I am happiest with a destination I am moving toward, and if jobs like this one turn out to feel stagnant, I'll have to quit.
But if/when that time comes, will I still be able to break into the startup scene? Will I suffer from an age bias? Will I have too many other commitments, wife/kids, mortgage, etc., so that I won't be able to risk quitting my job?
And what really scares me: is it true that after 35 your programming mettle starts to leave you?
This is obviously anecdotal evidence, but I've met a bunch of older programmers who were very good. And this is across several specializations--all the way from developing drivers to virtualization software to enterprise Java development to compilers. I suspect that, right now, by pure competence the best programmers I've met have actually been older. (And this is ignoring my professors who tend to be exceptional as well as older.)
So really, do not worry about becoming a worse programmer. Worry perhaps that younger people will be subconsciously biased against you, sure, but this is just a bias not based on reality. That said, nobody mandates startups to be started by younger people. My dad recently worked for a startup doing some very interesting low-level work (they concentrated on using SSDs to speed up servers) that got acquired by SanDisk recently. And he doesn't have a CS degree either--he got the equivalent of a Masters in Physics in Leningrad where they didn't even have CS in his time. (I gather they barely had computers at all.) And, most importantly, I've noticed that he has become much happier after working at the startup than he was while working at a bigger company (VMWare) before.
So, ultimately, all that matters is that you are a good programmer--and I imagine you are. Perhaps it will take a bit more work for you to find a job at a startup, perhaps you will sometimes encounter bias against your age, but ultimately you should be able to do whatever you like.
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...)
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?
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.
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.
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.
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.
I hate it when places like Bloomberg purport to tell me what is going to happen with the rest of my career. I will be 32 at the end of this week, and you know what? I am not stopping this programming thing anytime soon. This article is written for the people that would get into our craft based on the fact that Software Engineer was just named the top job. If you love to build, if you love to create, if you love to program then you will be fine. You set the expiration date of that, not your age.
To extend the author's logic a bit, I will change one word in a quote from the article: "Even if the 45-year-old manager making $120,000 has the right skills, 'companies would rather hire the younger workers.'"
I've worked long enough to see many middle-aged middle managers who end up unemployed for extended periods, one I know now sells real estate after being VP at a large software company. Meanwhile, I'm in my mid-forties and had a company pay to move me cross-country for my technical skills. The fact is, there are only so many management jobs and a company can just as easily put a 35-year-old in the job as a 45 or 55-year old. Also, companies are continually trying to flatten the traditional org-chart, eliminating management positions permanently and using technical talent as the first layer of management. It's getting hard out there for an English major.
I'm not trying to diminish the real bias there is against older workers. I really believe this comes from how the US health care system works. Older workers - even those who ask a lower salary - are seen as bringing up the cost of insurance for the company's group and are seen as a higher risk for long term disability. That's a reality that's skill-set agnostic and something all of us who reach 50 years of age will have to face.
A lot of people working in factories, plants and other shops undergo the same treatment with time. The issue isn't exactly with software professionals but with any job. Young blood is preferred, because they push longer for lesser money. They don't have families, they can take failure gracefully, they have tons of time to fail and recover.
As we age, we get families, we have kids, we need insurances for ourselves and family. We need to pay college fees, We need a home to settle in, we have mortgages, And then of course we always have bills to pay, food and clothes to buy. All this means everyone tries to settle down at some time. Instead of running a marathon at the speed of a sprint, we just like to push things as they are. This means we get held back, we play safe, we like to have permanent jobs.
This is what millions of people go though. They hit dead ends by 40. Because the expenses keep rising, and the corporate pay structures seem to reward only promotions on managerial levels. And if you don't get to be a manager you are basically done for! That's with every one, not just software professionals. And what remains after that is struggling to be employed based on skills which are very commonly available else where especially in a pool of people who are younger.
Clever people make their financial planning while they in 20-30. Get themselves enough cash to give themselves enough freedom to not worry about getting fired, non getting employed, being replaced, old age or never ever going to work again.
Get yourself enough money to not worry about money. Regardless of what ever profession you are in.
This article is very short sighted and tries to address an issue that cannot be solved by the tools he has.
Let's start with the title. "Software Engineers Will Work One Day for English Majors".
How about "Software Engineers Will Work One Day for someone" because those two options are basically the same except that one is flame bait.
You have two pills you can choose from: Red pill is entrepreneurship; Blue pill is salary/contract. The red pill is the only way for above title to not be true. Blue Pill means you'll be working for someone. Either pill is fine it comes down to personal preference.
Ignoring entrepreneurship (because this article isn't the place for it); the article states that by age X, we will price ourselves out of a job because the newer model is the shinier model. So you shouldn't or be aware that there is a glass ceiling when becoming an engineer.
I'm going out on a limb here but, that is the wrong way to think. You are out of a job at age X because you've been sitting on your degree for 10+ years! Go F'n learn something and demonstrate that you are better and deserve that role + salary increase. You work for that "English Major/Human/H1-B Visa" person because they worked harder than you and stole your lunch.
Here is a real solution: Create/Find/Get a master’s degree in leadership & management for people with a technical background. These technical people need the soft skills it takes to make it to the next level. Getting rid of a H1-B visa program doesn’t solve the problem; it is just a stop gap.
In the end, you just need to update and learn new valuable skills.
There's also another thing to bear in mind. I've spent most of my career in the games industry. The games industry as a whole is only about 30 years old. It's only now we're seeing programmers/artists in their 40s+. This is almost certainly true for most tech companies. Lets see how this holds in 30 years from now.
There seems to be a ton of washed-up ex-IT sorts from America and Australia in China teaching English. The bosses are Chinese teachers of English, themselves English grads, so I guess the post title is quite accurate.
In 20 years we'll see how right he is. My guess is he's dead wrong. If you look at the software development industry it's relatively new (mid 90s really) and expanding rapidly into every industry. That's producing a lot of heavy demand for software developers and if you think about it on a meta level it makes sense with so many things becoming digitized. With all this demand building up for a job that requires a certain mindset (hindering supply) I don't see this becoming a problem so long as the workforce keeps up its marketability.
As a software engineer who is a theater major, I just have two points.
1) College degrees are not vocational degrees and are not job guarantees.
2) When you talk about not being hired because you're not on top of "fad languages", what I hear is you're not being hired because you're not staying up to date in your field. I'm sure there are blogs by petroleum engineers who say they're being discriminated against because they're not up on this "fracking fad".
This doesn't have to be true. Goethe managed to stay fresh his entire life - even the poetry he wrote in his late years was seen as expanding the art form; if the mind ossifies over the years it's probably because one has grown complacent and stopped expanding, rejuvenating, overcoming oneself. A categorical statement about age is just an excuse, IMHO.
There's plenty to take offense to in this article, but perhaps it would be wise to take one implication to heart: as you progress, don't forget to improve your soft skills just as you improve your technical skills. Whatever you make of this, it would be folly to argue with the assertion that managing other people requires strong communication skills.
I'm a 25 year-old former Marine who thought he could take a shot at being a programmer when he exited the military. I never had any background in programming other than being interested in UNIX and Linux at a young age, so CS seemed like the logical choice for someone who had a GI bill to burn.
2 years and a lot of classes later, I'm realizing I'm too old to compete at this gig, and I should have started when I was 12, if I wanted to be taken seriously. The only thing I have any skill in is various computer related things, but not one thing in particular. I've developed a very basic knowledge of C++, but that's laughable really. So I'm stuck, unsure of what it is I should really be doing. I could get a dead-end part time job and continue my schooling, but it seems almost futile at this point. I was denied to the University of Florida, yes the school that recently killed-off their CS department in favor of Football funding. It was the top school in the state, but they wouldn't accept my transfer because I'm only now up to the Calculus 1 and Physics level (rightfully so I guess, that was my mistake). Being that I could only take those classes now, it would probably be another year at least, to get to where I could actually transfer to a real university. The only reason I've been able to do this is because of the GI bill that's been granted to me because of my time in the service, but that's running out and I don't have anything to show for it. Other than a General AA, which probably wasn't worth my time - despite planning ahead.
I keep reading stories and anecdotes about how this field is going, and I'm starting to become very unsure if it's something I need to stick with to prevail, or whether it's already too late. I can't find anyone that will tell me the truth - just those that placate with notions of "you can do anything you're just not trying hard enough," despite my 15 hour course-load. From my perspective it seems like CS is an unattainable feat unless you're fresh out of high school at the age of 17 with several dual-enrolled college courses under your belt. The competition is outrageous. Don't you think I want skills that are worth someone's money?
I read about how people with experience with Java, C++, C, C# and so fourth, at least having the ability to put multiple languages on their resume, can't find employment because they haven't done a formal project or haven't been a part of, and accepted, within the OSS community. This frightens me because my skill level is nowhere near where it needs to be to do this, and I highly doubt how much I can persevere with the time that I have left.
I used to open up my IDE with the prospect of learning new things and freshness being able to develop a more solid understanding of what I thought I could do for a living. While I finish out the courses I'm still in, it would appear now, as I reflect, that I'm only doing it to pass the course now, as my delusions of grandeur have faded.
Edit: Wow. Thanks for all your input. This will give me a better objective view to reassess my path. Again, thanks.
> 2 years and a lot of classes later, I'm realizing I'm too old to compete at this gig
No, you're not. You have the wrong teachers and wrong texts. In the contrary to what popular posts say, it takes a long time, years, to be a good programmer. You need to be able to be self-critic, completely change the way you do things. Many times.
Pick a decent open source project in something you find interesting. The harder and lower level, the better. Don't be afraid, there's always somewhere you can start. Join their irc channel and email lists. Help with documentation and test cases. They'll be more than happy to mentor you. And switch projects if you are not moving forward for a while.
Also spend a couple of hours a week on StackOverflow, reading and asking questions. Be polite and do your homework before asking. You'd be surprised how many people are happy to help you for free.
IMHO, most universities suck at making you a competent programmer.
Programming is a lot more about stamina and leaving your ego behind than fads and blogs, or universities. Your military background is a good start. Programming/CS is a lot about self-discipline.
Edit: Open a github account and start coding/forking. This might help you find employment more than experience listed on a CV
I like your support because you gave me some very clear goals to work with. I will consider doing all of them.
What I'm struggling with now, since I'm still an lower-division undergrad trying to make my way into a BS program, is do I continue on and persue this - perhaps getting a meaningless part time job in the meantime to supplement my income? Or, do I just go full speed ahead and try and apply for some very entry level IT work. I have no idea what I'm doing in the civilian sector despite my getting out 2 years go - I've only been a full time college student since. Perhaps I'm just rambling because I need answers to these questions, but you seem salty, and wise. Thanks for your help.
Well, the competition is outrageous at the top end of programming jobs, also bear in mind that you are reading HN where many of the commentators are above average programmers who dream in code. However just because you might not land a job at Google does not mean you will not be able to create a decent career for yourself.
If you can get any experience working on OSS at all, especially on a reasonably well known project (not all of these are hugely technical, so you don't necessarily have to be some ninja guru). This will already put you ahead of the pack,many programmers use OSS but few actually contribute. You will also have the advantage that you will be able to work on real code and possibly get some mentoring which will help build your confidence.
Also bear in mind that as a former Marine you will have experience in areas that the overwhelming majority of programmers do not. Even if these do not seem directly relevant it can sometimes be surprising where you may be able to find a niche.
For example you might want to also consider looking into the IT/Operations side of computing (running datacenters etc), I would imagine that a military level of organizational skills as well as being able to deal with pressure would be very useful there.
I know plenty of competent programmers who did not start when they were 12.
Having previous military experience definitely helps get your foot in the door at all the military contractors as well. Often times when developing new features we don't have the benefit of really having a good idea of what the soldier wants. Putting myself in their shoes is tough to do without that experience and having an expert can really allow us to develop features that get used. Also, if you had or have held a security clearance that can carry some weight at the defense contractors as well.
Thank you for your input. I'm not sure how to get into the Operation side of things, I might have to inquire with a career counselor about that path, if it's an avenue that I can take.
I'm aware that my time in is worth something, as I did obtain rank that probably looks decent, but I'm slightly edgy as to how it will be received. (I was an infantry Sgt.) Some have some derogatory views of how we are and I'm reticent to mention too much. (Everyone thinks you have PTSD despite studies)
One way to get into operations (albeit not a pleasant one) is through helpdesk jobs. These are typically repetitive and low paid but if you can get in with the right company and prove aptitude there is often a concrete career path.
It is important to get in with the right company though as many helpdesks are basically outsourced to the lowest bidder and end up being dead end script reading jobs (done those myself, do not recommend).
One company that might be worth looking at would be Rackspace (they host the website for the British Army so I would assume they are not anti-military) they are also a pretty large and growing company.
Another option would be to work with a small web dev shop. Usually they are not looking for uber-coders but for people who can produce consistent work on time.
Also Linux knowledge (if you also know your way around Apache) tends to be very useful to these guys as they may be so small that they don't have a full time sysadmin on staff and are constantly being frustrated by the slow response times of their hosting providers support staff.
Former Marine infantry corporal here -- I think lbo's advice to you is outstanding. He/she wrote:
"Anyway, don't defeat yourself and don't underestimate how critical this knowledge will be in 10, 15, 25 years when the world will be a whole new place filled with much much more software."
Maintaining a long term perspective is key. The skills you are seeking will only rise in value in the coming years as computing becomes more and more ubiquitous and distributed. Maintain the mindset you have at the beginning of a 20k hike with crew-serve weapons and full packs.
You are 25, technically oriented/interested, and you're a former grunt NCO. As long as you stay healthy and avoid stepping in front of a bus you will be working for decades to come. You may feel old, but in the big scheme of things you are not.
I understand your problem is short term money. Have you considered working for a year with DynCorp or Xe as a security contractor? You could have 125,000 after a year and could keep coding when you're inside the wire. With that financial cushion things could be smoother.
I read your story and I see someone who is full-time kicking ass to fulfill a true personal passion.
I see you've got various doubts. One small suggestion: when you say things like "I'm too old to compete at this gig" ask yourself if there is specific actual convincing evidence for that, or if you're just grappling with some near-term depressive thoughts. (Also, try gathering evidence for the opposite argument: That you'll compete well with your professional colleagues.)
I hope that didn't sound condescending. I definitely don't have any psychological training, just my .02. Having watched this industry for a while, I can assure you many of the people you think you're competing with will come and go with the business cycle and with real-world work challenges. People who really want to do it stick around through various bubbles and tend to do very well for themselves.
I thought there was? I mean, I keep reading about the age bias of hiring someone cheap at 18 or fresh out of college at 23, and that seems like a deathly blow to my success probability. I'm 25 now, so if I continued on the same path I'm on today, I would be starting out at 28.
This may seem like another one of those trite responses you mentioned, but I would second the notion that "you can do anything you put your mind to" and that you should keep up the program, or at least keep learning CS on your own. If you look to put degree notches on your belt and list languages you know on your resume, you're looking at things the wrong way. Build things! Get excited about what you can build--anything! The more CS you know, the faster you can learn more. If you want to be inspired by some of the applications out there for your talents, try taking one of the awesome free courses at Udacity (or Coursera) and add Python to your list of known languages while you're at it. You can do them at your own pace (I would lump together 3 or 4 classes and just muscle through them when I had a free weekend) and learn from some of the smartest teachers out there.
Even in an elite university, programming isn't something that's taught to you. You teach it to yourself by doing and digging. What university can do is give some structure to what material you get through and ensure a higher level understanding of some of the concepts (and it's probably a better environment for learning the math and statistics that are useful for any computer scientist).
Anyway, don't defeat yourself and don't underestimate how critical this knowledge will be in 10, 15, 25 years when the world will be a whole new place filled with much much more software. The human mind is incredibly plastic and with the proper enthusiasm can be melded to serve nearly any purpose :)
I agree with you, and I would love to actually have the time to dedicate to such a focus. What ends up happening in reality, however, is the tradeoff between having a roof over your head, and learning. I'm not sure I'm well versed enough yet at being a civilian worker, and still having enough time to dedicate to learning what it is I want to know.
In other words, I look at your post and thing "YES, Great! I would love to do all those things!," when I come back down to reality and realize that I'll need to spend the majority of my time making slightly more than minimum wage to support myself, just to have a place to sleep. While some learning can be accomplished in the downtime, we both know it can't be done as fast or as efficiently as a full-time student's dedication.
Some jobs are better suited to learning than others. Whether it's working at a public library, being a night-shift security guard, or any other job that would allow you access to a computer (having persistent internet isn't even necessary). What you can get away with is different at different jobs. If you're motivated, you'd be amazed how much you can learn on top of having a full time job--often much more than the average full-time student absorbs. Are you leaning more toward redirecting your learning toward something you can pick up more easily or toward giving up on higher education in general?
Yeah, the glamour goes quick, that's for sure. But when it goes it reveals the bones of the thing, and that can be good. A fast learner and thorough problem solver will find work in programming, IMHO, competition be damned.
Personally, I didn't learn very much in my college CS studies (incidentally, I was also in Marine Corps ROTC at the time at VA Tech). My cofounder, who studied at UCLA, whistles a very different tune, but I don't think his education has been a determining factor in his success as a programmer. I think that for me, the missing impetus was money: once coding became about a paycheck and an actual customer, that's when I began to love it. Pure theory just doesn't turn me on. You might consider that what you're lacking isn't education, but motivation: find a good problem to solve, and fill in the blanks of your skills from there.
All this to say, starting at a young age is not the sole determining factor of success in programming, and having a CS degree may not get you where you want to go. Recommendation: if it's possible for you financially, apply to a startup whose mission you find compelling, lie brazenly on your résumé, and take the risk of being fired.
Perhaps, try an alternate method of learning. Drop the course load, and instead think of some ideas that you really want to see happen (doesn't matter how trivial, or whether it has already been done). Then go make it happen.
Along the way you will definitely learn what you need to, and it should be a fun and rewarding journey. Using the free resources available on the internet, you may also pick up quite a bit of CS fundamentals and theory along the way, as well as see their practical application. When you show these hobby projects to potential future employers, your passion and motivation will definitely stand out, no matter how amateur the final result actually turned out.
It is scary to stray from the standard curriculum, and wing it. Who knows how things will turn out, what if you are doing things the "wrong" way, and you won't even have a piece of paper to show for it at the end. But that really is the most important difference between someone starting at age 12, and someone starting at 25 - the freedom to explore.
The truth is, programming is honestly not so hard. It just seems that way to you because it's so easy to convince yourself of that. I want to emphatically remind you that it's not. You have to believe that it's not hard before you can get good at it.
And it doesn't help that programming courses, like much of school, sometimes suck the excitement and imagination right out of you while simultaneously instilling fear.
Forget that, and just start coding. Anything! It really doesn't matter what. The only way to get good it programming is to program a lot. It doesn't matter if what you make is good, well-written, useful to anybody (even yourself), etc. Find something interesting to you for whatever reason, and just start programming--start now and don't stop--and you will become proficient way faster than you realize is possible.
I would absolutely love to dedicate the time to doing this the way I think, and know, it should be done (I taught myself html, javascript, early css when I was 11 because I thought it was fun, like everyone else my age probably... but I remember how it felt in comparison with what I'm doing now, and I know that teaching yourself through sheer passion was far more fruitful and entertaining.) Unfortunately, time ends up being the most precious commodity, and I'm not sure I've learned how to juggle that properly and still maintain a roof over my head, yet.
Everyone around me totally out classed and outsmarted me. I made friends with a guy who was freelancing on the side for a local company. I offered to help him in exchange for some tips and help. He said yes. I learned a bunch of front end stuff, and took on some freelance work of my own. One of my projects impressed a local company I met at an event and that turned into a full time job doing Android Development. I got called by one of my 4.0 classmates just last week asking if I could help them find an internship. It's funny how these things works.
Hang in there man, keep your head down and don't be afraid to ask for help. Its a hell of a lot more attainable than you think.
Just another story: I got my CS degree in '81 and I've been doing Unix sysadmin for almost thirty years. I always emphasize automation; right now we're moving our configuration to puppet. A couple years after I took my current gig, I was recognized as an irreplaceable single point of failure, and we looked for someone to share the knowledge. We hired an ex-Navy guy 10 years older than me. Why? He was the the only interview who claimed to know how to program. Picking him was the best decision I've made in this job, because he's self motivated and keeps learning, right along with me.
It seems like you're kind of a jack of all trades. This is an awesome skill-set to have while working in a datacenter. Call it IT/dev-ops whatever.
The tech field isn't restricted to just people that code for a living.
I would ignore Norman Matloff. Some 15-20 years ago he wrote a series of articles claiming that H1-Bs, outsourcing etc would kill off the careers of all US programmers. That didn't happen as far as I can tell.
Personally, I wouldn't be focused too much on university and your age doesn't matter a whole lot. While a degree in CS is a nice feather in your cap, I've interviewed (and unfortunately had to work with) people who had the right credentials on paper, but couldn't program their way out of a wet paper bag. IMHO, there's only two things you need: passion and aptitude. If you lack either or both, perhaps being a programmer isn't the right career choice for you.
I initially did start out with Zed Shaw's book when I got out, but I was inevitably channeled into C++ because that's all colleges teach here. I guess they're a bit behind the power-curve, as always.
Why would I work for one day for somebody with an English degree? Or did he mean to say "Software Engineers Will One Day Work for English Majors"?
Not that I'm worried either way. I'm a Software Engineer with a degree in International Relations and Chinese Language, which will probably be more valuable than an English degree.
I couldn't agree more: as a self-employed software engineer with degrees in literature and psychology, I am living proof that now (not one day, right now) programmers are working for liberal arts "managers" ;-)
At what point, in that repetitive myth that keeps getting recycled, do the english majors start taking over? They don't. And they won't. And I want my time back.
In this case you cannot really look at current practices and predict the future. For many of us in the "new programmer" category now, we will see an exponentially increasing lifespan as well as several other improved aspects of health and intelligence. In the limit, this may lead to age having almost no meaning.
Besides, English Majors?! I dare say that english shouldn't even be a major. A great academic in any field should be articulate in expressing ideas, in at least one language.
"A great academic in any field should be articulate in expressing ideas, in at least one language."
The idea that English departments exist primarily to produce skilled writers is a misconception. 'English' as an academic field is the study of English-language literature, and it's as serious and rigorous as any other field in the humanities.
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.
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.
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.
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.
"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 :-)
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.
> 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.
"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.
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.
"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.
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."
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 :-)
"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.
> 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.
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.
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.
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'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).
"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!
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.
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!
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 :)
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.
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".
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).
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.
A vast, vast minority of the whole are early adopters. How many .NET shops actually use IronRuby or even F#.
Besides, I'm not sure what's so leading edge about bringing Ruby to .NET. Ruby is 10 years old and Java has had an implementation for much longer. I also have no idea what is leading edge about WCF (or WPF for that matter) though I really like the work Glenn Block has done recently for WCF and much of it is arguably very cutting edge REST stuff, so there are certainly exceptions, but they are just that exceptions.
If you're point is that MS shops are quick to embrace MS christened technologies, well that is relatively speaking true. However MS is often well behind the technology curve of even the .NET open source community (monorail predates MVC significantly) and generally speaking even further behind the ecosystems outside of .NET.
Bottom line, I see no evidence to support a claim that .NET development supports a significant culture of early adopters.
That's OK, because I don't see any evidence to support a claim that .NET development does not support a significant culture of early adopters :-)
My point wasn't actually that Microsoft shops embrace Microsoft products quickly. You said that .NET doesn't have a vibrant ecosystem, but in the same breath mentioned that Monorail was implemented well before Microsoft created ASP.NET MVC. Ecosystem does not necessarily mean "vendor supplied", if anything a healthy software development ecosystem allows for alternative modules and frameworks. You have sort of proven my point :-)
As for IronRuby and F#, you seem to be asking a question to prove your point that very few people have adopted these technologies. For myself, I guess I'm not sure either - I would be curious to see if these technologies have been adopted by many .NET developers.
Also, you are contradicting yourself a little about the WCF technology. You can't say that there is no real cutting edge stuff being done, but then state that there is cutting edge work being done on REST, but that it's just an exception. "Cutting edge", by definition, is exceptional...
As to whether there are many early adopters: I guess we'll agree to disagree!
I'm contradicting nothing. Saying that .NET is largely a culture of old-school thinking, isn't the same is saying it's all that way. Relative to the overall software development community it has always been a good few steps behind and lacked in true support and adoption of open source culture and the benefits it brings. While more recently this has started to change for Microsoft, many have seen moves like Nuget as undermining open source through taking over fledgling projects rather than simply supporting them.
While the .NET open source eco-system is arguably decent, you've completely ignored two implied, but obvious points. The open source eco-systems outside of .NET are much, much stronger and people outside of .NET embrace open source, and leading edge far more easily.
That's really the whole argument and you've said nothing to contradict it, but feel free to ignore it. As a former contributor to Nancy and one of the rare .NET devs who's contributed a patch or two to almost every .NET project on Github I've used, I feel pretty comfortable making these observations.
Whoa, peace! I haven't ignored your points, only disagreed with them. I agree that the .NET open source ecosystems are probably not as "strong" as other frameworks, but this doesn't mean that they aren't doing interesting or leading edge things.
Agreed that people outside of .NET embrace open source more easily, but disagree that they don't embrace leading edge technologies. As an example, when LINQ was released, it was widely taken up.
Where I'm disagreeing with you was in your statement "the .NET ecosystem and culture is notoriously corporate, and not very innovative or leading edge". It may well be a framework loved by corporations ("notorious" is an emotive term with no substance), but you haven't proven to me that they don't innovate or that the ecosystem or culture is not leading edge. I appreciate you've committed to .NET projects, which is awesome, but argument through authority isn't really anything to disprove what I've said!
Sorry if you feel that I've ignored your points, but I raised LINQ as just one example, you dismissed Microsoft's embracement of dynamic languages in the framework and WPF and WCF aren't innovative apparently. Like I say, we can agree to disagree!
Edit: I've reread the thread, and I can see the bone of contention. My fault here: I talked merely about the leading edge technologies, whereas I was objecting more to the assertion that there was little or a minority of innovation. Of course, I didn't actually state that so the discussion went on a bit of a tangent. Sorry about that!
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.
The element of truth in this article is that wisdom is not only not valued by many companies' management, it is actively despised. What they want from a software developer is a cog in a machine, not someone who has enough wisdom to to see how things would be much better if over the long term fundamental changes were made.
After years of doing the same stupid things year after year without ever thinking very deeply (due to such thinking being of no value in that environment), the cog gets burned out, slow, and stupid, and is then easily replaced with a younger cog.
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.
So not every English major is going to have a similar backstory. But I do know this: research, organization, and strong writing skills got me where I am. It helps also that I was an engineering school dropout and I share many of the proclivities of my engineering brethren. I just decided at some point in college that I liked writing as a way of making things, and switched to English.
As other commenters have noted, no forty year old is an English major anymore. The point worth making is that receiving a good education and being ambitious, hard-working, curious, and embracing new technology is a good recipe for success. And if you think you're going to get anywhere in this new world without strong written communication skills, you're fooling yourself.