January 25, 2024

Building a Portfolio

This essay is originally written in February 19, 2020 under a long-forgotten Github repo of mine. I read it and I liked it, so I moved it here.

---

Lately I was asked this question:

> As a junior developer, how can I build my portfolio to improve my chance to find a job? What makes a good developer portfolio?

I wanted to write a short essay to answer this question:

Building a portfolio is one of many aspects in proving your skills and improving your chances at landing in a good job.

The other aspects in finding a good job can be, depending on your locality, your educational background, previous work experience, professional network, and online presence.

Usually some of these different factors feed each other: your educational background may give you a good professional network, your previous company can strengthen your portfolio, your portfolio increase your online presence if you write some blog posts about the projects you worked on or if it raises attention in social media.

Hence, in reality your portfolio is not something totally isolated from all other things that matter in your career development.

That being said, we can also try to understand what makes a good portfolio regardless of the other factors:

If you are just starting programming or starting developing with a different programming language or framework, it is worth having some open source code where people can ensure that you have some experience with the programming language you are coding.

For example, if you never worked as an Android developer and want to get into an Android development position, then creating some open source Android app projects on GitHub may help you. Or if you want to showcase your knowledge of algorithms, it makes sense to showcase a repository of solutions to some well known computer science problems.

If you want to prove that you have a wide knowledge of Android SDK and common libraries, you can publish some sample apps to Google Play Store featuring different dimensions of your knowledge like background services, recycler view animations, sophisticated screens and UI elements. You can make apps that deal with location services, runtime permissions, image loading and caching, notifications, or complex network flows.

If you want to showcase your architectural knowledge and your skills in designing a clean, testable and maintainable codebase; creating an open source project of a well-designed architecture is very valuable even if the app does not do more than doing CRUD operation on some todo items. Because you prove that you know about dependency injection, unit testing and mocking, architecture components or, de-facto design paradigms.

All of these different possibilities actually mean one thing: a portfolio should be meaningful and to the point. So if you are purposefully building your work portfolio aside from what you do at your work (this can be challenging if you are not working as a developer or working on projects that don't improve your portfolio much) you can plan ahead of time and try to understand what kind of an impact and impression you want to create when somebody looks at your work.

To predict what kind of an impact different kinds of portfolios have, check out the work of other professionals. What do you think of them when you see their work?

If I want you to think of somebody who is really good at X, who comes to your mind and why? Is it because of their work? If so, take a closer look to their work. Try to mimic them. Can you also produce similar projects? If not, why? If you think you are missing some knowledge around some topic, then, yay, you just found a good opportunity to learn something new and experiment with this new thing. Maybe, you can also publish the results of this new experiment and put it to your portfolio, who knows?