In Response To Skills of a Successful Software Developer

Written by: Timlah | Written on: 20 Apr 2024 | Estimated reading time: 8 minutes

Recently, a no longer available bundle on Humble Bundle caught my attention; a bundle of Manning's books. Manning is a computing specialist publisher, of which I've read a few of their published technical books before and have enjoyed them. They're usually well edited and easily digestible. So seeing a 'Code like a Pro' bundle, I had to get my hands on it. I intend to get through most if not all of the books, but for the price I paid, it was a steal.

Today I'd like to talk about a point in the title Skills of a Successful Software Developer, Section 5.2, about Side Projects.

I’ve suggested side projects to many new developers, and, more often than not, the answer I get is along the lines of "I can’t think of anything interesting and original to work on; everything’s been done already." - Skills of a Successful Software Developer, Section 5.2

Much like the author Fernando Doglio, I think this is wrong and I've seen a lot of this sentiment too. I'd like to offer my own experiences as someone who is always working on side projects and how those projects have helped me professionally - and even in my passion for developing software.

In support of side projects

I've always worked on things that interested and entertained me. I loved playing video games - but more than that, I really liked to tinker and to practice what I enjoyed. I knew that everything I worked on was a way to start getting on the path I wanted to be on.

img

The harsh reality was that as a young adult I didn't know what I wanted out of a career and out of life. So I made things that I enjoyed - And sometimes, other people enjoyed them too! These side projects helped other people in ways I didn't even think imaginable. For the longest of times, I ran a Wordpress blog and social event called GeekOut South-West. It started as an excuse for me to meet people, but it escalated quickly.

When I was getting started, I wondered how would I get people to that event. I started with a simple website and blog. The first meet, only my friends were there. Understandable! The second event, the event was added to Meetup and we got to meet about four new people. That was great, so from there, I started to go on a journey of learning about how to meet even more people, how to get people to join us.

This process was a long, arduous journey, which ultimately ended up with my events taking up a large portion of a pub, with over 70 attendees per month. To get there, I had a small team of three - Myself, Joel and Chris (who is also the co-organiser for Bristol's Pride Comic Art Festival). We would, every day, post a new blog piece. We worked together on bigger collaboration pieces; we had a second event location in Shropshire; we did interviews; we helped one another and continuously improved our craft.

It was a great time and I like to think the three of us took it as a personal project to do the best we could. If you two see this, sending much love to you both.

Along with meeting Chris as a result of my efforts to make a social group and getting Joel on board, I also met a lot of incredible bloggers, many of whom became my long time friends. Just wanted to give a shout out to Later Levels for always being a great friend and who has always supported me as a blogger. You rock, much love to you! But, running a blog, running an event etc, leads to a fantastic community.

What does my former event and site have to do with this?

Running that event and the Wordpress site eventually took me to the brink. Every month I was working on something; hosting an event; writing blog posts; running competitions; making merchandise (which practically never sold); making YouTube videos (which were barely seen); and much more. I was handling the relations between attendees and the pub we met in, making sure that we tidied the place up after people and addressing any concerns on both sides.

I did this while holding down a full time job. I lost my passion for it. It became a second full time job and was no longer a side project. I wanted to make a bigger and better website; I wanted to host bigger events; I was chatting to someone about a third location. The event was no longer something I could keep on doing. The mantle of taking it all on wasn't wanted by anyone else outside of our core team, because of the associated costs with running everything.

In January 2020, we ceased to be. In the run up to the shutdown of the event, I started working on new skills and, you guessed it, new side projects. This time, it was game development. I made some deplorably bad 'games', but I went into it with the same mindset I went into my social event with. I will give it my best, I will see what I can improve on, I will build and iterate and constantly push myself forward. I'll learn what I need to learn when I need to learn it.

My first 'Clicker' game in Unity

My first 'game' was a really simple clicker game. Just some buttons and some score. Get to a certain score and you 'win'. The second thing I made was a 2D RPG, which didn't go anywhere. The third thing I made was a 3D RPG demo where I struggled with doors!

However all of these little side projects led to me applying to get into a software engineering apprenticeship. I was able to use my side projects as an example of why I would be a good fit and I managed to get the apprenticeship. From there, my career has seen me do DevOps, with Python, Ruby and Terraform. I've also had the pleasure of working on frontend and backend software engineering with Scala. But, when I log off for the day, the learning continues with game development, this website and other projects.

Side projects can become more than just a side project. They can become a passion piece - A personal project. For many, a side project is something you start, get to a point and put down. But the real goal of a side project, in my opinion, is to see it through to completion. After all, that's going to be a valuable experience you can use later in life.

What does a software side project look like?

As a developer, side projects are pretty similar. This website is a major side project of mine, which started because I wanted to make sure I learned more about Scala, the Play Framework, Microservices, Frontend Development and more. Over time, this website went from not-at-all interactive to something where I can reach out to a plethora of folk. The front page has been updated on multiple occasions, new pages have come and gone, the blog came to life, comments are in place with Disqus.

Matchagana

But this site started life as a simple Scala Play site, with some very basic CSS and an idea of how it should look. I just wanted to learn Scala Play and a bit of Bootstrap. I didn't think I'd write my own blog system initially - But when I got it up and running, you have no idea how happy it made me. I did this through research, hours upon hours of failing and staring at those dreaded Scala Play error screens when manual testing.

Scala Play Compilation Error Screen

So, how does a software side project come about? In a similar vein to any other project:

  1. A goal - Come up with a goal; a great goal can be to replicate something else. Replicate this site for yourself, make it into your own if you need a goal.
  2. Initial Research - Once you have a goal, you need to do a little bit of beginning research. Don't get stuck right in without an understanding of how to get started.
  3. Start - After some initial research, get stuck in.
    • Fail fast - You will suffer some setbacks and failures; embrace them. Learn from them. Write about them.
  4. Build iteratively - Make each part of your side project a task. Make a new About Me page. Implement Google Analytics. Add basic Javascript functionality.
  5. Share - Community is important. Share your side projects, understand feedback and try to keep improving.

In conclusion

The book's a great read, if you're looking to get into software engineering as a career or even as a hobbyist. You'll learn a lot about what types of skills you'll need. It gave me some food for thought and I found it a valuable resource as a reminder, that on this journey as a developer, it's not about the final outcome of me as a developer, but to constant learning along the way.

Much love to all, happy tinkering - Timlah