draft
This article is a draft — it's some loose ideas in a form of bullet points. I wanted to take them out of my head, because the season for summer internship hiring has begun, so some ideas may be helpful, even unrefined.

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.

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

  1. R. C. Martin, Clean Code: A Handbook of Agile Software Craftsmanship. Pearson Education, 2008. [Google Books

  2. M. Fowler, Refactoring: Improving the Design of Existing Code. Addison-Wesley, 2019. [Google Books

  3. R. C. Martin, The Clean Coder: A Code of Conduct for Professional Programmers. Prentice Hall, 2011. [Google Books

  4. E. Gamma, R. Helm, R. Johnson, and J. Vlissides, Design Patterns: Elements of Reusable Object-Oriented Software. Pearson Education, 1994. [Google Books

  5. K. Beck, Test-driven Development: By Example. Addison-Wesley, 2002. [Google Books

  6. K. Beck and C. Andres, Extreme Programming Explained: Embrace Change, 2nd ed. Addison-Wesley Professional, 2004. [Google Books

  7. D. Farley, Modern Software Engineering: Doing What Works to Build Better Software Faster. Addison-Wesley, 2022. [Google Books