Ask HN: starting a career in software dev in my thirties, am I nuts?
I am technically minded, I did my first degree in Elec. Eng, which I finished in 2000, and was exposed to some programming.
I spent 5 unfulfilling years in tech support at a big global company, then went travelling for a few years, then came back and did a software degree in 8 months at the age of 30 (due to the fact that I already had exposure, they allowed me to skip some credits). I came out with a high 2nd class honours from this, which I felt was pretty good considering the amount I had to learn.
Since I graduated in 2008, I opted not to jump into the first job that came my way, and instead started studying Ruby on Rails, jQuery, and more recently BDD with Rspec and Cucumber, as well as working on some projects and building wordpress sites in between for a little extra cash. The idea was that this time around I would get work that interested me instead of going through the motions.
Recently I've been looking for employment, and haven't been successful, although feel as though I have come close once or twice.
Still, I'm starting to get a sinking feeling. I don't have enough experience to get started, and I can't get started without experience. It's starting to get me down a bit. I'm 33 now, and I need to start my career already.
I would love to know what insight you guys have for me in this situation.
cheers
Paul
Horsepuckey. Can you FizzBuzz? If so, you're experienced enough to get a job as a developer. What you need to work on is not your programming ability -- that is what professional experience is for -- but your competence at marketing yourself.
You will probably not be hired to fill a hole labeled "I need a developer who does RoR, jQuery, Rspec, and Cucumber." First, most of the people who need exactly that skillset don't have the budget to hire anybody. (No offense to present company who may use exactly that skillset.) Second, most developers start with semi-relevant experience and gradually learn more about the stack their current job (or project at the job) involves. I was a Big Freaking Java Web Apps dev for 3 years and I started not knowing SQL, Spring, etc etc. That was fine -- it just meant my first several months involved doing an awful lot of iterating over hashmaps (java.util.* is my second home) when not reading code and tutorials.
Now, in terms of marketing yourself:
1) Make stuff you can show off. This distinguishes you from the 90 out of 100 candidates who are incapable of making stuff. Making stuff is the core developer competency. (Actually, it might be #2 after communication skills.)
2) Polish your communication skills. See #1.
3) Start networking. "Send a resume and pray" is jobseeking for people who enjoy unemployment. Know the decisionmaker beforehand. There are a variety of ways you can get started on this today -- for example, start writing a blog about the kinds of problems you have solved or will eventually solve for the kinds of people who will hire you. This gives you something to talk about. Alternatively, talk about what other people are writing in the same field. This has a long payoff timescale but the rewards can be fantastic.
Also, don't neglect traditional networking: business cards, meeting people face-to-face in your local community, etc etc.
We have hired people who did this to us. People who are extremely, pointedly, relentlessly interested in working for your team are much more attractive than job ad respondants.
Two came from emailing the contact address on our website; one through a referral from a mutual friend.
Actually; one of them came from a conversation about whether their company and ours could work together, which weirdly morphed into us offering him a job. Thank goodness for no NDAs/non-competes!
If gaming is really a dev's passion, they should already have compelling work they've done on their own, a substantial portfolio, some contacts developed, etc. If not, it's probably an unrealistic flight of fancy, and it should be recognized as such and discarded.
If, however, you want to be a SysAdmin, or otherwise work on boring back end bullshit, my experience has been that if you don't mind being part of a department nobody listens to or cares about, game companies are good places to break into the industry (or to earn more than you would be worth elsewhere.) It's frustrating because you clearly have little autonomy or power, and management knows just about jack about ops work, and god help you if you interfere with a game's release schedule, but eh, the pay is good relative to the skill expected, and they are willing to hire people who are worse or less experienced than average, mostly because they don't know any better.
I am always so surprised when I hear that, and have a difficult time believing that's true. With only an extremely beginner's level understanding of Python, I can solve FizzBuzz. Can I get a dev job?
I didn't know what fizzbuzz is until I read about it on wikipedia. But I frequently run into "web developers" that don't how sessions work or how cookies work and don't understand what CSS does. But i figured it was just these guys who give programmers a bad name. I had no idea it was really that bad and extends to the basics of programming.
I know modulus isn't necessary, but I can see someone not doing the problem if the solution they are turning in is in a less elegant way.
If you prefer, you can substitute a similar problem which doesn't require even fourth grade math. Here's one: write a program which calculates the sum of all numbers between 1 and 1,000 whose digits sum up to 7. Or write a program which takes this post as input and tells me what the 3rd most common letter used was.
My Python answer:
Anyone have improvements on that?(I used the range (1, 1000) as opposed to [1, 1000], but it doesn't make a difference since the edge values don't have digits that sum to 7.)
And frankly I'm not sure if its faster to convert to string and back to int, or if it would be better to just use modulo arithmitic to get the values associated with the ones/tens/hundreds.
In any case, what you have is certainly readable though.
I'm going for 'a'.
And, according to http://en.wikipedia.org/wiki/File:English_letter_frequency_(... (via http://en.wikipedia.org/wiki/Letter_frequency) your four most frequently used letters match the table for English.
Tested in Python 2.7:
Edit: See my later response for something using the 'collections' module.And no, I don't feel sorry for people like this. Despite their glaring incompetence they still manage to snow people into hiring them. Some of them easily make $500,000/year and up if they remora themselves to the underbelly of a large company and emit horrible VB code.
edit: definitely broad strokes
> Make stuff you can show off.
if you have a good portfolio and can convince someone to look at it, they will care much less about your experience, grades, etc..
Failing that, if worst comes to worst get income support (if that's what your country has) and/or a part time job and create a startup... At the very least a startup is an awesome resume piece to show prospected employers.
Maybe I've been hanging around here too long but my first thought in response was "you probably don't". As in, you probably don't need to add more features before you start plugging, MVP and all that. :)
Add what Patrick wrote above and try to review your situation in this ligth.
While I cannot remember the syntax off the top of my head, I am pretty sure I could write out how to do this in BASIC. I have not had a programming course in 22 years. Maybe there is hope for me.
Having said that, I think we have an innate tendency to... acclimatize as we get older. We start to expect that things should come easier. You'll need to counter that if you continue this path. Expect it to be very hard- on the learning side and the self-marketing side and the delivering value to your employer or own business...- and deal with that reality instead of assuming that the difficulty is somehow related to your age or self confidence or how long it took before you got whatever degree etc. etc. Step up.
My advice would be to get a related job in a shop that uses a similar set of technologies and has programmers on staff. Keep working on your skill set, and get some mentoring from an experienced programmer.
Another avenue I would recommend is to work on a high-quality open source project to get some experience under your belt.
I've had a great time doing software work, but the first year or 2 I was doing it were frustrating for the number of things I still did not know how to do. It is a little bit amazing how many different things you have to know to be good at it.
Anyway, my own experience is that it can be done. Of course, 2010 is a tough time to be starting in any career at all. You did not mention which country you are in, but from the way you talk about your schooling, I assume you are in the USA. The recession has been intense in the USA, see this chart: http://calculatedriskimages.blogspot.com/2010/07/employment-...
One change I've noticed in the tech industry since 2005 is there is a much bigger interest in knowing frameworks, rather than simply a computer language. Maybe 10 years ago a person could say "I know Java" or "I know PHP" but nowadays its more like "I know Spring, Hibernate, Grails" or "I know Symfony, CodeIgniter, Drupal". So my advice is to pick a specialty.
Never too late, and frankly I think you've done good getting grounded in things like BDD/TDD. There are people I know with 10-15 years of development experience that don't know about TDD, much less use it. It's not a silver bullet, but I think demonstrates a lot of forward thinking.
Have you considered just being an independent service provider? Looking for 'employment' isn't going to necessarily get you all that much more than you'd get if you got your own short term contracts. At the same time, different people have different needs - perhaps you have some need for 'employment' in the traditional sense?
I'm sensing some independence though - travelling for years, went back to school - jumping in to a new arena - etc. You may not fit well in most traditional employment situations.
How are you making money right now? How are you getting by? Are you doing any web work for hire? Could you do more? Does that not appeal to you?
As for getting into it... glad to hear you've had some success with interviews. My biggest bit of advice to you is to get your hands on a good data structures and algorithms book (Java is fine), and learn the crap out of it. Since you like programming, you'll enjoy this, and it'll help you in interviews and as a programmer. In particular, make sure you know:
linked lists binary trees (be able to code insert, traverse, find on the spot; read about delete but don't worry so much about keeping it all in your head) sorting (quicksort, mergesort, maybe a few others) read about balanced trees, b-trees, etc, follow and try out the code, but don't worry about keeping it in your head Hashmaps (what's a hashing function, how to keep good performance) Graphs are fun, and once you can code trees, you have all the tech skills, but the algorithms in graphs are very interesting... and now and then does come up in an interview. SQL - I still get asked about this a lot... know the basic stuff (select, conditions, joins) cold, and also make sure you know some of the grouping functions (HAVING) and how outer joins work. Anything more elaborate will get you points, but probably won't hurt you if you don't know the answer.
Personally, I find it slightly obnoxious that interviewers rely so heavily on this stuff, but it is actually kind of fun. I always review this carefully before an interview. It can make the difference (in fact, I'm pretty sure I missed out on a job because I let it get stale and fumbled around too much... it's a shame, if I'd spent my usual 8 hours preparing, I probably would have rocked it).
It's a lot to learn, but it sounds like you enjoy this anyway.
One other thing... to get experience, try taking on a small software project for your current employer. Once you've done it, you'll have "official" experience. Sounds like I started in a similar spot to you (math major with some CS coursework), so I had to work a little harder to convince employers I could write code. I think EE would probably put you in a pretty good spot, so you really just need to convince them of this thorough those technical screens (which is why I so strongly recommend you read up on data structures).
Also to the OP: this book is good, and a must read. It will help you a lot on the fundamentals of CS. http://www.amazon.com/Algorithm-Design-Manual-Steve-Skiena/d...
you're not nuts :) I studied Civil Engineering at university, and then faffed around for the next 10 years because I didn't know what I wanted to do. I discovered my passion for programming at the age of 32 through the initial Ruby on Rails podcast. Unfortunately I couldn't program at all at the time, had never knowingly used unix and so spent the next 2 years teaching myself most evenings after putting the kids to bed.
The key thing for me actually landing a job was through meeting up with a local programmer. I'd discovered his blog, realised he was local and arranged to meet up with him for a beer. He told me that there was a Ruby User Group in town and so I plucked up the courage and went to the next meeting - it was great! At the third or fourth meeting heard through a fellow attendee that the company he worked at was looking for rails programmers. Two interviews later and I was employed.
I'm not a world class programmer. But I consider myself very fortunate to have discovered my passion at what seemed to me at the time so late in life. Many people never do.
And getting a paycheck as a result of that passion is better than a kick in the teeth ;)
All the best mate.
As I see it you have a few options:
1. Create something meaningful, on your own, and publish it. Having some applications even when they do not generate revenue, can act as your experience. It will certainly help in marketing yourself.
2. Consider starting in another role in a software company, like Quality Assurance, then try to moving into a developer role for the company.
#2 most important thing to understand: people-networking is important, though you probably know that by now. The rub is that #1 has a tendency to prevent #2. It's good to work hard and program and make stuff, but don't neglect to tell people about it and find other people who share your interests. Without them, you'll never learn about the good jobs because you'll be lost in the sea of recruiters and contract jobs.
So no, you are not nuts. Life isn't a race.
As other people have said, put some stuff up to showcase what you're capable of. If you work on a side project that you can demonstrate to people and possibly get some revenue (or at least public recognition) from it'll help improve your personal brand, which in turn will make it easier for you to get hired, providing the jobs are around in your area.
However, the truth is 30 is not young for an entry level developer. Most 30 year-olds are accustom to a higher income than a 22 year-old CS grad, and this might make some employers adverse.
Keep pounding the pavement. With your engineering background you should be able to find a good job. It might take some time in this job market, but keep at it, and try to pickup some freelance to pad your resume.
Having some familiarity with both fields, entry level programmers in the United States routinely make twice (or more) what L1 tech support workers get.
Eric
I also came from a technical background, Mech. and Elec. Eng, and didn't really start programming until about 6.5 years ago. But I was deadly serious about it and about being the best, even if I didn't have a CS degree. I immersed myself.
About 2 years ago, I was able to quit engineering and go full-time. Now I run a web development consultancy that has a great team, and I'm writing articles that even get picked up by Ruby Inside (thanks perterc!). I'm even in the process of contributing back to both Rails and jQuery core.
I talk to a lot of people looking to dive into software development because they can't find technical cofounders. I think this is the right approach, but they all seem to have this mindset that they'll never be a real programmer, in that they ask me how in the world they can get started and simply not suck. Not sucking is one thing, but being great is where it's at. Do the latter, and you'll always land on your feet.
Sounds to me like you probably have bucket loads of experience compared against a recent grad. You've held down a job, traveled, went to school twice. Your current skill-set includes a lot of soft skills (people skills) that many experienced developers lack. I'd suggest putting that foot forward.
See the pattern? Get a development job doing whatever you can. Hack on stuff, build it, then try to move up.
Key is, Web Based software, IMO, is a show and tell type profession. Like carpentry the emphasis is on what you can do, what projects you have built, rather then degrees, age etc ...hope that helps...
I'm 34, and have a job with Java technologies that pays the bills, but I can't help to hack small projects after hours. I often feel that I need to escape that 'sinking' feeling, so I'm trying to build my own small business right now.
If you review other posts here on HN, you will notice a pattern of people which feel on a crisis around our age. It's common. But it's not the end of the world. You are not old, and you've proven to have the will to keep going forward, so just keep trying. Best wishes!
If I saw this kind of drive I would (and have in the past) overlooked people's actual experience. Someone with a go-to attitude and very eager to increase their skills will always do well in an interview with me.
Good luck and don't let the current job market bring you down - it'll happen sooner than later.
Try to get a programming job in the industry you worked in. Domain experience matters.
Don't correlate your age with where you think you should be in life.
When I finished grad school I subtracted 10 years from my chronological age and declared it my career age. I picked 10 b/c that's the difference in years between my graduate and undergraduate degrees.
Nowadays, when I get hung up on where I think I should be in life (office, better salary, etc), I think how I'd feel if I were my career age. From that perspective, I always come out ahead.
You are normal. Go for it.
Sure, it's easier to pick things up when you're younger. Yes, you remember more of what you learned in your teens vs. 20s and 20s vs 30s. That's just the way the mind ages. But people learn new things at every decade of life. Your 30s are still a great time to learn. You'll be an expert by the time you're 40 if you stay with it.
No, no..that's not universally true. Don't let yourself to be affected by this concept. You can get employed without formal experience, some bigger companies also hire newbies. You will just get lower salary.
I'm also 33 years old, and let me tell you, getting a break in this business at 33 with not much professional experience is very, very difficult. By 33 you're expected to have around ten years experience in the relevant technologies/application domains. At least 3 or 4 are pretty much requird for even a so-called "entry level" position. Companies are willing to cut you a break if you're fresh out of college, less so if you're not.
Your best bet is to move to either the SF Bay area or the Boston area. There you are more likely to find hiring managers who don't care about the bullshit HR filters and do care about what you can actually do and what your interests and motivations are.
Outside of that, good luck to you.
what got me back into programming..my A.A.S. 2 year degree is in accounting and Computer Science..my time at Purdue University was in Molecular Biology was that I started building computer applications while at Purdue University.
Once you get something built and start showing it to people..someone shows up sooner or later with a job offer.
also what helps ..show off your projects here at HN..
Your are not nuts.
So Paul if you could build any Ruby on Rails Application what RoR application would you build?
Side Note: In fact all my successful interviews involved me showing something that I built.