Seeking Out Opportunities That Support Growth
This is another subjective list of practices and processes to keep in mind for job opportunities that are likely better equipped to support intern, junior, and entry-level employees:
- Pre-existing Intern or Junior program
- Pair Programming sessions
- Code Review sessions
- Experienced mentors
- Ticketing system
- Version control
- Documentation and code standards
- Testing or contiguous integration
- Support for attending Meetups, Conferences, and Courses
And a list of some "red flags" to be aware of:
- Dynamics where the number of Interns or Juniors are greater than the number of Senior Developers
- Previous Interns and Juniors with bad experiences (siloed, burnt out)
There is an odd element of timing and happenstance that leads to a job.
I am routinely asked for some silver bullet solution for landing a job. But every company is different, every hiring need is different, every interviewer is different, and every recruiter is different.
At a bare minimum, I generally recommend a portfolio, a resume, preparation for interviews, networking, and job hunting.
Prospective employers will be interested in seeing your past work to gauge what you are capable of.
These days I recommend using a service like Github or Bitbucket to host your code.
If it is not possible to deploy the code as a working example, you should consider providing screenshots of the project in action. It may also be beneficial to create an accompanying case study or blog post about the project to capture design and development decisions.
Your work can also include: comments on Stack Overflow, experiments on Codepen, issues in bug trackers, and blog posts documenting solutions.
You will likely need to have a recently updated copy of your resume to present to your potential employer.
Make sure that it is legible, accurate, consistent, and generally typo and error free.
Bear in mind that employers are generally having to sift through a mountain of applicants for every job opening. Your first step will be not to make their job more difficult and give them an excuse to shuffle your application to the discard pile. Your second step will be to "sell" yourself as the person for that can do the job and do it better than anyone else.
Have friends and peers review your resume and offer suggestions. Resumes tend to be pretty subjective, so you may receive different and even conflicting advice. I recommend taking a look at five or so resumes and synthesizing what looks best to make your own take on a resume.
These days I recommend using Google Documents and exporting the file as a PDF since most job application sites want you to upload resumes in this file format.
There will likely be an interview process where your potential employer will be determining if you actually possess the skills for the job you are applying for and if you will be able to work well with the existing team.
While there are some fabled engineering riddles, most technical interviews will either involve a whiteboard or a live coding challenge.
Make sure you are comfortable with either setting with some practice.
Network and Connect
Some job opportunities do not come in the shape of a traditional job opening. These opportunities come in the shape of knowing someone that knows about a job opportunity. Not what you know, but who you know.
For people that do not have an established professional network, you will likely need a LinkedIn account. Since most job application sites will also ask for LinkedIn account information, it makes sense to just get this out of the way.
Meet peers and likeminded individuals. Follow and interact with them. Engage in meetups and conferences and other aspects of the technology community. Reach a point of familiarity so that when they do encounter a job opportunity, they think of you.
Search and Apply
Do not limit yourself to general job boards. Some organizations only post their openings on their own site and some don't post them at all. Find other avenues that are more industry specific. Be aware of job fairs and code challenges in your area.
Job requirements and titles for programming jobs are a messy business. Some places have much different usage of "junior" and "senior" positions. There is no definitive set of standard requirements for any position - it varies from organization to organization and from time to time.
Sometimes these requirements are just a dump of industry keywords. Sometimes these requirements are set by people that aren't familiar with the technical needs of the development team. Sometimes the requirements are outlandishly unrealistic ("5 years of experience in a technology that has only existed for 2 years").
These miscommunications have a tendency to scare away applicants because they don't match 100% to their qualifications.
I have come to maintain that you should ultimately just apply to any role that your are interested in and be prepared to defend against any requirement shortcomings during the interview.