Software Engineers Will Work One Day For English Majors
bloomberg.com
bloomberg.com
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.
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.)
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 :-(
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?)
This is not how good managers are assessed in other forms of capitalism or business.
Consistent long-term business growth is far more important in some, e.g. in Germanic and Scandinavian countries.
In general, you could say a good manager meets the targets that have been set by higher management, whatever they may be.
Yes, I am a manager.
Thanks. (Although I do like puzzles as much as the next HN member)
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.
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 :-)
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.
We solve businesses problems and, in the process, make them gobsmacking amounts of money by increasing revenue and cutting costs.
Computers and telephones are sometimes involved.
It's pretty easy for me to market us as "we do freelance programming". It's something most people that I talk to understand. I'm not sure how to market myself as a "solver of business problems".
Keep in mind we don't really know SEO that well.
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.
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.
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?
You might find it helpful to think about your customers as people with problems that mean they have to build systems. The customer doesn't care about the "system". They care about solving the problem.
1. Should we be focusing elsewhere?
No idea. Are you finding customers for what you're offering now?
2. If so, how do we find the kind of customers you're talking about?
I think we're talking about the same customers. Or were anyway (we're in the process of moving to doing more consulting/teaching/coaching ATM since it gives us more options). We build things for people who needs things built :-)
You find customers for consultancies in the same way you find customers for software products. You need to start going to where the customers are. On-line and offline. Try adding some business meet ups to your technical ones. Listen - don't sell (at first anyway).
Talk to them. Figure out what their problems are. Solve them. Do a reasonable job. Figure out what worked and didn't. Tweak your offering. Go talk to more potential customers. Solve more problems. Do a better job. Start getting references. Repeat.
I've found the Business Model Canvas a useful tool for brainstorming ideas on my own business - looking for alternate revenue streams and markets - http://www.businessmodelgeneration.com/canvas - as ever YMMV :-)
3. If not, how do we take a customer, who's a lone guy or a company with a new product, and use the techniques above to present ourselves differently?
I don't know - how do you present yourselves now?
We 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.
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.
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.
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.
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 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.
It took my a day to find out that ListView's do not work.
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.
http://www.google.com/events/io/2010/sessions/world-of-listv...
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.
But, from what I've read, those high-paying law school jobs are very few, only for the elite of the elite, and requires the new employee to work insane hours. Same for those MBAs.
I'm pretty sure that, on average, a new master's degree grad in Computer Science outperforms a typical law school graduate, and should be close or better than an MBA.
Let's Google:
http://www.nalp.org/classof2010_salpressrel
Law graduates:
"The national median salary for the Class of 2010, based on those working full-time and reporting a salary, was $63,000"
and only because of those few outliers making $160,000.
http://edition.cnn.com/2011/LIVING/06/06/paying.jobs.2011.gr...
"Computer science -- Average annual salary offer to 2011 grads: $63,017"
http://www.businessweek.com/bschools/content/sep2009/bs20090...
"PayScale's average (for starting salary MBAs) clicks in at a much more modest $66,300"
So, basically, he's wrong.
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...
My sister got a law degree and then did an internship specializing in tax law (I know). She got a job last year straight out of college (at age 25) making $130,000 at a firm that handles the tax issues when one company wants to acquire another. Among all the jobs you could have as a corporate (and especially tax) lawyer, it seemed pretty cool. One of her early projects involved a well-known entertainment company that wanted to buy another entertainment company (although the deal eventually fell through).
In recent months she's been crying a lot and wanting to quit. She works 6-7 days a week and 12+ hours a day. She's never home and has no life. She'd rather start her own restaurant, which is something that she's always had a passion for. Even if her pay were cut to 25% of what it is now for the first few years, she says she would be happier, but she's contractually stuck in this job for a minimum of 12 months (until September), so it's kind of a personal hell. Also, there's the sunk cost issue. She's already devoted 8 years of her life and $100,000 to preparing for this career, so it's hard to just walk away.
My point is, good money is rarely easy.
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.
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.
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.
The only thing certain is that things will have changed by them from what they are currently.
"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.
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.
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.
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.
2 years ago woke up and started exploring, Groovy, Ruby, and then, bing, penny dropped, Scala.
New life at 40 ;-)
In the end you need passion. I would be shocked if I am not coding full-time at 60, nothing grabs me more...
I am not saying that H1-B isnt abused, but his take on it is largely one sided, and against.
http://heather.cs.ucdavis.edu/h1b.html
He really does see the H1-B as some sort of Ragnarok for the American programmer.
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.
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.
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.
"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.
"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.
http://www.indeed.com/salary/q-Financial-Analyst-l-New-York,...
http://www.indeed.com/salary?q1=software+engineer&l1=sun...
http://www.indeed.com/salary?q1=quant&l1=new+york+city (note that a quant is typically a phd-only position and comes with crazy hours)
http://www.indeed.com/salary?q1=fixed+income+sales&l1=ne...
According to this data I was mistaken about sales vs quants, but I wonder if this factors in bonuses (which would be significant for the latter two)?
The programmer at GS who was accused of taking their code (and later acquitted) was on at least $400k, although I can't remember the exact figure.
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.
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 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.
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?
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.
Not exactly, but your expenses rise to a level where a programming job doesn't mach up to it.
And the manager who doesn't know a grain as much as you will be making more than you.
If this is really true then where do they all go? There's only so many seats for managers and architects.
Trust me, there are a lot of us.
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
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?
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.
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.
And the banks. And defence. And aerospace. And factories. And.... well... lots of other places. IBM started selling the 1400 series in 1960 for Pete's sake!
The industry was obviously a lot smaller then - but it was well past the pure academic/military phase by that point.
The first home console game - http://en.wikipedia.org/wiki/Magnavox_Odyssey was launched in 1972 - although I guess the Magnavox wouldn't really classify as a computer :-)
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'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.
This is ridiculous.
Many people can't seem to grasp the differences in ways a computer could be used, and lump it all in with "data entry".
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.
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.
Are you kidding me?
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".
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.
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
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.
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.
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)
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.
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.
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.
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.
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 :)
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.
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 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.
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.
"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'm not writing this not as someone who's "made it", but as someone who will.
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.
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.
Wow, really? Is that what non-coders think coding is? Do people really think "coding" is non creative?
I'm not sure the OP understands that fact.
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.
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.
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.
Me, at 40 years old: "Just wait. You'll see."
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.
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.
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.
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.
Oh dear god yes. Masterful experience for engineers.
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.
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 :-)
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.
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 :-)
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.
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.
Frankly I find it incomprehensible that any CS degree doesn't at least cover using declarative, functional and OO languages.... but it seems to be common.
I'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.
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.
The problem isn't that people weren't learning new stuff. Everybody knew the newer languages - how else would they know they wanted to use them?
Unfortunately, not everybody can drop everything and re-implement a large system in a trendy new language.
By reading blog posts and articles about new 'hotness'. I often want to use something without having previously used it.
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.
"John refuses to switch the project to MongoDB. They're too old and complacent."
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.
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.
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 :-)
I hate to say it, but all Bloomberg editors seem to miss making the point in the title.
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.
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.
Also what's old is new again but just done in different mediums.
The truth is, while it doesn't get that much mentally harder to learn new technologies, it is very hard psychologically.
For someone used to a large paycheck, to being the go-to guy in the technology and set in their 9-to-5 ways, to get out of their comfort zone, and admit that what they know is no longer relevant is scary as hell, especially for those with families.
So, rather than update themselves and make up all that lost ground from getting too comfortable, they'll try to keep in place the old legacy systems only they can maintain.
I got caught in that trap too, one of my main responsibilities is maintaining a Forte 4GL system ( http://en.wikipedia.org/wiki/Forte_4GL ).
While I've kept myself relatively up to date, it was on Microsoft .NET technology only, and I'm still a few years behind. I wanted to supplement my income, and took a look at the online marketplace, and it confirmed what Hacker News was already showing me: my skills are useless, I don't know Ruby, Javascript, the open source stacks, Amazon Web Services or anything currently relevant and in demand.
I can either try to switch into management, or accept I'm obsolete and take a large pay cut (or try to improve myself on the side, probably by trying to do a startup) if I want to stay relevant.
I'm much happier this way than I ever would have been in a managerial role that I never wanted.
As long as I'm solving problems, facing challenges and feeling relevant, I don't believe I need to be the one doing the coding :)
I can see .Net sticking around for a while in one form or anther. Also AWS really isn't that complicated (at least from what I have used which is only really S3). Just think of it as another layer of abstraction around your Filesystem (FTP/Rsync with bells). You can figure S3 out in a few hours and I can't imagine EC2 being much more difficult if you're already familiar with Unix.
I think the crux of the problem here though is that you take a risk whenever you devote any significant time to learning a specific technology as to whether it will still be relevant in a few years.
This problem is made worse by the fact that often your employer will make that choice for you. Imagine being a young hire at your first coding job with ambitions of moving on to a career at Google after a couple of years to then be told that you are to be transferred to the COBOL/FORTRAN team where you will spend the next 2 years.
I think this is probably part of the reason that many developers are so keen to re-implement perfectly working systems in new languages. They will try and sell their boss on the benefits of technology XYZ and how it will be good for the business when really in the back of their mind they are thinking "I desperately want out of this job and XYZ would look great on my CV".
I 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.
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.
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.
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.
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.
This is in Canada though, so I'm not taking the requirement to pay for your own medical insurance into consideration.
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.
As a framework, I'd say that it's actually pretty advanced.
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.
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!
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.
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!
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... :-)
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 was 35, working at a great job as a physicist. Amazing team (I was usually the dumbest guy in the room), amazing project, but I was bored. I knew that if this didn't make me happy, I needed to get out. I read a few PG essays, caught the startup bug, and started coding in the evenings.
Within 8 months, with a brand-new daughter and another that was two, I was gone from that job, working on my own. In that 8 months I had taught myself web-dev from scratch.
I knew nothing of Ruby, HTML, CSS or JavaScript. I had a smattering of Unix knowledge and had been coding data-analysis in Python and C for a while, but the amount I had to learn was staggering. I bought tons of books, learned tons, and (luckily) had no idea how much I still had to learn.
The first startup idea (online graphing software for physicists -- I didn't exactly reach far for the idea) was a complete flop. That's okay, though. I turned to consulting for a while. Gave some talks. Wrote part of a book. Met my co-founder by consulting for him for a while.
Now, things are good. Leanpub is growing steadily, and I couldn't be happier.
The point is, that you can and should teach yourself some new skills. You're way closer to being employable than I was, that's for sure. It may take some evenings and weekends, but they'll be some of the most fun evening and weekends you ever have. Find something that you want to do and build it. Fall in love with the idea, but be ready to dump it for something better.
The market for people with even a smattering of Rails knowledge is huge. iPhone dev is bigger. or Erlang. or fancy JavaScript using Socket.IO.
Location doesn't matter. Age doesn't matter (I'm 40 now, in Vancouver, not in SV, and I bet I could find 10 jobs at the drop of a hat). My blog isn't huge. My startup hasn't had "an exit".
There are excuses, and there is getting out there and having a blast learning and making your life better.
Seems like an easy choice. Go kick some ass.
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.