Hi
Leading a year long project
This is kind of a retrospective of a particular project I recently completed to maintenance status. I was tasked to lead a project from start to finish, and after a different project was completed I would have 1-2 other developers helping me.
Overall, everything went really well from start to finish. Total dev time was about 12 months to complete the project, about the same as calendar time.
Know your team
A couple of big problems we had were due to my lack of consideration of my colleagues. One mistake was assigning them larger tasks. I should have been more mindful of their capabilities, and broken down the tasks accordingly.
Some information in the tasks that I created was too implicit, which caused confusion. I should have been more explicit and it probably required some specific knowledge of the domain (that I had acquired by reading manuals).
Steps to take next time when allocating work:
- Break the task down as if I was about to work on it (sub-tasks of maybe 1-2 days each)
- Research the item and provide as much clear information as possible
- Link any resources - manuals, videos etc.
Pragmatism in practise
At first, I was very strict when reviewing pull requests. I nitpicked not just basic clean code principles, but things like variable naming, and things that were just different to how I would have done it. This is how I have always performed code reviews, and I always thought I was really good at catching problems.
In hindsight, I realise this was wrong.
After the first few weeks, I realised that we were never going to release anything if I kept being so pedantic. Whenever I saw something to correct, I immediately stopped myself from commenting, sat back, and thought about what led them to their decision. I feel like this was not just a bonus for our schedule, but also for team morale.
Looking back, I understand now that allowing tech debt (within reason) is very important to get a result sooner. Also, I need to follow my own advice more often!
Communication
Another thing I was lacking in was communicating relevant information to all the stakeholders involved.
I did a great job of ensuring the internal team was up to date on everything, but a couple of times the client had to reach out to check our progress. This made me feel a bit guilty, because as the lead developer on the project I should have been a bit more proactive.
One thing I learned from a team member is that people love visuals; sending a simple screen recording or screenshot can provide very valuable information. Another great tool (especially for asynchronous communication) is Loom, with which you can record your screen with a voice over, and send someone a URL.
I’m sure there are many great tools and techniques for communication, and I’m excited to try them.
I really enjoy challenges like this because it allows me to reflect and grow on what lessons I learned throughout. I have certainly learned a lot!