Experience Dealing With Lagacy Projects
I’ve been working in a software house in Bali since graduated 2 years ago. During my work I’ve worked on several projects that use the Ruby on Rails framwork, it’s all just a lagacy projects and they are still actively maintained. My feelings become messed up when everytime I work on these projects, sometime I feel challenged but also being upset at the same time 😁
After all this time I worked on it I could get some things become a reference everytime I made or worked on a project, especially if it was a long-term project. These things are actually basic but (sometime) we are so lazy to do that, they have a significant impact on the long-term development of application and we have to get them done.
1. Write The Clear Requirements
If you have a Project Manager you aren’t really care for this section, you just need to understand what they need to achieve a goal of the project or feature. But it’ll be edge section when you are a self-employee, you must have good understanding of what the customer needs and translate the idea into system requirment.
Have a good understanding of the customer requirment will help you to making sure on the purpose of the application/feature. You’ll know what the input and output of the application and doesn’t make you confused when implementing it. We also know which technologies and services can be used to solve problems easily and quickly but still hit the target and keep on track.
Personally, I use 2 apps to dealing with this section like a Notion and ZenHub.
Notion is a good application for note taking but they are have a ability to be a project management application. It’s free and you don’t have to worry about the features you’ll get, for my needed is more then enough.
ZenHub is a different application to handle my purpose, especially used for office purpose because it’s FREE 😁. This app is a pure project management with a great integration to Github and I’m don’t argue with that. You can track the Github issue and pull request easily.
2. Create A Planner
If you’re working on multiple projects, you need to have a good time management skill. Working on task according to schedule is very important in this life. You can balance your life as a worker and your personal life, you need take your quality time to make yourself look fresh and stay focus every single day.
I used Google Calendar to deal with my time. You can use time blocking technique to schedule your activity for a whole day. So, what does that have to do with legacy projects? If you don’t know a workflow of the features, it’ll take a long time to find out what that feature does. It’s like what input received, process executed and the result of the process. Because every developer have a their own style to solve every problem on their face.
So, time management really helps you to know how many hours in a day you will work on the task and what you have should do in the next hour.
3. Testing Is a Must
Do you know about testing? Testing has many terms based on its their techniques. There are several techniques that are often being used are Unit Testing, Integration Testing, End-To-End Testing, Blackbox Testing, Whitebox Testing. I’m not going to talk about it now because I don’t have deep knowledge and skills to share about these topics at the moment.
With testing you’ll know easily the behavior of the application made and the possible cases that will occur. Basically we don’t just add a new features, but we need to make a code improvement to make it cleaner and easier to read. Finally I know why every job vacancy always have a requirement like “Be able to write a clean and testable code” 😁
“Your code is the best documentation for your colleague.”
I love this statement that is very approriate and relatable.
4. Monitoring Application
Monitoring allows you to ensure that your application is running properly, and also to evaluate the performance, stability and usages of your application to handle all request from customer. At this moment, I just can integrate my project with Error Tracking and Log Rotation.
Error Tracking could help you get information about errors that occur quickly. Rollbar is one of the Error Tracking application that has helped me a lot this time. They have great integration with Slack too, so the error information received faster. What about the Log Rotation? Is a software to split our logs file into small peaces by the time according to the configuration. Usually I divided it per day to make it easier and reduce the file size.
5. The Documentations
Documentations is sometime boring to make eventho it’s very important for the future. As a software developer the documentation will help us to keep tracking all aspect of application, ensure consent and expectation also it improves on the quality of the software. It also has main focus on development, maintenance and knowledge transfer to other developers.
Conclusion
Working on legacy project is very fun if the 5 points above can be implemented properly. In addition to make us more comformtable doing a task, it will be easier and faster. It can also help new developer to adapt more quickly to the project.
Thank you for reading my post and I hope it can provide good benefits for you mate.