Software Engineering through the lens of Simon

My Software Self-Onboarding Procedure

Hello reader, have you ever thought about how you would get up to speed with software development when in an unfamiliar codebase? Whether you are working in a new codebase within the same company or starting at a new company you’ll need to go through an onboarding procedure before you are able to contribute changes to the code.

Due to some recent events I’ve been pondering this question and I realised that while it’s nice to have a well documented onboarding procedure to follow a lot of onboarding procedures are out of date or incomplete. Furthermore the more experience you have as a software engineer the faster you’ll be expected to onboard.

Therefore, I think it’s useful to think through how you would onboard yourself when faced with an unfamiliar codebase. For my procedure that I’m going to lay out below, I’m going to assume a worst case of being dropped into the new codebase with minimal or no onboarding. This way, no matter what circumstances I encounter, I should be able to quickly get up to speed without too much downtime.

Something that I will be doing is writing things down as I go through the onboarding process. This will make it easier for me to update the documentation later. If updating documentation makes sense as I go then I will do so, but some documentation is easier to write once you have a more complete end to end understanding of the system.

Getting to Know Production

My goal here is to be able to use the application in the same way that the customer would as well getting familiar with the logging and monitoring of the application. I’ll also become familiar with the lingo of the application which help me not be so lost when I’m looking through issues, attending meetings or talking with my colleagues about work.

The follow is a short checklist of some of the things I’ll be doing as part of getting to know the production deployment of the application:

Running Locally

After getting to know the application the next step would be to get the application running locally on my machine. This will allow me to play around in the code to gain a deeper understanding of what the application is doing.

Getting changes to production

Now that I’ve gotten the application running locally the next step is become familiar with the how to get changes to production. This is also known as the software development lifecycle.

Documentation

At this point I should be all onboarded and ready to contribute to the codebase. However I have just spent a bunch of time learning how to get started in this codebase and thus there is no better time than now to ensure that the documentation accurately reflects the steps I had to go through to get to this stage. So while I could jump straight into picking up work, I’ll first spend some time ensuring that the documentation is accurate and up to date.

Final Thoughts

Having thought through this onboarding procedure and having written it down, I feel prepared to work on any code base in future. It’s just one less thing for me to worry about when I’m in unfamiliar territory. If you are the type to get nervous when starting at a new company or within a new codebase then going through this exercise yourself should help ease your worries. If you are already working within a codebase and you need something to do in your downtime then going through this exercise will ensure that the documentation around your application is up to date, greatly helping anyone new joining your team.