Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: Is 30 too old to start in software engineering or CS?
36 points by boingyjump on June 1, 2013 | hide | past | favorite | 56 comments
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).



TL;DR: It's no picnic. Do it anyway.

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.


This really resonated with me - thank you for posting it. If you don't mind me asking, what convinced your future employer to give you a chance? (and/or what convinced you that you were ready to take the plunge)


I'd known for a while that the job I was in was a dead end. I was taking a lot of online programming courses and geting involved with local meetups, etc. When a friend who'd ended up in a non-programmer role at a tech company offered to put in a good word for me for a poorly-defined 'assistant' position, I went for it. I was honest about my skill level, and it turned out that there was a lot of work that anyone sufficiently interested could do. It was a lot of pretty boring stuff at first, documentation and testing, mostly. But there's always some small project that falls exactly in the 'inexperienced new guy' sweet spot--something that everyone wants, but can do without, and no one has time to write, or else something that some manager has asked for that a project lead doesn't want to waste developer time on. After I did well enough on enough of those, the requests to do the more boring things got fewer and farther between.

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.


There are certainly careers in which getting started at age 30 is unlikely to bring success (gymnast, child actor), but computer science/engineering is most certainly not one of them.

You 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.


I learned to code when I was 30. I was already employed at a technology company to monitor the network. So that was definite plus.

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.


What helped you learn the most? Did you have a project/idea that drove you along?


That's a hard question to answer. There were a combination of motives and opportunities. Motives were things like a strong desire to prove myself combined with an anger at the lob sided salaries.

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.


I'll echo the sentiment that you wouldn't be too old, but question your approach. Why get the degree at this point? Why not continue to learn through self-study and demonstrate your ability through open source?

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).


Honestly - I feel like I don't have enough time with work to be able to "prove" myself enough to get hired. (and also when I study by myself, I get about 0 feedback from others, so I feel like I'm learning terrible practices). I guess two specific questions: 1 - how can I "prove" myself? and 2 - what kind of places actually take junior programmers?


A degree ensues all the relevant content is sufficiently covered and competency therein confirmed. (Imperfect still, yes, but much better than just winging it.)


Hell no, it's not too old. The Web is a meritocracy, that's what they always say. I actually started when I was 37.

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!


Absolutely 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...


> 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.

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?


You could just click on the link provided and read about his previous education and career experience.


I linked to the blog post because it's a whole article about him and his past! Hah.

He was a former attorney.


Wow, no idea how I missed that.

/* Obligatory excuse about how I haven't had my morning cuppa yet */


What's the point of inspiring me to apply to DBC if all SF cohorts are full until 2014?! :)

You guys have a waitlist for July?


As many people have said, no, you're not too old to get started. And despite what some people might say, a multi-year degree program, with a decent GPA, is a great way of showing employers that you're a decent potential candidate.

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 :)


Thank you for taking the time to put together the links! The "show your work" part feels like the hardest, but I guess that's just something I have to push towards to figure out. As an aside, do you know anyone who's learned successfully from codecademy/codeschool? I love the idea of them, they just seem really simplistic.


The are quite simplistic, but that's kind of a feature - Use them to get down 'the basics', before moving onto actually using languages to solve problems. There's no better way to learn than through building actual 'things'.

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.


When you're first starting, you have to be simplistic. That is the target audience anyway. The ability to write code is going to continue to be in demand, and there are not enough people with the necessary experience to fill some of the positions out there.

How to solve the problem? Start developing tomorrow's programmers today.


I'm injecting my own language bias here, and I must admit that this is not an opinion that everyone agrees with, but I think you're better with Scala or Clojure than with Java. (Both run on the JVM, so you end up learning the Java ecosystem.)

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...


I started software development at your age, despite taking some CS classes in college when I was 19. I am now 30 years old (sigh) and had jobs making plenty of money (if you care about that kind of thing).

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.


I hope not. I just started my MSSWE program at 36. If I didn't enroll in an academic program, family life and full time work would keep me from making the transition.


I feel that. What spurred you to take the plunge?


