Ask HN: Is 30 too old to start in software engineering or CS?
I read a lot about age bias and the emphasis on youth in the software industry, but I have no real context for it. I'm 25 right now and I graduated from college and am working, but I'm kicking myself for not majoring in CS (especially b/c I was at a school with a great CS program). I took an intro CS class my senior year, loved and excelled in it, and have taught myself quite a bit online. I'm thinking about going back to school so I can have a few years to really dive into all these CS concepts and learn them back and front. That said, I'm nervous about committing to a multi-year degree program if I'm just going to be too old to get hired anywhere. Is 25 even too old to get started? Would 30 be too old? (likely age after another 4 year degree).
59 comments
[ 0.22 ms ] story [ 70.5 ms ] threadYou may find that when you get out of school, you don't find a lot of resonance interviewing with 20-something year olds at startups, but contrary to what it seems like here, those people are the vast minority.
It's also entirely possible that after finishing up a degree in CS you find that you don't want to actually work as a professional programmer. That's also fine (it's hard to tell what you might still find interesting in 4 years, and hopefully a big part of your education will be in gaining exposure to things you might not have otherwise thought about).
I'd say if you find CS interesting, and have the ability to pursue a CS education (which not everyone does), than go for it.
Unless you want to be a bonafide computer scientist (i.e. working towards a career in academia or otherwise pushing the boundaries of current knowledge of the field), it seems like pursuing a second degree may do little else but exacerbate the age concerns you're already having.
In my opinion you'd be better off starting somewhere as a junior programmer now and honing your craft on the job (as you'd have to do after finishing your degree anyway).
Many masters programs are what one of my professors calls "mercinary-masters". Their job is to bring in money in exchange for a piece of paper. You're taught by adjuncts, you take courses that are watered down from the courses that undergraduates take, some of the professors might not even have degrees related to computer science, etc. Your purpose is to subsidise the undergrads and PhD students and the main criteria for admission is whether they think you can get passing remarks to get the degree.
The US News rankings are for doctoral programs, not masters. The rankings are formulated very simplistically via a survey asking people, "how good is the program at School X". So, they aren't such a good source. Plus, with your background, some schools aren't going to want you. That isn't a dig at you - you're re-training and some schools only do PhDs (with masters for those who drop out) and other schools don't do conversion-style masters.
If you have more specific questions, I might be able to help. Still, the best advice I can give is to make sure that you're not getting segregated off into a special class of cash-cow masters students who are being given a watered-down experience in exchange for money. It's easy to look through course catalogs and who teaches the courses you'll be taking and look at the professor web pages and see where you're getting someone brought on board to teach a course and where you're getting faculty.
Edit: not that the parent post was implying that such programs should be avoided, bit it is common advice.
I'm actually 30 (well 31) and feel like I'm starting over again very year or two given how fast things move, and have just got on to a MSc software engineering course, so.. why not? :)
I'm one of the co-founders of Dev Bootcamp (http://devbootcamp.com) and the median age for our students is 28-32. We've graduated dozens of students over the age of 30 who learned to program at DBC and they went on to work at all sorts of awesome places.
Felix Tsai was one of our students last summer and was 42 when he entered DBC. He's now an engineer at TapJoy in San Francisco.
About Felix: http://devbootcamp.com/2013/02/05/felix-tsai-of-tapjoy-on-le...
If you know, could you please tell me if Mr. Tsai had any other qualifications before joining your program? Did he have a Science or IT degree, or have any relevant qualifications?
He was a former attorney.
/* Obligatory excuse about how I haven't had my morning cuppa yet */
You guys have a waitlist for July?
I'm now 30 and work for a major SV website. I am a bit older than most of my colleagues, but I keep up just fine. Like you, I wish I had gotten that CS degree as well, but you only let your mistakes defeat you when you stop trying.
Now, before everyone starts freaking out, the trick this whole situation is that you must be willing to learn how to do everything the right way. No cutting corners, no copy pasta. Treat this like a magical classroom lab where they actually pay you.
You will feel stress. You will work harder than you've ever worked. I was putting in probably 100 hours a week between my day job and this work. But I also got to a point where I could really write code and archetect software in about 2 years time.
It really helps have a close friend who you can turn to when you need someone to help guide you a bit, but if you don't have one, try to get ingrained in some dev forums.
12 years later, and 3 more companies and I'm a software architect with a major vendor on a team where I'm about in the middle "age" wise.
The only time I ever felt that age played a part was an interview I did for a company that was in start up mode with chief architects that were about half my age. I had no problem walking away from that one.
Opportunities were a major application that was written so badly (in java) that I learned a lot by fixing and refactoring. A poor social life that came from a divorce and moving states gave me an opportunity to spend an additional 40+ hours a week after work coding and experimenting and seeing what I could do.
In a more general sense. Giving myself a goal and working on figuring out how to achieve it in code was far better for me then merely reading a text.
That said, software engineering is one of the fields you can get employment without a degree, provided you can 'show your work'. The hard part is building up your skills in a way that can easily be demonstrated. The common wisdom these days is to create a github profile, build some interesting things, commit to some open-source libraries, and use your profile as a resume of sorts.
Here's interesting article on being a well-rounded programmer: http://jasonrudolph.com/blog/2011/08/09/programming-achievem...
We're also in a 'golden age' of self-guided learning, with online tools to help learning galore, here are a few:
http://codecademy.com http://www.codeschool.com/ https://www.khanacademy.org/cs
Also, get a few decent books on "Programming 101". Common wisdom suggests you learn C, one of Ruby/Python, Java, and a functional language like Haskell. Here are some good books to learn from:
The C Programming Language (some people say you should start here, I'm one of them!): http://www.amazon.com/Programming-Language-2nd-Brian-Kernigh...
Learning Python: http://www.amazon.com/Learning-Python-Powerful-Object-Orient...
Learning Java: http://www.amazon.com/Learning-Java-Patrick-Niemeyer/dp/0596...
I hope you do choose programming as a career, its been very rewarding for me :)
Scala is a "better Java" and you can learn both the JVM and functional programming (take Odersky's course on Coursera). Clojure is a great Lisp but the Java stuff will be very confusing if you haven't seen it before (the JVM-interop functions like proxy, gen-class, and reify don't have the easiest APIs).
This (Structure and Interpretation of Computer Programs) is a great book to get started on the deeper aspects of CS: http://mitpress.mit.edu/sicp/full-text/book/book.html
Also, I like this one: http://www.amazon.com/Concepts-Techniques-Models-Computer-Pr...
How to solve the problem? Start developing tomorrow's programmers today.
As an aside, my very first introduction to Python was competing with a friend, building scripts that would automatically create accounts on a forum, login to those accounts, and then use them to give ourselves 'karma'. That weekend I learned more than I'd ever known about Python, HTTP and web scraping. Its a silly example, but mini projects like that can really help you learn.
I actually did that. I left a well-paying job for a slightly less well-paying job as a very junior developer.
There are definitely challenges. There's a ton of stuff to learn, from programming technique and style to version control to team planning strategies.
Probably the biggest thing I wish I'd been able to learn in school was about what it means to deliver. There's a world of difference between knowing that I can solve a problem and being able to realistically estimate the time it will take me to do so. Especially at the beginning, I lost a lot of face by saying I could do things that I couldn't.
There's a similar gap in expectations. There have been a lot of times when I've sent something into review that I thought was exactly what I was supposed to deliver, only to have to redo it later. I had to learn to ask for feedback early and often. It's also much harder than I thought to differentiate between implementation details and details that will be significant either to calling code or to my ability to build out features later.
Probably the hardest thing, though, has been the feeling that I might not be able to overcome the perception that I'm not good enough to be given important tasks. When I think about it rationally, I can satisfy myself that I am getting better and better assignments, and I'm showing I can get them done. But it's sort of demoralizing to feel like I have to prove myself all over again.
So those are the tough parts. Honestly, I still feel like it was one of the best decisions I've made. There is no way I would have been able to learn this fast or this much without the kinds of colleagues, mentors, and especially problems this experience has given me.
In general, my job search strategy has always been to look at opportunities orthogonal to my field. I didn't look for software jobs per se--if I had to compete against CS degrees I'd have been a goner. Instead, I looked for positions where I could use the knowledge I had as a multiplier for my productivity doing something else.
It also really helps that the market for good devs is pretty competitive. It means that once you're in and you've proved yourself a bit, it's easier (and often less financially risky) for your employer to take a chance on your ability to learn than it is to hire another dev when something needs to be done.
But as I said before, this approach sort of kicks at least one can down the road; if you start off at 'assistant' level, it's hard to move up in people's perception.
I kind of worked backwards though - I have 5 years software development experience, but wanted to get some qualifications so I could better dictate my working conditions (remote work, salary etc).
I say go for it. You're younger than I, and I'm not too worried about my age :)
- Salary: I have found it difficult to get out of the 50-60k bracket without qualifications, and I personally feel that for my ability, I am getting ripped off. Also, my full-time job was grating me quite a lot. I was working under my brother for one, and my fellow programmers were not very good. I didn't really enjoy going to work. It didn't challenge me.
- Family: No one in my immediate family has a degree, and I mean to change that. It might seem a silly reason, but my family is right behind me and with it comes a sense of pride.
- Skill: Although I am confident in my ability in certain areas, I desire to learn more of the lower level skills like compiler design, algorithms etc that I didn't have time to learn on my own. Focusing on it completely seemed the only way to succeed for me personally.
- Diversity: I felt as though I was in a hole with regards to the technology I was working with, and had no perceivable exit strategy. I want to explore more than just CRUD applications. It also gives me the chance to try out things I would never had even considered looking at, such as circuit design.
- Networking: Learn the craft alongside others who are passionate about the same things. I know there are other ways to achieve this, but it comes as an added benefit.
You might find that another 4-year second-undergrad is time-inefficient (and probably expensive). It might be better to study math and take a few undergrad courses at a university-- that'll take a year or two and you can work while you do that-- then go back for a Master's.
The good news: despite the ageism that our industry is known for (which is overrepresented on HN due to the high proportion of VC-istan programmers here) there's no evidence that people become worse programmers when they're older. In fact, it's clearly the opposite. In 2013, science has reached no consensus regarding the age of cognitive peak; it's somewhere between 20 and 65, but no one's sure where. It seems to be very individual, with some people peaking early and some late.
The bad news: if you want to work at the VC darling companies, you're probably screwed. Ageism is severe there. People will think you're a loser, in those companies, if you're not an executive by 35. But there are a lot of quite frankly better options where no one's going to think twice about your age, especially since you're a long way away from being old.
What are those options?
For one example, banking is considered ageist (most people retire by 50-55) by society-at-large standards but no one is going to look askance at you for being 40 and a non-managerial programmer. You should be at least VP by that age (and preferably ED/MD) but you don't have to have reports.
One nice thing Wall Street has done for its top (non-managerial) traders and programmers is use the title system to validate non-managerial high performers: you can be a "Managing Director" without having to manage other people. If you're going to have titles, you have to start giving them to engineers... even though a part of me would like to see titles just not exist.
In fact, I've done so much of it over the last 5 years that I'm trying to get out of it. But that's another story.
From being unable to write a single line of reasonable code to being a Data Scientist making a solid six figure salary took me four years, a bunch of work, and being a very good networker. That last part is pretty important.
Oh, and I don't have a degree.
A few things you might want to keep in mind: You can learn just as much online these days as you can in school, for a fraction of the cost. A CS degree can be found on Udemy for a reasonable price.
Your 10,000 hours starts now. Build things, be curious. Build things even if you think they're stupid. It's part of the learning process.
Having a website, or an app, and a GitHub repo will much farther to getting you hired than a degree. What will help you even more than those things are a good attitude, an open mind, a humble spirit, and an ability to learn.
Best of luck!
And if you wake up at 50 and want to change directions again...that would be ok too.
Life is too short for half-measures and self-doubt!
Good luck! :)
"a year from now you will wish you had started today."
"i never regret when i do it, i always regret when i don't."
"there are seven days in the week and someday isn't one of them."
"every accomplishment starts with the decision to try."
"if you don't build your dream, someone else will hire you to help them build theirs."
and last, but not least:
"quick slackin' & make shit happen!"
As others have said, I think if you don't get a CS degree, you really need to focus on results. Anyone can give programming a shot these days, but only some will ever be able to ship decent software and get paid to do it. Software development is ideally a meritocratic endeavor, so if you can develop the skills, age shouldn't hold you back. What would hold you back is not having enough time, motivation, or aptitude to develop the skills needed to get a job. Even if you can't get a job though, programming is a useful life skill, so I personally think it's worth a shot if you can find the time.