Tuesday, August 26, 2014

"2048" for a Better Development Processes

Courtesy FreeImages.com
Can software games provide insight to development process? The addictive new math game 2048 – conceived by a 19-year-old developer – is an ingenious variation on the theme of the classic sliding-tile game. Tiles marked "2" and "4" appear at random locations on a 4 by 4 board. You have to merge tiles with identical numbers. The aim of the game is to reach 2048 before the board fills up. As luck would have it, the 2048 game is an excellent analogy for the process of software development.

Software developers develop new code. They add new bits and pieces, and the software "board" gradually "fills up." As time passes, solutions once deemed elegant inevitably start looking like bowls of spaghetti. There will be much redundancy and inefficiency, and the software will become prohibitively difficult to expand further. In order to sustain growth and manage the mounting complexity, someone will have to continue combining, refactoring, and optimizing the software.

Refactoring takes time and effort. It is not productive. As far as users are concerned, while refactoring is taking place nothing magical is happening in their world. But to keep moving forward you need to refactor. It might not work for absolutely everything; however, "2048" useful to keep in mind as a design pattern.

How do you know that a code is ripe for refactoring?
There are software tools that can help identify inefficiencies in the code. It is also possible to build into the processes in order to assess the need for refactoring during code reviews and bug fixes. Refactoring should also extend beyond the code – to databases, third party libraries and to supporting infrastructures, not to mention the processes around them.

Who should be refactoring?
Who among us wouldn't love to have someone on the team take that extra step to double check whether a class they're working on isn't already too long, or whether similar code that shows up in 10 places couldn't perhaps be condensed into one spot? True, it's rare to find such a purist. So, on the off-chance that you do find one, please give us a call!! Your best bet is to set up the time and/or identify dedicated "senior" refactoring resources on the team. To find the optimal ways to combine pieces on the figurative board, refactoring requires advanced skills and a holistic view of the system.

With a bit of work, you can have 2048 process set up and running in your team. BTW, how are you dealing with your technology growth challenges?

Daniil & the team

No comments:

Post a Comment