I started teaching myself programming at 23, and I'm now 25. You are far from too old, but the real issue is time, motivation, and aptitude. At this point in your life do you have the time to go back and get a CS degree? Or learn enough online that you can build a portfolio? If you can get a junior position early, then you can learn and get paid at the same time which is the optimal situation, but if you cannot do that, you will need to invest significant time and energy learning. Can you find the time to do that at this point in your life?

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.


If you already have an undergrad degree get a masters not another 4year degree. It's a little harder than an undergrad degree but not all that much.


Is [USNews & World Report](http://grad-schools.usnews.rankingsandreviews.com/best-gradu...) a good source to decide which Masters Programs are legit and which are just junk? Seems like there's a lot of crap around...


The best advice I can give is to go to school websites and look at their course catalog. Specifically, look at the professors teaching the core courses and whether the courses you'll be taking are the same courses that undergraduates and PhD students at the university take.

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.


I agree that you want to ensure that the coursework is of sufficient quality. However, I wouldn't avoid terminal masters degrees with no financial support in themselves. E.g. Stanford's MS in CS falls into this category.

Edit: not that the parent post was implying that such programs should be avoided, bit it is common advice.


Do you have any suggestions for specific programs? I'm particularly interested in getting a better understanding of data structures and algorithms (granted, that's super broad), because that seems like the hardest kind of thing to learn well online.


I'm about to be 32, and I only started really studying programming (via online tutorials and physical how-to books) a little over a year & 1/2 ago. I was already solid in my html and css, picked up ruby first, then jumped to a bit of php, then back to ruby and rails, and finally some jquery and responsive design. I did this over a year, and was supported by my loving fiance (also unemployment comp and a part-time job after that), which was a tough financial struggle for that yea . I came from the construction sector (repair services) for 8 years. My fiance works for a successful startup, who were gracious enough to allow me to spend my studying time in their offices (and occasionally ask questions). 4 months ago, I was contacted by a recruiter via an online job site for a jr. rails dev position, in which I now am gainfully employed. I'm working with rails, and being utilized for my knowledge in responsive design with our overhaul project. I'm now able to help save for our wedding and honeymoon and provide groceries of more than soup.


No, especially since you're 25. Plenty of people came into software engineering late, even people who are 'famous' in the field now.

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 started to learn software dev at 26. I could barely write a coherent HTML page.

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.


What did you find most effective for teaching yourself? Did you have some driving "thing" that you wanted to build/do?


I signed up for work I couldn't do(!). This sounds scary and awful, but basically I dug in and learned as much as I needed to to write basic applications, then put myself out there for clients. I sold my services for a fraction of what clients would normally pay.

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.


If you majored in something quantitative there is just no need to take CS courses in a traditional college format. Online courses are on the same level or better if you can study by yourself and know enough math.


In short, no. Employers are not allowed to ask for your age, it gives them grounds to discriminate against if you tell them how old you are. Don't put your date of birth on your CV.

Good luck! :)


As sound as this advice is, one can generally infer one's age by the makeup of their CV (college graduation date, years of experience, positions held, etc). To me it doesn't matter how old someone is, but I have a pretty good idea of their age even before I've met or talked with them.


At 30 the only thing you are too old to start is a path to becoming a professional dancer or athlete. I'm 41, just starting to learn programming and I love it so I don't really give a fuck if I'm 'too old'. This debate is tiresome (because I'm old :P) and its important to think of writing code like any other type of writing. If your brain, eyes, and fingers are in good shape then you're fine. You will be judged on the merits of what you write and create. If you love it, do it.


It's definitely not too late, but going back to school to do a CS degree might not be the most effective way to do the transition. A CS degree course can be a lot of fun, but it's not focused on readying you to working in technology. Now that you've already checked the degree box, you can learn how to program independently and save yourself a lot of time and money.


I'm 27 (28 later this month) and I'm just finishing semester one of a CS degree. If all goes well I should be finished by 30.

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 :)


Unlike others, sounds like you feel like there is a difference between having a CS degree and not. What sort of differences do you find? If you could go back, would you have started out with a degree?


There's a few things that have driven me to get a CS degree:

- 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.


I'm just going to leave these inspirational quotes here:

"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!"


Instead of going back to school, why don't you propose software projects for your current job? You may not get compensated for the time spent, but you are enhancing your current job and getting real field experience a fresh school leaver cannot offer.


