Abstract
You are looking for a job in software engineering. Now what? I'll try to present the wisdom that I've gathered throughout 3 years of professional software development. I'll sprinkle some ideas of the industry's thought leaders, and provide some outlook on what to do after reading this article.
Beginnings are always the hardest, the most uncertain and stressful moments, whatever we want to start. I will try to give a solid starting point and a general outlook for your career as a software engineer, grounding it both on my experience, as well as the works of some of our industry’s thought leaders.
Advertising
In order to get a job, you will have to advertise yourself well enough, so that a recruiter will decide to talk with you. In most good organizations, it is the developers who decide if someone is a good candidate. You have to consciously design an advertisement campaign to get through to them.
Prepare your resume thoroughly. Make sure there are no grammar and spelling mistakes, and that all your contact information and links are easily accessible.
Expose your projects in a public repository, e.g., Github or Gitlab and put a link to them in your resume. However, remember that recruiters don’t have much time to go through your projects. To counter that:
- Provide a comprehensive summary of your project in the readme.
- Write about your takeaways in the readme.
- Don’t lie! Remember that the code is public and can be verified. Also, a good recruiter will ask you about your projects on an interview.
- If you apply for a web development position, having your own webpage is always a good idea.
Remember that your main goal is to show what value you can give for the employer. Look what your potential employers need and try to learn more or make a project about it. A job interview is also a good time for you to ask questions. You can make a list of things you would like to know beforehand if it helps you. See this YouTube video by Dave Farley: Software Developer Interview Advice.
In healthy organizations you will be expected to collaborate. Show your collaboration skills by communicating well, asking good questions, and making others feel comfortable around you.
Working with people
It may not look like it at the first glance, but professional software engineering is done best when collaborating with people. Therefore, first and foremost, learn to communicate. You don’t have to be an expert right away, but sharpening your skills in naming and describing things goes a long way.
One thing that might help you is to have conversations on naming things. Pair program or simply have a quick talk on how to name a certain class and you will not only get a better name, but also a deeper understanding of the topic.
Communication is not the only thing, though. Sometimes, just being a decent person will take you further than you expect. Working with people requires treating others professionally and with respect. Don’t judge people because they don’t know something or be bitter to them because they interrupted you when you were “in the zone.” Work should never be more important than people.
Learning
Prepare for some serious learning.
The following books can have an enormous impact on your approach to software engineering:
- Clean Code,1
- Refactoring,2
- The Clean Coder,3
- Design Patterns,4
- Test-driven Development,5
- Extreme Programming Explained,6
- Modern Software Engineering.7
On top of that, you will have to learn from your colleagues. Ask a lot of questions and record the answers. Take up a good note-taking practice. If you find it helpful, you can take some ideas from my article on Second Brain.
Stay on top of conferences, talks, blogs, and other forms of knowledge transmission mediums. The ones I recommend include:
Don’t discard old ideas. Some of the “revolutionary” ones in modern frameworks or methodologies are actually 20 years old or as old as from 1968! See Old is the New New, a conference talk by Kevlin Henney.
- Read other developers’ stories, but know that every person has their own. Read their advice for junior programmers.
- 20 Things I’ve Learned in my 20 Years as a Software Engineer by Justin Etheredge.
- Avoid These Common Mistakes Junior Developers Make! by Dave Farley.
- What Software Career Progression Looks Like For Junior Developers by Dave Farley.
- What Juniors Developers NEED To Do | Trisha Gee On Junior Developers & Learning On The Job by Dave Farley and Trisha Gee.
- What A Junior Developer’s Job Is REALLY Like by Dave Farley.
- Embrace diverging your skills.
- Learn basics of frontend, backend, UI design, management, and whatever role you may think is “not necessary.”
- While you progress through your work, ask for more. Know your value.
- Record your success stories. Be proud of them.
- Take lessons in your failures. Don’t make the same mistake twice.
- After you gain some confidence in your work, remember that you will write code for your users, not for your pleasure. Learn to listen to their voice and respect it. You want your work to be used. Without user-centric approach, you will fail to make your software user-friendly, or worse, your software will not solve your users’ problems. You don’t need to be an expert right away, but knowing that this should be your aim is beneficial. See Your Programming “Hobby” WON’T Cut It by Dave Farley.
I may refine those ideas and create a proper article one day, but for now, please go to the provided resources for more in-depth advice.
Footnotes
-
R. C. Martin, Clean Code: A Handbook of Agile Software Craftsmanship. Pearson Education, 2008. [Google Books]
-
M. Fowler, Refactoring: Improving the Design of Existing Code. Addison-Wesley, 2019. [Google Books]
-
R. C. Martin, The Clean Coder: A Code of Conduct for Professional Programmers. Prentice Hall, 2011. [Google Books]
-
E. Gamma, R. Helm, R. Johnson, and J. Vlissides, Design Patterns: Elements of Reusable Object-Oriented Software. Pearson Education, 1994. [Google Books]
-
K. Beck, Test-driven Development: By Example. Addison-Wesley, 2002. [Google Books]
-
K. Beck and C. Andres, Extreme Programming Explained: Embrace Change, 2nd ed. Addison-Wesley Professional, 2004. [Google Books]
-
D. Farley, Modern Software Engineering: Doing What Works to Build Better Software Faster. Addison-Wesley, 2022. [Google Books]