Self-Teach or Go Back to School?
I distilled this down from a few email threads I've had with folks who wanted to get into software development and/or were considering degree programs.
- The absolute best thing you can do is just keep building stuff. You’ve heard it time and time again but it’s so important. Start a Github, think of a thing that you want to try building, and build it. Make sure you give yourself a chunk of time (2 hours or more) regularly to fall into it and make progress. 15-30 minutes now and then doesn’t cut it. Pick a technology you want to put on a resume and use that. Build it as great as you possibly can but realize that it will look pretty terrible when you come back to it next year.
- If you’re in your first 2-3 years of learning, more if it’s only been a hobby, don’t get caught up in environments, “beautiful code,” build pipelines, deployments, etc. You don’t really know shit yet and all that stuff is just, like, your opinion man so concentrate on writing the code. Looking back, I’ve found myself getting really wrapped up in all the surrounding stuff because the actual code was really hard. I was distracting myself from what I needed to learn with all the stuff that isn’t that important.
- Keep a close eye out for what really puts you in flow state and don’t judge it. Maybe server config is fun for you, maybe it’s bash scripting, maybe it’s JS, who knows. You probably have an idea in your mind of the software developer you want to be and that can’t really do anything but hurt you. Explore and make a note of where your innate talents and experience makes for a Good Time. You might want to call yourself a Ruby Developer but actually have more fun with CSS. The point is finding where you should be and what you should be doing, not earning a badge of competency.
- Kind of a repeat of everything above but the most critical thing in software development is … SOFTWARE DEVELOPMENT. There is no substitute for writing, debugging, reading, testing, and refactoring code. It’s just like anything else. If you want to be a great cyclist you can buy all the gear, read all the magazines, hang out with cyclists, and watch all the movies but you won’t get anywhere unless your legs are turning a crank for hours and hours. Get off HN/Medium and start doing tutorials. Regularly do code puzzles and don’t worry if it takes you an hour for something simple. It’s going to hurt and you’re going to feel dumb and you’re going to think that you have no business doing it but stick with it.
On going back to school:
- “Solid Pro: The cost/benefit alone” – We know the cost but what is the actual benefit? You could say “I like learning and this sounds fun” which is a great reason (and the reason I’d get an in-person master’s if I won the lotto) but $8K could also buy you a fast car that would be fun. If you’re doing it because it will pay you back, be clear about how, exactly, it will do that. Also remember that the time you spend in this program has an opportunity cost. If you spend a total of 20 hours a week for 1.5 years (guessing), that’s 1,560 hours. You could build 3 big things or 15 small things on your own in that time or make $124,800 at $80/hour. Just make sure you’re clear about what you’re losing and gaining. You can adjust the math down and still come up with the same conclusion: the cost to you is not $8K.
- “It’s always discouraged me a little having no formal education in computer science” – your problem, IMHO. I have the same feeling but a lack of formal CS education has not, AFAIK, held me back from what I’ve wanted to do. A lack of formal education might limit you from specific positions but it will not limit you from making a great living, having fun, and building great stuff. Some might argue it would hinder you there because you might be overqualified and too niche (devil’s advocate, not my hard and fast opinion). Remember also that when you start playing the academia game, a master’s degree is not equivalent everywhere. If you went in-person full-time to Stanford that will look different to hiring managers than this degree, unfortunately. Works the same in Chemistry, I had a very talented friend who could not advance as fast or get paid as much because her degree was from SDSU rather than UCSD.
- “so HOPEFULLY I find a technology field I am really passionate about and can dive into deeper” – that’s what scares me! I thought something similar when I was considering a masters but this is a REALLY expensive way to try and figure that out, factoring in the time. Could you figure out your tech passion in half the time? 1/3? Do you think that a university is the best place to learn the most cutting-edge stuff? Important questions.
- “an employer sees MSCS from Georgia Tech on my resume” – I think there are few to no hiring managers that would discount you because of the program but, like I mentioned above, it won’t be weighted the same. What if you had 1,500 hours worth of GitHub repos exploring this stuff on your own?
“15-30+ hours/week” – So maybe adjust my opportunity cost math up a bit ;)
Other benefits you didn’t mention:
- University network of profs and students … NEVER a bad thing.
- Access to course materials you might not have otherwise
- Ability to ask questions to someone who is paid to know the answer
- One thing you touched on that I think is really critical … I believe that if you setup a really rigorous learning plan for all the things you want to get into and then wrote about it, made everything you built public, and really stuck to it you would be a much more valuable candidate for the jobs that would be truly satisfying. That said, it would be 2 – 5x harder to stick with it than being enrolled in school. So the outcome would probably be better but the likelihood of sticking with it would be lower. This is an easy problem to solve: just do it, dammit! But there’s a reason we have personal trainers, right?
My conclusion: sounds like fun and it’s something that I’ve considered several times, still am. The really key thing to ask before you start is: what do I expect to get from this and does that “pay” for the time and energy and cost of the course? Just be realistic. If it sounds like fun and you can afford it, it’s certainly not going to hurt you so fire away! But be realistic about what it’s doing for you. And if you have interest in a specific company or discipline, seek out folks working there and pick their brains. It wouldn’t be too hard to find 10 dream jobs on Indeed or somewhere and just contact the hiring person and say “this is me. Maybe I don’t quality but, in 6 months, I’d like to. How do I do that?” Wait … that’s really good advice, I might do that :)