Nope. Get going.


And since you already have a bachelor's in something else (I assume), it probably won't take you four years to finish the CS degree anyway.


I'm in Bostons Launch Academy, which is Bostons version of Dev Bootcamp, and we have a few 30+ guys in our class that are killing it.


No, it's not too old. And the degree isn't required (although it may be a great way to start).


I'm 25 as well. I share a bit of my own experience, in the hopes that you may find lessons (both positive and negative) from it. I don't pretend that anyone should consciously follow the path I took, but it did work out pretty well for me.

I graduated college with a degree in electrical engineering not really knowing anything about what I wanted to do for a living or where I wanted to be in five or ten years. So I sort of drifted into a master's program, again in the same field, hoping to figure out what I was doing before I was forced to confront the job market or academia proper.

I didn't realize until the second half of my first year at that graduate program that I enjoyed the CS courses I was taking as electives far more than the normal engineering courses. So I ended up taking my second year and throwing all my effort into taking as many CS classes (which were cross-listed departmentally) as I could: operating systems, databases, compilers, etc. I made some stupid mistakes choosing some classes that turned out to be neither interesting nor relevant, and skipping on classes that would have been extremely useful or informative.

When I graduated, I took a position at a startup in the area, doing work that fell between the interface of EE and CS. I realized that I wasn't too fond of the work or the company (for various reasons), and so I spent months teaching myself the practical and theoretical stuff I had missed out at school, whether out of inexperience, disinterest, or sheer decision-making ineptitude. Some of this stuff was useful for my position at the time, other topics were completely exploratory in nature. And when I was ready, I started sending out my resume and interviewing for positions. I did get a new job, and I'm a software engineer at a well-regarded mid-size tech company in Silicon Valley right now.

Some thoughts regarding your position:

- CS is one of the fields with the lowest barrier to self-teaching. You don't need expensive lab equipment or fieldwork - just software, much of which is freely available, an ordinary computer, and enough motivation to actually utilize both.

- You don't need a 4 year degree. In the US a lot of schools won't even allow you to enter their bachelors programs if you already have one. A BS would be a waste of your time.

- The MS degree isn't a prerequisite. Build something substantial, and people will take notice. If you don't have anything you can show them, the degree can sometimes be useful. I'm not proud of this and it's actually really shitty, but the name of the school on your resume may sometimes make the difference between people taking a look at it and throwing it out (at least from my experience).

- If you do go back for formal schooling know what classes you should take, in order to acquire knowledge you need to have. You mention data structures and algorithms in a comment earlier; there are classes which focus on those; there are also classes that focus on discrete math, statistics, and other foundational topics. You should build an OS and a compiler while you're there. I always thought this was a thought-provoking read: http://matt.might.net/articles/what-cs-majors-should-know/

- A lot of MS programs are coursework programs; they've been charitably described as financially lucrative to their host institutions. Mine almost certainly would have qualified (both the EE and CS programs). This is not necessarily poison, but it does mean that if you attend, you should make the most out of the classes you take.

- If you are interested in working at certain companies, see if you can get someone to give you an internal referral once you're ready to begin the job application and interview process. A lot of companies (again, this is a controversial topic) seem to give more weight to internal referrals than unsolicited submissions. Contact with most of the companies I was looking at started either when a recruiter reached out, or when I asked someone I knew to put in a word. If you feel that people are loath to consider you due to your late start/lack of formal credentials this may be a way to offset that.

Finally, the fact that you are considering this move because of passion, interest, and demonstrated competence bodes really well for you. Best of luck!


First of all, you're going to be starting at 25, not 30. Don't spend 5 years doing only school. Start building things right away.

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.


"there are a lot of quite frankly better options where no one's going to think twice about your age"

What are those options?


The VC funded company I work at is mostly people in their 30s and 40s with babies and teenage kids. You'll find it more in boring suburban peninsula and san jose companies than SF companies I'm guessing.


There's a lot out there that is not in the VC-funded ecosystem. Sure, most corporate jobs are crap whereever one goes, but the odds aren't any worse than in VC-istan, and the ageism problem is less severe.

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.


Yes.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: