I have been in the position to hire programmers in many of the companies that I have worked for. I have seen my share of developer resumes from people who are either still in school or recently graduated. The vast majority have no real world experience. They put college or graduate school project work down as real experience. Hiring managers in technology know that school assignments and projects are nothing like the real world. They are well defined, usually little business value and done in an overly controlled way. When I have interviewed these applicants, it is obvious that they are missing some key knowledge that is mainly taught in the real world.
I enjoyed lifeguarding in the summers before my freshman and sophomore years of college. It was a ton of fun and I made some decent money. Then, during my sophomore year, I got some good advice. Lifeguarding may be great at the time, but it is not going to help me get a job in technology when I graduate. In your senior year, when you start applying for a job, your resume hopefully ends up the desk of some hiring manager if you can get past the HR screener. Your resume will be submitted along with many other resumes showing off their real work experience.
I applied and secured a summer internship as an Informix programmer at AT&T for the next two summers. When I graduated, it was during an economic downturn. Only half of the graduates from my Tufts engineering class had jobs upon graduation. I was one of them because I had interned at AT&T and had done well. They hired me full time when I graduated. Had I kept lifeguarding, getting a “real” job when with no relevant experience would have been much, much harder.
In the last 20 years, things have changed a lot in technology. There is much more to learn but way more opportunities get real experience coding in real projects. There is also much more competition for the best jobs.
If you take nothing else from this blog, take this point: A pet peeve of mine when I interview someone is when they tell me that they are interested in learning some technology in our stack but have never even read about it or attempted to play with it. It is too easy today to spin up a free virtual environment on your own computer or in the cloud to try out almost anything. If you want to impress a hiring manager when you are a newly minted graduate, show them you have initiative and drive to learn and contribute with actions, not words.
In my humble opinion, Universities are not doing enough to prepare their computer science candidates to function in a real development environment. They do not teach a lot of very important concepts.
Top 10 Concepts that students should know when they graduate.
- Inversion of Control – Dependency Injection service locator, factory pattern.
- Unit Testing, Integration testing, and regression testing.
- Source control (Git, SVN)
- Development Patterns (Singleton, Repository, Adaptor)
- Agile/Kanban Methodologies vs waterfall
- Relational vs NOSQL databases
- Secure Coding practices
- Scaling systems
- Service oriented architecture
- Performance tuning (caching, efficient code, etc)
What are the top 10 things you can do to improve your marketability
- Summer Internships where you actually code
- COOP programs where you actually code.
- Teach yourself the above concepts.
- Do your own projects and open source it. Build something interesting.
- Contribute to open source projects.
- Learn and understand source control. Git flow and SVN are important ones.
- Use the cloud resources out there to play with different technologies.
- Go to meetups on technology that you are interested in and ask questions.
- Having a blog and Github account shows what you can do and shows initiative.
- Above all, have a passion to learn, try new things and be an innovator.
Jobs in technology are out there. It is much easier to get a job right out of school if you show initiative, ability to learn and contribute and to have a body of real work to display. When a hiring managers makes a decision to bring somebody in, they are gambling that they are going to contribute successfully to the company. If you do internships or Coops or show real initiative and a body of interesting work it will help the hiring manager feel that the odds of you succeeding are in your favor.