How To Get A Software Engineering Job For Newbies
A career in software engineering can be a pretty good (and profitable) one, and there is a pretty huge push these days for everyone to learn to code. I don’t think it’s for everyone, but if you like problem solving and don’t mind spending a lot of time in front of a computer, you can make it work. That said, taking a ‘Coding Academy’ multi-week course is not how you’re going to get a job. It certainly helps, but read on for what you actually need to do. These aren’t in any particular order, and if you pull all of them off please let me know because I am hiring.
I have used all of these to get jobs, and am far more likely to hire someone that does these things.
Network (People, meetups, recruiters, conferences, etc)
Yes, you can search the internet for a job, but if you want to be able to pick from a few great choices to find a job you love, it’s going to be through the people you know. Some of these you get ‘for free’ because you were in a class with someone or your brother’s wife’s bff works somewhere you want to work, but most of your network will take a little bit of work. Try out:
- Attending meetups/conferences/techevents/etc and introducing yourself to strangers. Spend a few minutes on meetup.com and you’ll end up with more than you can count.
- Responding to recruiters, let them buy you lunch, and find out what they are looking for. Read through The Recruiter Project for some inside info.
- Start/Join a reading group that focuses on a technical area
- Do something regularly with a group (maybe a weekly group bike ride) and talk to people about what they do
See a great talk from someone that seems like someone you’d want to know? Remember a college professor that was great? Hear that someone knows their stuff? Invite them to lunch or an after work drink or a 30 minute video-chat or anything really. You’ll be surprised at how many people say yes.
Nothing is going to just fall into your lap. You need to be the person that initiates conversation, follows up with people, makes events happen, etc. Want someone to be your mentor? Send them an e-mail. If you don’t hear back, follow up with them a few weeks later or send them something in the paper mail.
Have something that you are passionate about and can tell a compelling story about. This doesn’t need to be something that is interesting to anyone else on it’s own, but the story should be. It could be a musical instrument, something in your community, a particular sort of sandwich, etc. Be interesting, and be someone that people want to talk to about what you’re interested in.
Learn another (programming) language
Actually, go ahead and learn as many as you can. The list of things you’ve built a “Hello World” in should be longer than you can remember, and a “Hey we need this in Perl” (or any other language) shouldn’t be a showstopper. Languages are just tools, and you should be comfortable using the right tool for the job.
Learn another (not programming) language
While you may not need to actually use another language on the job, if two people have identical resumes and interview the same, I’m going to pick the one that also speaks Catalan. They’ll probably interview better too because they’ve had to think more about how they communicate, and they’ll have better stories to tell.
Build something that scratches an itch
Take your passion, and use technology to build something that makes it better. Automate something, create a tool that gives you unique metrics, build something that saves you (or someone else) time. Especially if you don’t have a computer science degree and you haven’t been developing software for 10 years, building something that is useful to you goes a long way towards showing that you can build something that will be useful to other people.
Get a degree (science is cool)
College is not for everyone, but there isn’t really anything else out there that can give you the experience of a college degree. “Programming” is different from the “Computer Science” fundamentals that you’ll get in college and sometimes it is really handy to know some of the gritty CS bits. An “unrelated” degree from one of the other sciences will give you problem solving, teamwork, and communication skills that you aren’t going to get from a “Code School”. While not a career requirement, there are places that require a college degree to work there, but you probably don’t want to work at those places.
Work well with others
Employers do care that everyone pulls their own weight, but the productivity of the team matters more. Working effectively with others will enable you to accomplish more than you’ll ever be able to accomplish on your own. Find a way to show this off: maybe it’s successful group projects at school, maybe it’s working on an open source software project, maybe it’s something fun you do outside of work/school.
You are making a pitch as to why someone should hire you. Have a plan for what story you are telling, tell it clearly, listen actively, and practice. Have an ‘elevator pitch’ version of your story, write it out each time instead of copy/pasting, and use it on everyone you know. But first, find out what theirs is.
Learn about where you want to work (Do they use PHP? Build something in PHP)
Apply to work at a PHP/Java/Erlang/whatever shop and don’t know it? That is completely okay and great. It’s all the other skills that matter, but to show off all your other skills, hack something together using the language/platform that your new job uses. Port something you’ve built in the past over, build something new that “scratches an itch”, and share it with the people you’re interviewing with.
What did I forget?
This list is probably terribly incomplete, but a lot of these would have been really handy to me for landing my first jobs. What things have gotten you a job in the past? What has stood out when you’ve been hiring? What do you want to know more about?