How to Keep Your Project From Stagnating

Davor Tvorić

Frontend Engineer at Productive. Excited about anything related to computer science. I spend most of my personal time reading and playing video games.

May 22, 2023

I’m always pushing myself to look at the big picture of a project I’ve been working on.

You can easily get tunnel vision when working on a larger project, so it’s imperative that you constantly remind yourself to put everything in perspective.

This most commonly refers to a project’s business logic or domain, but an equally important aspect revolves around the technical implementation of a project. This can easily be overlooked so I’ll try to explain why you should think about it a bit more.

A Fresh New Start

Any time I start working on an unknown project, I always get the feeling that there’s too much bloat. I’m eager to do things my way. Sometimes my way really is better. Most of the time it’s the constrictions of the project that caused something simple to become complicated. This isn’t related only to code, but to third-party library dependencies, the architecture of a project, and so much more.

The worst thing you can hear in this particular scenario is “That’s how we’ve always done it” or “Here be dragons, so just leave it”.

Alright, maybe it’s not the worst thing, but it certainly doesn’t get your hopes up.

This might mean that you’re just stuck adding to a legacy that will just become more and more complex to get a hold of. Now, add a team of people doing the same and you’ll see how quickly the situation can get out of control.

A Glimmer of Hope

Luckily, this is not the case at Productive. I’m so glad to have finally found people with a similar mindset and a similar drive to improve what needs improvement. The whole idea is that each team member can and should contribute in any way they can. And there are plenty of options when it comes to contributing: 

I’m sure you can think of some more examples as well. Some are easier, some are more complex, but all of them are important. As I’ve said, this shouldn’t be something you do entirely on your own. You’re required to talk to your team and come up with the best possible way to improve an existing issue. It might not be the very best solution right off the bat, but it’s a step in the right direction. After you get the ball rolling, other people might be motivated to have a crack at something!

The idea that you have to be very experienced to do these kinds of things sometimes held me back from doing as much as I could have. I always thought that someone could do this better than me, someone with more experience or knowledge. That might be true, but if you have an idea and the time, it could be a great opportunity to learn and become better. Even if you’re new to the company, you’re most probably the best person to update the onboarding documentation because you can easily find out which step wasn’t clear enough! 

Organizing the Desire to Improve

  • Having a verbal agreement doesn’t cut it most of the time
  • Try to write down everything notable related to a certain initiative
  • Recognize the problems in a specific area and write down what exactly needs to be fixed
  • Having an end-goal will help everyone stay on the same page
  • Assign a responsible person (or people) for the initiative
  • That person doesn’t necessarily have to do the work (although they can), but they must keep track of both completed and remaining work
  • This would be equivalent to a project manager, but for a specific initiative
  • If possible, rotate the responsible people on an initiative
  • It will be an opportunity to learn more about the system and spark some new ideas
  • Let your stakeholders be aware of the initiatives and plan alongside them
  • Obviously, it’s not possible to spend your whole week on an initiative, but a shorter amount of consistent work should be enough to make meaningful steps forward
  • We try to invest from 15% to 20% each week, if possible
  • Organize your time and priorities regarding your daily work and initiatives

Add these points in with having all team members involved, as well as good communication, and you’ve got yourself a pretty sweet deal! The functionalities and the bug fixes will still be pumped out, but the overall developer experience and codebase quality will surely go up instead of down. This can also help people get a grip on a complex issue that might otherwise be left untouched.

A Couple of Speed Bumps Along The Way

Even though our experience has definitely been positive, not everything was perfect from the start. Some initiatives didn’t pick up as much as we expected, even though their general idea was important.

After we talked to our team members, we realized that the scope of certain initiatives was too broad. The general idea was good, but people didn’t know where and how to start.

To alleviate this, we split the problematic initiatives and narrowed them down as much as we could. That’s why it’s very important to talk to your teammates and get actual feedback, especially if you notice something unusual.

If you’re stuck on thinking what could be improved in your project, here are some of our initiatives that we came up with:

  • Release/deployment initiative
  • Improve the whole process ranging from generating builds to automating and posting a change list to Slack
  • Bug tracking initiative
  • Increase the number of resolved bugs and decrease the response time on each bug
  • Refactoring initiative
  • Components and parts of the system need to be simplified if possible
  • Improve the developer experience
  • Monitoring initiative
  • Improve the alerting and monitoring of our projects
  • Package manager initiative
  • Automate the process for keeping track and updating packages on all of our projects
  • Modernizing initiative
  • Keep track of inefficient practices and improve them with modern solutions
  • Schema migration initiative
  • Research and lower the risk of database migrations
  • Onboarding initiative
  • Ease the onboarding process and improve complex steps
  • UI framework initiative
  • Connect the design systems and create a library of simple components that are currently scattered

I’m convinced that things would go a lot slower if we stuck to doing improvements on the fly and without responsible people. Therefore, I’m really glad this took off because it’s really inspiring to see people make an effort in domains that are not as focused as they should be.

Once everyone started recognizing the benefits of an initiative, all sorts of ideas started coming out. It’s amazing how you get used to something so quickly, but a little push sets off a chain reaction that has you questioning why you didn’t think of something earlier.

I hope this helps you out and encourages you to try out something similar for yourselves!

Davor Tvorić

Frontend Engineer at Productive. Excited about anything related to computer science. I spend most of my personal time reading and playing video games.
More From This Author

Related articles

Related jobs