Projects for aspiring Software Developers

Watched a YouTube video last night on projects for beginners to Software Development. And I have to say that I largely disagree with the approach and the way it was presented.

For context, I've been involved in the hiring process before, and if you took this video at face value and used what you saw there as a portfolio or as a justification for your skills I likely wouldn't hire you, even for a junior dev role.

I'm not saying that no one would hire you. But to me, the kind of light examples provided here would speak to your lack of experience. 

I have a few key issues with the video:

  • Neither specific enough, nor acknowledges lack of breadth
  • Skills it would teach are too generic
The content covered is stuff that pretty much every developer has to do, and will do at some stage. So, here is how I would revise it.

Firstly, I would point out that providing any comprehensive guidance would be difficult and result in a video/blog post too long to consume. IE - I would acknowledge that I couldn't possibly provide an answer that would be perfect for both front end and back end devs, or both C# and Rust, etc...

My suggestion would be that his 1-3 levels are the bare minimum to say you've even embarked on a journey to learn software development. And the best place is to probably determine what you want to focus on learning first and finding a paid course on something like Udemy or even looking for a free course on YouTube. Then, follow along. Those will almost always cover the sort of complexity in those first two levels. And larger courses will typically go well into, if not exceeding the "capstone" project requirements.

Once you finish that you should hopefully have a better idea of what you want to focus on. Go through LinkedIn or other job websites and try and find examples of real world jobs you would actually want to get hired for. Look at the required skills and "buzz words". Choose a handful and learn what they mean and how to apply them.

Then, create a GitHub or GitLab account and start your new projects there. Very few people will take you seriously, even as a junior dev, if you have zero experience with Source Control. And most source control systems these days are Git based. If you don't want it out in public... self-host GitLab. It is a learning experience in and of itself. 

For instance, looking through back-end jobs you might see "REST API" pop up a lot. And some Databases. Learn what a REST API is, choose a DB (preferably a popular one) and write a REST API which communicates with your database of choice. 

Learning like this provides concrete skills that you KNOW are associated with the job you want. You WILL be asked questions about concepts related to the job you're applying for. There are some skills as a new developer or junior you may not be expected to fully know. For instance, you may get a pass for never having worked in an Agile team before. But, you can still go and learn the basics of what that means. And you may not have extensive experience with Git and PRs and managing and merging between multiple branches. But, if you at least have exposure to the skills, that looks good. 

In short, as an interviewer, I could care less what personal projects you've done unless they demonstrate skills relevant to the role I'm hiring for. And you had better be able to back up that project by being able to explain what you did and why.

The kind of broad suggestions recommended in the linked video have a serious flaw. If you just happen to be particularly motivated, you could complete that in about a week. If you used ChatGPT you could finish it in a few hours. Which means that the bar is set pretty low if that is all you require to hire someone. Even for the most junior of positions. 

My requirements, admittedly, aren't much harder to meet. But, you would have to spend more time than that on my projects (minus those "cheating" with ChatGPT but would be lost on explaining their work). And you would have spent that time learning the specific skills I'm looking for. You show, one way or another, that you are capable of learning the skills needed and you have shown that you likely won't take forever to onboard.

Also, keep in mind that expectations, even on entry level positions vary. As I said before, what the original video suggests may actually be enough for some. But, for others, even what I've suggested won't be enough. I went through an Amazon interview for example. It was just a normal dev job. But you needed an in-depth understanding of a whole lot of the field of computer science. Even if it wasn't pertinent to the specific role you were applying for. 

Basically, you needed the experience you would get while going through school for a degree. A solid understanding of many design patterns and algorithms. Recursion. Architecture patterns and so on.

But, for an entry level dev job, being able to prove that you not only understand the languages and frameworks required, but also the base concepts required for the job will go a lot further than being able to say "Hey look at this Twitter clone I made". 

If you're not sure what you want to do. Then find friends and/or family and write something for them for free. I wrote the software for both my wife and brother's businesses. I did it for free. And the first versions took some time. But, at the end, it is impossible to deny the scope of such projects and their utility. Or write something you will use yourself. Choosing a project that is meaningful to you or someone you know forces you to solve real world problems. It means it will likely get tested by real users and go through changes and refactoring. 

Also, write some unit tests.

Comments

Popular Posts