don't screw this up

software engineering course at university of texas.

i’m in an undergrad software engineering course right now, even though i’ve been a professional software engineer for four years (long story i guess…). it’s interesting to see all of my classmates that will be starting their first development jobs in the next year or two. it makes me think of when i was trying to choose between job offers right out of school. on one hand it’s really exciting; on the other hand, if you’re like me and you really care about what you do, it can be stressful because you don’t want to screw up this great opportunity.

so i put together yet another blog post of droning boring advice for new or soon-to-be grads. my apologies, the world already has too many of these. but here it is, in order from least to most significant:

choose your technology wisely

this is important because it has less to do with the technology and more to do with the community and environment in which you will work. consider the following:

a company that fits you

a company’s size and market tend to have implications on the types of technology it uses. chances are you’ll prefer a certain type of company, so look for technologies that match: if you want to work at a startup don’t put all of your eggs in the c# and .net basket. conversely if you want to work at a big company, don’t spend all of your time on ruby. if you want to be a kernel hacker, then look for jobs at big places making device drivers. if you’re convinced that sql is wrong and nosql is right, then work at a startup and not a place that sells enterprise-y products to big customers.


every technology has a shelf life, and you don’t want to get stuck working on legacy stuff. there’s no way you’ll know as an undergrad what’s got staying power, so look at some statistics like popular languages on github. don’t just consider absolutes, but also look at trends over time. at first it may seem hard to predict what will last, but consider a technology’s install base. javascript may not be the best language ever, but i’d bet a pint that you’ve got 1-3 devices within reach that can run it. i don’t think you can say that about anything else other than maybe x86… ruby seems popular on github right now, but compare that with python, which has the blessing of a tech juggernaut (google). like ruby, python has a presence in the web space, but it also is significant in scientific computing because of projects like numpy and scipy.

go build it

that being said, you control your destiny. a lot of people make the mistake of waiting until they get the job to start doing what they really enjoy. the great thing about tech is if you just start building, it’s only a matter of time before you’ll find a job getting paid to make the thing you love. i found out pretty quickly after college that two things fascinate me to no end: the internet and user interfaces. i started making websites as side projects, and it didn’t take long to find a job as a front-end developer. the only reason i was able to get the job was i started building stuff. period, end of sentence. if i hadn’t started on my own, then i wouldn’t be doing my favorite thing.

family matters

for me, it came down to two offers out of college, one in the bay area and one in austin. i love the idea of working in the bay area because that’s tech mecca. there’s no better market for a programmer, but for a number of reasons austin was a better fit for my wife and i. when i made the decision it felt like choosing between what was best for my career and what was best for my marriage. in the end i chose the latter, and i haven’t come close to regretting it. sometimes you fall into the trap of prioritizing a job over the people in your life that matter, and that will ultimately disappoint you. so take some time to identify who it is that’s most important, and then build your life around those relationships.

ok. i’ll stop ranting like an old person now.

blog comments powered by Disqus
© aaron stacy 2013, all rights reserved