“If you are afraid to change something it is clearly poorly designed.”
― Marin Fowler
One of the most important steps in agile development is the refactoring. Before actually getting involved in agile methodology, we should spend some time writing the legacy architecture of the project. I do not think we should use this methodology when starting a project; I strongly believe it should be another step before the famous sprint zero. You should design your project first. I clearly understand that a well engineered code is going to help in long term for every agile project in several ways. If you don’t want to be afraid to change your code in the future, it has to be well designed and structured. This is done by people who engineer code; there is a huge difference between just programming and engineer code.
During agile development, there are critical stages that could either increase or decrease its speed and productivity, iterations depend directly on the project. As a matter of fact, during each iteration, the developers must have the freedom of refactoring the legacy code., Iterations should be short, so the complexity of each tasks will be easy to track. If you don’t want to be afraid to change the code, re-engineering it. Not to mention, the roller coaster of writing code with agile development could get out of hands. Sometimes it might be because developers try to deliver to many features at the same time. For this reason, during sprint planning, all stories must be split up into small stories. This will also allow lead developers to start refactoring the code when working on any story. this ride of engineering software might have a high intensity coding during its process.
In my experience, short stories have helped us to deliver stories faster to the QA Team. With this is mind, developers are allowed to execute the principle of refactoring during agile development. For lead developers, agile engineering practices are implied when coding.
“Although agile processes and practices are gaining more importance in the software industry there is limited solid empirical evidence of their effectiveness. This research focuses in particular on the practice of refactoring, which is one of the key practices of Extreme Programming and other Agile Methods.”
–A case study on the impact of refactoring on quality and productivity in an agile team. (Raimund Moser, Pekka Abrahamsson, Witold Pedrycz, Alberto Sillitti, Giancarlo Succi)
I need to emphasize that during this case study, they found that refactoring is key part for agile engineering. However, they mentioned the quality of the code also depends on developers. From my point of view, the design of an agile project is more likely to depend on the team composition. As a result, the code engineering is linked to developers which are actually refactoring all the time. These developers do this by default.
To point out, I am personally not scared to make changes on a big chunk of code when the project is well engineered. On the other hand, When I make a change on a NOT WELL STRUCTURED project, everything brakes.The main reason could be because the project was not set up on the right path when started. Here are some tips to remember if you want to implement agile development.
Tips To Remember
Engineer your legacy code before implementing agile.
Don’t take away the freedom of developers. Let them refactor.
It will help having a lead developer who is checking the legacy code once every another sprint.
If refactoring is not happening, fix the problem.
For the most part, the ride when doing agile development could have downs and ups. It is strictly involved with developers that refactor by default. When you are gonna start working using agile development, set up time to engineer your project.It is easy to make changes on the code without having issues. I think that a well designed project helps to deliver features faster, and this also generates higher productivity. Don’t micromanage developers or the teams, let them be! A Good team will figure out the best approach to solve a problem!
Tags: Agile, Agile Developers, Agile Nucleus, Code Engineering
“One of my most productive days was throwing away 1000 lines of code.”