Getting a Good Job in Software, Part I: Before you're actually looking
I've spent a lot of time looking for jobs, talking to prospective employers, interviewing, etc. I am much more effective at finding jobs than I was when I first got out of college. I'd like to think I've learned a few things that may be useful for others. There are some for whom what I've learned will not be useful, some for whom I don't want it to be useful.
If you're in software for the money, this is not for you. If you're just looking for any acceptable job, this is not for you. If doing a professional job is not important to you, this is not for you. If you're not interested in constantly learning new things, this is not for you. If you're in software because you like it, because you want to make cool things that do something interesting, then we can talk.
You should start looking well before you're actually looking. You have to prepare. Even if you're happy with your job now, you may not be forever. Your employers may be happy with you, but their opinion may change. They may go out of business. The company may get acquired. Things change. It would be foolish not to have a backup plan. You don't want to have the world change around you and have to start looking for a new job with nothing. Use the time you have now to get ready, even if you know you won't be looking for years.
Start off by compiling a list of candidate employers in your area. Do not be too picky. Do not research them thoroughly. Just accumulate names, keeping in mind that not all companies that do software are software companies. You do need to eliminate companies you know you won't work for. Check their jobs page to see if they use languages and technologies you know or want to use. Get a little bit of a feel for the company. Save their URLs. del.icio.us is good for this, as is a personal wiki. As an indicator, I had a list of about 90 Austin companies after doing this for about a year.
I assume you just kind of come across software companies in your daily readings and listenings. If you need more sources of info, the local newspaper can be helpful. So is Business Journal. Start-up Warrior claims to map startups around the world; they're worth a shot. Find venture capital firms, and look at their portfolios of companies. Also keep track of postings on Craig's List. Usually the ads don't include the company name, but some do. Add those to the list. Use the other ads to give you an idea of what skills are in demand. Set up a job alert on Indeed. Do searches from time to time to see who's hiring for what roles.
Look at more specialized job boards: Joel Spolsky, The Daily WTF, 37 Signals, Smashing Magazine, and Ars Technica all have them. No doubt there are more. Remember, you aren't trying to make a perfect decision about a company the first time you see them. What you are looking for is a long list of possibilities.
Talk to recruiters. This is one where you need to be careful. There are some really good and reliable recruiters out there. Then there are the ones who will just blast your resume to any company with a pulse, who will lie about what you can do, poisoning the well before you even start looking.
A good recruiter will talk to you first about each and every opening. They won't present you to a client until they've gotten the OK from you. I've been pleased in my interactions with HireStarter, but I don't think they operate outside of Austin.
A good recruiter is someone you have a relationship with. I first talked to HireStarter in 2005. I've talked to them several times a year since then. Sometimes it was about specific jobs, sometime it was helping them find someone else, and sometimes it was just catching up. A good recruiter will want to get to know you even if you're not looking right now, because one day you will be looking.
Use Linkedin. Knowing what your peers are doing will help you with your list of candidates, plus a decent network can help you later in the process.
You should be developing in your mind your ideal job. You may be happy with your current job, but it probably isn't perfect. Look back on the jobs you've had. Figure out what worked and what didn't. There are two kinds of requirements, the ones that apply to every job seeker, and the ones that matter to you personally.
To some extent, everyone wants the same thing. They want to be paid well. They don't want a boss who yells at them. They don't want to drive 2 hours each way. The company needs to have a useful product. They need to be making money, if not a profit. Some of these requirements can be flexible. How do you define getting paid well? Then there are early stage companies. They often don't have a product yet. In fact, they may not even know exactly what they are going to build, and they're certainly not making any money. In that case, you're going to have make a gut call.
Beyond those requirements are issues of personal taste. Those are the specific things that you need. You can tell it's personal if you can invert it and it still makes sense. Some people like small companies, while other people prefer large ones (or so I infer). On the other hand, everyone wants to work for a company that's solvent; nobody wants to work for one headed down the drain.
When I was recently looking, there were three main things that I was looking for. I wanted something where I had to apply all those algorithms and data structures I learned in school. That excluded many business applications, which was only a good thing. Additionally, it had to be something with flexible hours because of the small children. Finally, I wanted to work on a sharp team. It wasn't enough to have smart immediate co-workers; I also wanted to know that the management team knew what they were doing and had effective development practices. There were more considerations, but that's the gist.
You should also establish things that are not important to you. For me, offices are nice, but I can live with cubicles. The particular industry was also not all that important. I was averse to working for a bank, but I didn't have strong feelings about whether it was telecoms, search, or travel & leisure. I did want it to be something I could relate to, but I can relate to a lot.
Once you have an idea of what types of jobs you want, critically evaluate your skills and knowledge. Your work experience demonstrates only part of what you can do. There may be a gap between what you can prove you can do and what you will need to be able to do for the jobs you want. At the very least, you want to know what those gaps are.
The next step is to learn more about the things you don't know. If those skills aren't compatible with your current job, try to develop some side projects exploring those other skills. It's find if you lack knowledge. It's not ok to be satisfied with that, not if you really want the job. If you can't demonstrate the exact skills necessary, make sure you can demonstrate the ability to learn them.
Next time I'll write about how to narrow down your list of companies and make contact.
If you're in software for the money, this is not for you. If you're just looking for any acceptable job, this is not for you. If doing a professional job is not important to you, this is not for you. If you're not interested in constantly learning new things, this is not for you. If you're in software because you like it, because you want to make cool things that do something interesting, then we can talk.
You should start looking well before you're actually looking. You have to prepare. Even if you're happy with your job now, you may not be forever. Your employers may be happy with you, but their opinion may change. They may go out of business. The company may get acquired. Things change. It would be foolish not to have a backup plan. You don't want to have the world change around you and have to start looking for a new job with nothing. Use the time you have now to get ready, even if you know you won't be looking for years.
Start off by compiling a list of candidate employers in your area. Do not be too picky. Do not research them thoroughly. Just accumulate names, keeping in mind that not all companies that do software are software companies. You do need to eliminate companies you know you won't work for. Check their jobs page to see if they use languages and technologies you know or want to use. Get a little bit of a feel for the company. Save their URLs. del.icio.us is good for this, as is a personal wiki. As an indicator, I had a list of about 90 Austin companies after doing this for about a year.
I assume you just kind of come across software companies in your daily readings and listenings. If you need more sources of info, the local newspaper can be helpful. So is Business Journal. Start-up Warrior claims to map startups around the world; they're worth a shot. Find venture capital firms, and look at their portfolios of companies. Also keep track of postings on Craig's List. Usually the ads don't include the company name, but some do. Add those to the list. Use the other ads to give you an idea of what skills are in demand. Set up a job alert on Indeed. Do searches from time to time to see who's hiring for what roles.
Look at more specialized job boards: Joel Spolsky, The Daily WTF, 37 Signals, Smashing Magazine, and Ars Technica all have them. No doubt there are more. Remember, you aren't trying to make a perfect decision about a company the first time you see them. What you are looking for is a long list of possibilities.
Talk to recruiters. This is one where you need to be careful. There are some really good and reliable recruiters out there. Then there are the ones who will just blast your resume to any company with a pulse, who will lie about what you can do, poisoning the well before you even start looking.
A good recruiter will talk to you first about each and every opening. They won't present you to a client until they've gotten the OK from you. I've been pleased in my interactions with HireStarter, but I don't think they operate outside of Austin.
A good recruiter is someone you have a relationship with. I first talked to HireStarter in 2005. I've talked to them several times a year since then. Sometimes it was about specific jobs, sometime it was helping them find someone else, and sometimes it was just catching up. A good recruiter will want to get to know you even if you're not looking right now, because one day you will be looking.
Use Linkedin. Knowing what your peers are doing will help you with your list of candidates, plus a decent network can help you later in the process.
You should be developing in your mind your ideal job. You may be happy with your current job, but it probably isn't perfect. Look back on the jobs you've had. Figure out what worked and what didn't. There are two kinds of requirements, the ones that apply to every job seeker, and the ones that matter to you personally.
To some extent, everyone wants the same thing. They want to be paid well. They don't want a boss who yells at them. They don't want to drive 2 hours each way. The company needs to have a useful product. They need to be making money, if not a profit. Some of these requirements can be flexible. How do you define getting paid well? Then there are early stage companies. They often don't have a product yet. In fact, they may not even know exactly what they are going to build, and they're certainly not making any money. In that case, you're going to have make a gut call.
Beyond those requirements are issues of personal taste. Those are the specific things that you need. You can tell it's personal if you can invert it and it still makes sense. Some people like small companies, while other people prefer large ones (or so I infer). On the other hand, everyone wants to work for a company that's solvent; nobody wants to work for one headed down the drain.
When I was recently looking, there were three main things that I was looking for. I wanted something where I had to apply all those algorithms and data structures I learned in school. That excluded many business applications, which was only a good thing. Additionally, it had to be something with flexible hours because of the small children. Finally, I wanted to work on a sharp team. It wasn't enough to have smart immediate co-workers; I also wanted to know that the management team knew what they were doing and had effective development practices. There were more considerations, but that's the gist.
You should also establish things that are not important to you. For me, offices are nice, but I can live with cubicles. The particular industry was also not all that important. I was averse to working for a bank, but I didn't have strong feelings about whether it was telecoms, search, or travel & leisure. I did want it to be something I could relate to, but I can relate to a lot.
Once you have an idea of what types of jobs you want, critically evaluate your skills and knowledge. Your work experience demonstrates only part of what you can do. There may be a gap between what you can prove you can do and what you will need to be able to do for the jobs you want. At the very least, you want to know what those gaps are.
The next step is to learn more about the things you don't know. If those skills aren't compatible with your current job, try to develop some side projects exploring those other skills. It's find if you lack knowledge. It's not ok to be satisfied with that, not if you really want the job. If you can't demonstrate the exact skills necessary, make sure you can demonstrate the ability to learn them.
Next time I'll write about how to narrow down your list of companies and make contact.
1 Comments:
Thanks for being candid -- it was really helpful for getting me started/motivated in my job search in Austin. I bookmarked it.
Post a Comment
Subscribe to Post Comments [Atom]
<< Home