Ask HN: Career advice for a developer with 10+ years experience
I've been a professional software engineer for 12 years now, the last few years and positions considered "senior". Most of my background is C++ but in my spare time the last 3 or 4 years I've been doing a lot of web work using PHP, Javascript, Python.
I recently took a break to work on my own startup which hasn't taken off. This will be the 3rd time I've quit a job to work on a business which hasn't quite worked out.
It's time to start looking for work again, however I am having trouble deciding where I should focus. Should I stick to my tried and true (though somewhat rusty right now) C++ skills, or move on and make the commitment to web? I don't have much trouble picking up new skills so I'm always open to new ideas as well.
Anyone else been in a similar situation?
I have my concerns about getting too old in this industry (I'm early 30's right now) which tends to favor new college grads. My ultimate goal it to run my own business though I do need to pay the bills as well.
Overall, I feel my thoughts about what to do going round and around in circles so I've come here for help. Any advice or comments people can share with me would be greatly appreciated.
26 comments
[ 3.2 ms ] story [ 53.7 ms ] threadif you can't even get one freelancing work, then consider it as you don't have exposure skills
if you can't complete a taken work, then you have to improve your skills
I'd prefer to work with a startup or small company on something exciting. Learn some new skills and possibly be part of something big.
[1] https://news.ycombinator.com/item?id=6350201
I talked to a friend who works at Twitter (he is 37) and he told me it's not a "college graduate world" as some depict it, he said most people he works with are around his age (which was very encouraging for me).
Here in Atlanta there are tons of Sr. Java jobs, both enterprise and startups, at least based on the recruiter spam I get in LinkedIn.
When you say "too old in this industry" which industry are you talking about? SV? Web Startups (Ruby / Python / Node)? Gaming? Mobile? perhaps for these you are right. But for the companies I listed above, or any enterprise company in the country, your age is just about right, and your experience years are in demand. Again, don't know about C++ specifically, but if you had 10 years of Java, you would have easily landed multiple offers from various good companies around the country, at least this is what me and people I talk to in the Java community seem to experience.
I don't know if it's C++ that is different, but the "if you are 30+ then your career is over" situation is not something I see even close to the reality at least here in Atlanta.
Hope it encourages you a bit.
P.s. If you want to increase your spectrum of possible jobs, I recommend learning "less cool" technologies, like Java EE 7, Spring, Hibernate, or if you need to choose between Haskell / Go or Scala, go with Scala, it will be perhaps less cutting edge, but will give you much more job opportunities. Also learning Hadoop, Storm, MongoDB will make your resume look very attractive. Also you should pick up good github projects that show you are full stack, do some AngularJS projects, write a jQuery plugin, the jobs offers will follow (I got more than a few solely based on some nonsense plugins I wrote in github that look as if I know what I'm doing)
YMMV, all based on my very subjective experience here in Atlanta...
I understand what you're saying about the "less cool" technologies but they don't interest me. The whole point is to guide my career down a path that is more enjoyable and fulfilling so doing something like that seems a step backwards. I appreciate the advice though, thanks!
Scala is a good example I think, if you like Ruby, Erlang, Haskell, or even F# / C#, it might grow on you the way it did on me. Some say it's a complex language, I don't see it as such (coming from Java) I see it as a typed Ruby, with pattern matching copied from Haskell, and concurrency system copied from Erlang. With 100% Java interoperabilty. Cool enough for me...
it's both fun to work with, high performance, and still considered pretty cool in most parts. It's the only language that can be used enthusiastically by both a bank and a SV startup (and the academia) using the same philosophy and methodology. It's the peace maker language.
I know, Go, Haskell, Lua, Clojure, Rust, Julia, Nimrod are much more on the hype spot, but hypes come and go, and you end up choosing what technology you both enjoy using, and that has a job pool. For me it's Scala currently, can change any time.
You are definitely not too old to continue to do development but it seems like you would like to move on from that.
I don't understand it...the best architects I know remain excellent developers writing some code. It's like graduating from the chef to become a waiter.
I don't equate being in a solution architect role to not writing any code or being a bad developer. It actually takes a much broader skill set to do a solution architect's role. The best solution architects have reasonably high communication skills, strong understanding of business drivers and are able to articulate well to non technical people and most important see technology as one cog in a business rather the be all and end all. These are not skills that any typical developer will necessarily have.
The term is also abused a little bit but in major corporations it has a lot of weight. I would also say that just like any role, there are the best and worst people doing it.
The reason I mentioned it is that for people who still have a strong love for technology but don't want to be relegated to being a developer when they are much, much older (and frankly who want more advancement) the solution/enterprise architect seems to be a good fit.
For me, I'd prefer to stick to development as this helps my side projects and potential businesses more. Then again, if I moved "up the ladder" as it were, there may be more opportunities I'm simply unaware of as a developer? Thanks for your insight.
Hell, I'm one of them...my job title is application/solution architect and I spend most of my time doing exactly what you said above.
I agree with what you're saying. My main point is that what I've seen (and even heard from people I'm interviewing) is that they want to become an architect to move away from code and graduate into another position. I think your point of needing a broader skill set is important because in my mind, architects are excellent at their old job, continue to do portions of that job and also gain the other skills (communication, change management, evangelizing)...but I don't see everyone understanding that.
There is a good demand for C++ programmers in financial hubs. In Europe, this is London. I see 20+ jobs being posted every week for senior C++ developers. I'm guessing Wall Street will have similar requirements. Game development is also an option, but at your age/experience, I don't recommend that industry. Of course there are other companies that require C++, my last job was making a portable (Mac, Linux, Windows, iOS and Android) music streaming library with custom DRM. You will find these 'odd' jobs with C++ requirements less frequently but can be a good option.
So, that's C++. Now about focusing on something else. It really depends on your goals/life. If you prefer a startup type company, then yes, node.js/ruby/Python are your best bets to get a job at those (doesn't mean Haskell or Scala won't get you a job) but if you prefer a more enterprise company (which there is nothing wrong, I do, since I have a small boy at home and really value the work/life balance I get) you should probably focus on either Java or C#. There are tons of jobs around for these technologies (in Europe, C# seems more in demand than Java, no idea on your location).
If you want, you can also always learn Obj-C or Java(Android). Mobile developers seem to be in hot demand right now and it can be something completely different from what you are used to do (which can be a good or bad thing depending on how you feel about learning)
Technologies aside, if your 10 years experience really brought you to Senior level (I've met folks that seemed to have just repeated the same year 10 times) I don't think you will have a problem finding a Senior role in whatever tech you choose. I started with C, moved to C++, then C#, Ruby/Rails, Obj-C. Even though I don't have 10 years experience with each of those, I easily found a job for senior developer (actually, I got a few interviews and got offers from all, from Sony to a big financial firm in London and small start upsas well.)
If you have any questions or just want to chat about your situation, shoot me an email (email on profile).
Also you mention games, well I worked in the games industry for 4 years when I was younger! Did my time, enjoyed it, but won't go back now :)
I am completely unsuited to large enterprises. I started out my career that way and hated it. Recently went back to a large corporation job and only lasted 6 weeks before I had to quit.
I guess my original post wasn't so clear either. I have no problem getting requests for interviews and the like, get loads every day. My issue is making the choice of where to focus my career. Do I get back into C++ to earn some good money doing something I already know? Do I truly commit to new web tech and join a smaller startup? Or something different like freelance while working on (yet another) business?
I'm tired of trying to make this choice because there are so many pros and cons for each! I understand no-one can do it for me but it's nice to get other peoples views. Thanks again.
I wouldn't worry too much about age. If anything you can move to a management role, lay back, relax and save your mental energy for your side projects and next big idea.
Do you really consider moving into management a relaxing role you can lay back in? Often my managers have seem more stressed and tend to do all the boring work and meetings. They tend to work extra hours too leaving less time for side projects.
I have done something similar and learnt a great deal. The biggest lesson I learnt is to sell before you build. If you can't get enough people excited to buy your product don't build.
I agree on selling before you build. I keep failing and one common themes is not having customers before going full time. Lesson learned!
Perhaps the way how you approached your own startup was wrong. Why quit job entirely rather than develop some network of freelancers and outsource time consuming tasks to them? It will increase costs, but also greatly reduce overall risk.
On my first Startup I made the mistake of going full time with no steady income. In hindsight, I should have maintained a lower steady income instead of having no steady income. With no income, I effectively put a limitation on my ability to work the Startup full time. Unless the Startup gains traction, you eventually run out of money and end up back at square one (or square zero depending on the situation).
Some people may be in really good positions that afford them the opportunity to work on their Startup full time and not have to worry about income. That's great for them, but for everyone else, it's 90 hour work weeks.