Ndifreke Ekott

Thoughts, stories, ideas and programming

31 Oct 2019

You should apply CI/CD practises to your personal projects too

Sometimes when we think of advance concepts like CI/CD, we generally look at it from the perspective of work. It is easy to think of applying such principles at work maybe because you are being paid more or it is part of your professional experience. We, however, fail to apply such processes on our personal projects.

I recently did a switch on my website by intentionally trying to apply continuous integration and deployment (CI/CD) when making changes to my site. I wanted to stop using FTP to upload my site. My blog doesn’t attract a thousand people per day but I do hope to keep it running and write for years to come. One voice will say, what is the point? It isn’t big enough to warrant such sophistication. I still went ahead and did it and here are the reasons to apply CI/CD to your hobby project no matter how small and unsophisticated it may be.

Acquiring new skills

If you are someone who is interesting in growing in the field of IT, you probably know the field is always changing. Every week there is a new framework, a change in processes, a change in the toolchain and there is always a new best practice introduced in the industry. To stay relevant and still get that good pay package, it is imperative to continue learning. CI/CD is the new norm and apart from being trendy, it does bring benefits. Unfortunately, not every company is able to adopt it from quickly enough, and it does take time to adopt for a company that has been in existence for years.

Consider a future were you need to change jobs and you are asked by a potential employer if you do CI/CD? You now consider picking a quick course to fill up that gap and you know you still need hands-on experience or practical projects to demonstrate this newly acquired skill.

My website does adopt some aspect of CI/CD and as I roll out more features, I get to gain experiences that I can also contribute back to my place of work. So guess who has CI/CD on their CV now?

Streamlining your workflow

As developers, you want to focus on doing what you love best, writing code that offers solutions to opportunities you are interested in. Pushing out code that displays that amazing interface you want to impress your clients or visitors to your site. With CI/CD, you can take away the repetition in your workflow - no more FTP to a remote server, automatically rolling back changes to code.

I currently use the Bitbucket pipeline to deploy my website and it has been freeing. Once I am done testing a feature locally on my machine and I push it, I just wait to be notified of failures to running tests or the deployment process. It is rewarding when you finally get that email saying - “branch deployed successfully”. It has also helped me split the task of managing my site into a few categories - Admin Task, Frontend and Writing. Streamlining your workflow helps you document your project.

Having a structured workflow and automated workflow helps you to think through what you are doing. How things should fit and work together. Using a tool like a pipeline means anyone joining you can learn about the system by reading up the documentation from your CI/CD providers site or tool documentation. Even when you go mad and decide to write your own custom CI/CD system, you are still creating a structure and as long as you aren’t inventing a new programming language for that, people can look at your implementation and figure how things work.

Bridge the divide between Operations and Developer teams

In most organisations, the Operations and Developer teams are separate and each isn’t really aware of the nature of the other’s job. Developers may see the Operations team as the people who manage the servers and add more memory and storage when ordered to. The Operations team, on the other hand, may see the developers as the code junkies who write buggy code that crashes or puts the server under load. While the code may work on the developer’s machine, there may be differences in the server that the development team isn’t aware of.

The operations team may not also be aware of needed resources that may be required by a new feature deployed by the team. This means after a release when the code is all in production, the fire alarm goes off and we discover the need for more resources, closing out possible security vulnerabilities.

Acquiring a CI/CD skill from your personal project means you get to understand the kinds of tasks undertaken by the operations team. This means you can be sympathetic to their plight and can easily way in to help solve certain operations task. I think full-stack development should include CI/CD and not just stop at knowing HTML, CSS, JavaScript and SQL Queries.

In summary, all I am saying is that applying CI/CD to your personal project is awesome and in the process, you acquire a reasonable skill to agument your current one.