“Rework” and “Simple is beautiful” is my way of programming ( like Naruto’s “way of a ninja”..) .
How I’m programing:
1. First program version.
I make a first clean version. All essential features included. This version should be good enough to be shipped with the final product in case of a Deadline Rush.
2. Gather Feedbacks:
– I test it myself and see if my design have some flaws.
– I listen to artists feedback ( Game designer or graphic artist ).
– I ask fellows programmers feedback if I was developing some kind of code reused by others.
3. Decide what to do:
– Adding features ?
– Changing the code design to be more flexible ?
– Erasing code ? ( User found that they don’t need this feature anymore, or change everything… )
In this stage, we just :
– Move code.
– Change the class design. For example if you work on a text file parser, you can change the class structure but function used to read a float number is still the same.
– Rename function/class to be more understandable by others.
– Add features.
– Simplify code to avoid any Bug source.
We don’t redo anything !
We don’t restart from the beginning ! I will explain why later.
5. Rework again:
We can rework a second time. This is only useful for code used on several productions.
This code should be “forgettable”.
For example I made a Text Manager when I was working in the Java Mobile Game industry.
It supports multiple language ( 7 different like russian, german, Italian etc.. ) , detects too long words, detects characters missing from the Font texture, distributes text in several pages on any screen resolution etc…
It suppress all Text’s bug which were almost 300 on each previous Game !
This code was tested on several productions. It was in this second working stage, solid and easy to use.
Rework don’t only apply on your own code, you should also employ it on code made by others. In this case you start at “2. Gather Feedback.”
I will explain why reworking is better that redoing in most case in a later post.