This article is intended to help any software developer, from beginning to senior and higher, by providing some strategies to help land their next dream job. Now, not everyone has the same dream job—for some, their dream company may be Google, others may dream of working at a small startup—but this article will help you decide on some short- and long-term strategies to help you get that dream job. I'll start by listing out all the different strategies and then go a little more in depth for each one, explaining what it means and how it might be most beneficial—what it shows about you to potential employers.
- Learn in public
- Write a book
- Sharpen your soft skills
- Join online communities for a framework or language you like working in
- Contribute to Open Source
- Dive deep into a particular product
- Attend local events
- Attend conferences
- Get certifications
- Consider getting a higher degree
You may have heard this phrase tossed around but not understood exactly what it means. In short, learning in public is the idea of learning something and posting or sharing publicly about the process as you go. The idea itself doesn't have a specific execution behind it, especially now with so many ways to share content. When I first started with my own learning in public, there was really only one way to share what you were doing, and that was by blogging about it. I would choose a topic or something I wanted to learn, I would figure it out, I would take notes, and then finally, I would write up a blog post about what it was I had learned. I typically did a tutorial style post where I walked people through how to use a tool or setup a project in a new framework, that kind of thing. Now there are several ways that you can share your progress.
Blogging is a tried-and-true method for learning in public and raising your public profile. While it is more difficult now to get eyeballs on your blog, there are also other platforms out there that can help, such as Medium and Dev.to. I personally lean more towards Dev.to, as that is more of a community, and it allows you to post from your domain directly to a Dev.to site with minimal work. It's also geared more towards developers, so you’ll find an audience there more quickly than you will with something like Medium.
This is another avenue to learning in public if you like to do videos versus writing out a lengthy blog post. Videos can take more work, but if done well, can be easier to follow for some people. There are a variety of platforms to choose from but, YouTube is the most popular.
When it comes to actually sharing your code, you have a few options available to you now, such as GitHub, GitLab, and Bitbucket. Or, if you crave having some kind of interactivity to it, you can use tools like Codepad or CodePen.
Here are some of the things you can show prospective employers by doing this:
- How you communicate
- How you can explain complex topics and code to other software engineers (and maybe even beginners/non-developers)
- Your thought process as well as some technical skills
This is a bit of a bigger undertaking, and one I wouldn't recommend until you've managed to get a few blog articles under your belt so that you feel you're ready to try and tackle a book. Most people who have written books are typically other developers just like you who took the time to dive deep into a particular framework or language and then turned around and tried to teach that to other developers or helped out with that project in significant ways. Writing a book can pay dividends well into the future. It's been a number of years since I wrote several chapters in one book and another book on my own, but I will still run into people in the industry who recognize my name.
Before you decide to tackle a book I would recommend:
- Picking up and reading through the books that helped you learn something
- What journey did they take you on as a software engineer new to the topic?
- What fundamentals did they teach?
- What did they assume you already knew beforehand?
- Try writing an outline for the book you would want to write
- Share this with other developers—did you miss anything? Did they suggest a different order of things?
- Research that space
- Are there already books written on that subject? Are they missing something key? How long ago were they published? Did they sell well?
- What is the potential size of your audience? Before you say "All developers" really think about it and come up with a realistic number. How many are on the mailing list, forum, or message group (Slack, Discord, etc.)? Those people are probably your first target audience, though not necessarily all of them.
- How many different books are there on the subject? In developer publishing, there are around 5 - 6 different publishers. Do they all have a book on this? Or just one publisher? If 2 or 3 do, then maybe one of the other ones would like to have a book that covers this topic as well.
- Prepare a book proposal with an outline (the tech publisher Manning has a proposal template you can look at to get started)
Writing a book is a big undertaking, and ultimately it shows quite a lot about you. In addition to demonstrating that you can work with someone who is critical of your work (e.g., editors may request several revisions to make the book better), getting a book published shows that you have:
- The ability to stick with and finish a large project
- Good communication skills
- Critical thinking and organizational skills
Soft skills can encompass a lot of different things, but when a tech company typically talks about soft skills, here is what they mean:
- Communication—the ability to express yourself coherently and succinctly to others, which includes not only other software engineers, but quality assurance testers, project leads, and members of external teams.
- Interpersonal skills—the ability to not only communicate but also listen and understand where someone else is coming from.
As engineers, we can struggle with getting a point across to others, especially if they are non-technical. Sometimes, you can use analogies to help them understand what you're trying to explain. Other times, we may not be completely listening before we jump in and start explaining things—in other words, you aren't allowing the other person to finish their thought. This can lead to friction between coworkers and prevent the free flow of ideas.
This is probably one of the trickier things to work on, but you can always start by asking friends if you tend to interrupt them when they're telling a story or trying to get a point across to see how your listening skills are. You can also practice on your non-technical friends by seeing if you’re able to explain what it is you're currently working on—get it as simple as possible so that they have a basic grasp of the problem you're solving and how you're solving it. Always an interesting exercise. If you're at a meetup or networking with someone, ask them to explain what they are working on and then attempt to tell it back to them, "Oh, so you what you're doing is similar to..." and then replace it with an analogy.
During the interview process, you can talk about what you've been actively doing to improve your communication and interpersonal skills, and share your progress and what you still feel you need to work on. This shows that you're interested not only in your technical growth but also your growth in other areas.
Online communities have exploded since I first started my career path as a developer. Originally, communities were limited to online forums, mailing lists, or IRC channels. In some cases, these have been replaced by Slack, Discord, Whatsapp, Telegram and other services. But the benefit is still the same.
Joining is the first step. The next step is to start answering questions that other developers are having. If you can't answer a question, then follow along and see what the answer is. Jot it down somewhere so you have it easily accessible. Then you can start asking your own questions. Be sure to pay attention to the group guidelines and search through older questions (if available) to see if your answer is already there. Practice your documentation skills here by spelling out exactly what you're expecting, what's actually happening, what you've tried, where else you've searched, etc. All of these things show that you understand that everyone's time is valuable and that you respect it. If you get an answer that may be terse or brusque, the first rule is simply this—don't respond right away. Take a breath. Take another breath. Maybe a few more. Re-read the response. Did they not understand your question? Did you miss a step somewhere? Did you forget to state something you had tried? Calmly respond to them with, "Oh, I'm sorry, maybe I didn't state it clearly enough..." or "Oops, I forgot to mention that I had tried that, and this is what happened..." Once you get through enough of these types of interactions, you get past the stage of being a newcomer to the group, and you can be a positive resource for other newcomers. Help them ask the right questions. Help them learn how to research problems.
- You know how to properly research and solve issues that you run into
- You know how to communicate in a well-thought-out manner
- You know how to explain a bug or issue to someone else in a step-by-step way so that it's easy for them to reproduce should they need to
- You can become a resource to others to help them
This is a natural follow-on from the previous technique. Once you have started getting involved in the online community, you may be ready to actually contribute to the project as a whole. Now, this doesn't necessarily mean that you're dropping code right away; you could be helping with documentation, testing out new builds, or participating in discussions relating to new features. Open Source is one of those areas that, no matter which project you choose to participate in, you will probably be welcomed. It's always difficult to find people who want to help.
- Similar to working at a job, working on Open Source shows that you can work with a team and that you can work asynchronously.
Is there a dream company you want to work for? Or maybe a specific product you want to work on? As a job seeker, a good way to get there is to become an expert in that tech company or tool, learning as much as possible. Where did the idea for their product or company come from? How long have they been in business? Is there any aspect of the products they make that are Open Source (if so, dig through that source code).
This shows that you are invested, especially if you're active on their forums, or have asked questions elsewhere, or even better, answered some questions elsewhere. Sites like Quora or Stack Overflow tend to be full of questions from developers on how to do something with a particular piece of software or library. Seeing what problems other people are running into may give you some ideas on where the company can make improvements.
There are a number of local events that you can participate in to connect with other developers, find out what they're working on, or what local companies are building. Examples of events to look for include:
This technique is primarily about networking, connecting with fellow developers or businesses. Use the time to find out what others are working on, what kinds of tools, languages, frameworks, etc. are they using.
It's possible that you could find your next job here or find someone that can introduce you to your next job. Hackathons and startup weekends are especially fun, as you and a small team collaborate to get something ready for demo in a short period of time.
Attending conferences can be a great way to land your dream software development job. This is because conferences are typically attended by industry professionals, including recruiters and hiring managers, who are looking for talented individuals to join their team.
When attending a conference, come prepared with business cards and a polished elevator pitch that highlights your skills and experience. This will make it easier for you to network and make connections with potential employers.
Additionally, attending conferences can help you stay up to date with the latest trends and technologies in the industry. This will not only make you a more knowledgeable candidate, but it will also show potential employers that you are committed to your profession and passionate about staying current.
Some conferences even offer job fairs or career events, during which you can meet with recruiters and hiring managers in a more formal setting. Take advantage of these opportunities, and make sure to follow up with any contacts you make after the conference is over.
Overall, attending conferences can be a valuable strategy for landing your dream software development job. It allows you to network with industry professionals, stay up to date with the latest trends, and potentially meet with recruiters and hiring managers in person.
One of the most effective strategies for landing your dream software development job is to get certifications. Certifications are a way to let potential employers know that you have the knowledge and skills necessary to excel in your field. They also demonstrate your commitment to ongoing learning and professional development.
There are many different certifications available for software developers, depending on your area of expertise. For example, if you specialize in programming languages, like Java or Python, you may want to consider certifications from organizations like Oracle or the Python Software Foundation. If you focus on web development, certifications from organizations like Google or Microsoft can be valuable.
When choosing which certifications to pursue, it's important to consider which ones are most relevant to the type of job you want. Look at job postings for positions you're interested in and see what certifications are listed as requirements or preferred qualifications. This will help guide your decision-making process.
Once you've earned your certifications, be sure to highlight them on your resume and in your job applications. This will help you stand out from other candidates and demonstrate your commitment to your profession. Additionally, many certifications require ongoing education and renewal, so be sure to keep your certifications up to date to maintain their value.
One strategy to consider in landing your dream software development job is to consider getting a higher degree. While a bachelor's degree in computer science or a related field is often the minimum requirement for many software development positions, having a master's or even a PhD can give you a competitive edge.
Not only does a higher degree demonstrate your commitment to the field and your willingness to invest in your education, it can also provide you with specialized knowledge and skills that make you stand out from other candidates. For example, a master's degree in software engineering can give you a deeper understanding of the software development process and the ability to manage large-scale projects.
Additionally, having a higher degree can open up opportunities for more advanced positions with higher salaries and greater responsibility. It can also make you a more attractive candidate for leadership roles, such as project manager or technical lead.
Of course, pursuing a higher degree requires a significant investment of time and money, so it's important to weigh the costs and benefits before making a decision. However, if you're serious about landing your dream software development job and advancing your career, getting a higher degree may be a worthwhile strategy to consider.
Landing your dream software development job can be a challenging task, but it's not impossible. By utilizing the alternative strategies mentioned in this article, you can set yourself apart from the competition and increase your chances of getting hired. Remember to tailor your approach to each job opportunity and always be willing to learn and adapt. With persistence and a positive attitude, you can achieve your career goals and land the software development job of your dreams.
Sign up for my mailing list and get your free ebook
"The 30-Minute Project: How to improve Your Side Project Game to Become a Better Developer"
at 30-Minute Project