Ask HN: Going back to programming
I was a web programmer in the first four years of my career; however then I thought I could make more money doing things like project management and spent the next ten years pushing paper.
I've done a couple of side projects in the meantime as the thought of going back to programming has kept coming back. I even attempted to do a SaaS startup but failed to get any traction.
Anyways, at this point I'm sick of pushing paper and want to go programming full-time. A few things are holding me back though: * I can't leverage the last 10 years of my career; it would basically become a lost decade for me * my technical skills are rusty; I'd have to most likely get a huge pay cut and start at a junior-level position * I think recruiters are going to give me a weird look, meaning I'd most likely have to overcome additional barriers when seeking a job
So far all of the above is speculation on my part as I really don't know what I would be getting into. I'd appreciate honest opinions going either way as I have to choose my moves wisely, having a family and all.
58 comments
[ 0.34 ms ] story [ 121 ms ] threadIt is not something the author should care about, because it's very new with uncertain future. Most likely he will find a job on some typical Java codebase(standard approach to concurrency problems).
If you try to go the tired old route of handing your resume to a recruiter, of course you're going to face ageism.
I don't even have that much stuff on the web and I often get emails about what my rates are for freelance work.
So, do some projects, make sure you really love programming, try to pick up some side work, then eventually you'll find someone who wants to give you a full time job. If you're talented and good you can do this no problem. We are in strong demand right now.
If you go the tired route of resume spamming you're more likely to be glossed over unless you've got something really, really impressive on there.
Most importantly, make sure you enjoy programming, then everything else will fall into place. Good luck!
I had to seek for a new job, and i had the very same doubts: am i too old? Will recruiters understand my position and meanings or will they consider me just incapable of long-term commitments? Do i have a chance in the current tech market?
Well, this is what happened: One evening i said "Fuck it" and started to apply for open positions. Companies started to call the very next morning. I had my first interview in less than 24hrs. In less than 2 weeks i had a new career. So, given that i know nothing about your situation/environment, i suggest you to just try and see what feedback you get. You don't really have to abandon your current job while searching and interviewing. In general there are a lot of opportunities as a programmer.
Explaining the reversal is easy ... you followed the traditional promotion track and after too many years of drudgery, you realized your true passion is the technology. Forward looking companies will now have a technical promotion track and you won't hit a ceiling like the stodgy older companies. At one point, I hired a newly-graduated MBA (at half my salary) to do the paperwork parts of my job and made sure I was viewed as a "technical manager".
I don't believe there's nothing you've learned that you couldn't apply to programming (not to mention software/application design).
I've applied concepts I've learned in biology class to programming! Also, a lot about programming is management, too: managing memory, managing data, managing workers, threads; just to name a few. Nothing we do in life is a lost to us! :-)
> * my technical skills are rusty
Well, programming is like any other language. If you don't use it, it will start to decay, but you'll never completely forget it. So, it should be relatively easy (with the right motivation), to catch back up, and then pick up from there.
> * I think recruiters are going to give me a weird look
Well, I can't speak for anyone else (maybe I just have weird beliefs), but I don't see why anyone would give you a weird look. The only thing deserving of a weird look is your statement!
> I'd like to get opinions on whether going back to programming as a career in my late 30s is a good idea or not.
I don't think anyone can give you an answer to this question, but you yourself. You should probably try to get into it slowly, without disrupting your current career and if you're comfortable with it, make two sets of lists: one set about personal pros and cons (did you enjoy it? was it more stressful? do you think you're good at it?) and an objective one (do you estimate your current job pays better? is it more convenient? in which job are you more productive?).
I know this whole comment sounds like a "maybe," but you're the one whose opinions matters the most. :-D
While you are right, i believe he is also right saying he can't leverage the last 10 years. His experience will be useful, but when applying to positions this won't make a difference. Companies hiring developers look for a very precise set of skills (This lang+That Lang+This DB+That pattern+etc...) and while his last 10 years might be a plus in particular cases, most of recruiters will just ignore them (especially if they are from the HR team).
I don't think it is a good idea to throw away all of your experience as a project manager. It seems to me you would do best to look for a hybrid position. Find a job where you would do some project management and some programming.
I'd look for a job at a small company, where their developers are used to wearing a lot of hats and don't require a full blown project manager. A place where the company could benefit from some reorganization as well as a programmer who can provide support to other devs by helping put out fires, put in code hours on projects falling behind schedule, and maybe build some prototypes.
Regarding recent coding skills, this is not an insurmountable problem. Retraining of skills is something I've had to do a lot of times over the last 25 years that I've been doing programming. The way you overcome this problem is: 1) look at what kind of job you want. 2) Do independent work that you can show off to recruiters and developers as a point of discussion. So, for example, a few years ago, I wanted to get a job working with Hadoop. I did a bunch of things with it so I could show and discuss it. Before that, I wanted to get a job working with C#.
Even developers who have been coding every day still need to retrain themselves to stay relevant for more than a few years. You can do it if you want to: go get em!
- do not look "programming" as an end, just as a tool to accomplish an objective.
- do not focus on recruiters, focus on what really motivates you and see which companies/startups can benefit from your skills and motivation, then write them directly.
- Having an updated programming background is good, even better if you can show in an open source way what you have done or what you are able to do. I mean with this open a github account and start having fun.
- Does not matter what you will do next, its important you refresh your programming skills now .
- Listen to your intuition.
If you are focused on getting remunerative work, you can do it. Just keep in mind you might have to abandon the status you enjoyed at other jobs.
Your product management skills might make you an exceptionally good freelancer or consultant.
BTW, by legal/HR definition any job which can be taught in such time (within 4-6-8 weeks) is 'unskilled labour' - i.e., the same type of job as flipping burgers, driving deliveries and digging dithes; every job requires some skill and gets better with experience, but if you can do the job after 6 weeks, then that explains a lot about that job position...
Also, equating new developers, no matter how n00b-like or inexperienced, to burger-flippers is an attitude that is pretty unfortunate and insulting, and if I ever sniffed that out in a company I'd avoid them even if interviewing for a senior role. Company culture is important, and you can tell a lot about a business by how they treat their least experienced people.
I said I can't believe someone would state this ... because it naively misses the obvious bubble nature of what's going on. ... Yes it may be a free for all, any poli sci major can get a programming job ... we have seen that movie before. There was also a time when there free money everywhere get a loan for, get an ARM for your house no big deal ...
But if I said "hey guys, the banks are now giving money for free, we should get on it" ... It may be the case in the future that there is a stretch of time where that is true ... But any sensible person would have the reaction I had. Just being honest.
You should check out my school, http://hackreactor.com -- we've had several students that fit your profile. If you take a couple of months to get rid of the rust, you can reenter at a high salary in a senior role.
Right now though, I actually miss managing, in the sense that I enjoyed being in the tech lead/CTO position, and leveraging the combined talent of an excellent team. You may want to shoot for that sort of position, once you get your skillset as an "individual contributor" up to where it needs to be. It would seem somewhat self-defeating to spin your 10 years as "pushing paper", when you could presumably call it "leading a team to victory" or at least avoiding abject defeat.
The truth is, a combo of tech skill and social awareness enough to herd cats is a very valuable thing in our industry, I wouldn't throw it away due to frustration or boredom.
Also, do some personal FOSS projects and get your github account looking active.
God sent flaming hail, blood red Nile, grasshoppers, raining frogs, pharaoh did not listen, so God killed people and they still did not listen, so He parted the sea and they escaped.
Organizations often have issues with different departments communicating. If you have experience in both, that can be a big asset.
so keep that in mind and just go for it. get a job and start doing it, and deal with the pay cut. it's not really a big deal. i took a pay cut when i started my business... you just kind of get used to it.
http://www.youtube.com/watch?v=UF8uR6Z6KLc
I was in a similar position you are in and it really resonated with me.
"Remembering that I'll be dead soon is the most important tool I've ever encountered to help me make the big choices in life. Because almost everything — all external expectations, all pride, all fear of embarrassment or failure - these things just fall away in the face of death, leaving only what is truly important. Remembering that you are going to die is the best way I know to avoid the trap of thinking you have something to lose. You are already naked. There is no reason not to follow your heart."
I think you have a couple of options:
1. "Write off" the last decade, and leap into a junior-level position as a developer
2. Start learning new technologies & contributing to open-source projects in your spare time. Build up your "coding muscle", and then get hired into a mixed development/management role (e.g. Engineering Manager; Lead Developer)
A suggestion: don't go back into web programming. Go for a less mature, lessy clubby, better-paid, higher-growth segment, where the difference between a guru and a novice is closer to 2 years than to 5 years. Data engineering (Hadoop, Storm, R, pandas, Spark, Incanter, Pentaho, Mahout) is a great example of this.
Good luck! And if you want to contribute to open source data projects, we'd love to get your help at Snowplow :-)
PS it took me a ton of time to get up to speed - I laugh at 'become a programmer in six weeks'.
And don't worry about corps and recruiters. Focus on a problem you want to solve, and update your skills in the context of learning what you need to know to solve that problem. If you can leverage your industry experience in the problem domain, even better.
Data is driving everything so developing a data analysis/machine learning skillset will put you into any industry you want. Professor Yaser Abu-Mostafa's "Learning From Data" is a gem of a course that helps you see the physics underpinning the learning (metaphorically of course -- ML is mostly vectors, matrices, linear algebra and such). The course videos are online for free (http://work.caltech.edu/telecourse.html), and you can get the corresponding book on Amazon -- it's short (http://www.amazon.com/Learning-From-Data-Yaser-Abu-Mostafa/d...).
Python is a good general purpose language for getting back in the groove. It's used for everything, from server-side scripting to Web dev to machine learning, and everywhere in between. "Coding the Matrix" (https://www.coursera.org/course/matrix, http://codingthematrix.com/) is an online course by Prof Philip Klein that teaches you linear algebra in Python so it pairs well with "Learning from Data".
Clojure (http://clojure.org/) and Go (http://golang.org/) are two emerging languages. Both are elegantly designed with good concurrency models (concurrency is becoming increasingly important in the multicore world). Rich Hickey is the author Clojure -- watch his talks to understand the philosophy behind the design (http://www.infoq.com/author/Rich-Hickey). "Simple Made Easy" (http://www.infoq.com/presentations/Simple-Made-Easy) is one of those talks everyone should see. It will change the way you think.
Knowing your way around a cloud platform is essential these days. Amazon Web Services (AWS) has ruled the space for some time, but last year Google opened its gates (https://cloud.google.com/). Its high-performance cloud platform is based on Google search, and learning how to rev its engines will be a valuable thing. Relative few have had time to explore its depths so it's a platform you could jump from.
Hadoop MapReduce (https://hadoop.apache.org/, http://www.cloudera.com, http://hortonworks.com/) has been the dominant data processing framework the last few years, and Hadoop has become almost synonymous with the term "Big Data". Hadoop is like the Big Data operating system, and true to its name, Hadoop is big and bulky and slow. However, there is a new framework on the scene that's true to its name. Spark (http://spark.incubator.apache.org/) is small and nimb...
I'd also recommend, as some alternatives:
* Ruby as an alternative "general purpose language"
* Mongo as an alternative swiss army database
* Backbone + Marionette as an alternative front-end JS framework
* CoffeeScript as a better Javascript syntax