A tale about refactoring code and a young boy that learned his lesson the hard way...

Big story 🧵 THREAD 🧵

#100DaysOfCode #Refactor #Lessons
Once there was a joyful jr developer full of dreams and excitement about his first deploy to production.
It was Friday in the afternoon just as he was about to close his last task of the week.
He moved the story to done and when he was about to close the IDE he saw a hidden class inside a folder from some old legacy code with the legend:
// DO NOT TOUCH. This works and it´s necessary.

"This comment is not right!" thought the young Matt..heous, mattheous right.
"I think I can make this better," said to himself as he finished his coffee and prepared his fast fingers to type the best clean code ever seen by humankind.
He started simple, partitioning a 150 lines method into a couple of them, removed unnecessary ifs, added some validations, and created an object to revamp a nasty long signature.
That was when he remembered he has seen that awful list of parameters somewhere else in his codebase, "Right!" Said the enthusiastic dev as he recalls where he has seen the ugly code. It was on the main external interface VB dll that was used to expose data to consumers.
This will be a great abstraction he thought, and ran to apply it on the dll too...
Satisfied with his piece of art and proud of his great refactor the young Mattheous compiled everything and went ahead to deploy before leaving for the week.
This is not a happy ending story as you can imagine since the refactors made by the young dev broke several interfaces with external consumers and when all the systems broke down on Saturday everyone was running to get this fixed.
The version had to be rollbacked and the beautiful piece
of art Mattheous did on friday had to be torn down. The more experienced dev of the team went ahead and recovered the good old code that to this day stills reads the text: DO NOT TOUCH. This works and it´s necessary...
Hope you like this weird kind of format, I know it´s not usual but I thought I would give it a shot.

Jokes and storytelling aside, lessons for you about refactoring code:
1) Never refactor just because you think is a good idea.
2) Think ahead when you tackle a big refactor.
3) Scope refactors to avoid ending up modifying half of your system and dependencies.
4) Never mix new features with refactors in the same task ( if something fails you won´t be sure which is the root cause).

Thanks for reading :)! Have a nice day!
You can follow @MattCodeJourney.
Tip: mention @twtextapp on a Twitter thread with the keyword “unroll” to get a link to it.

Latest Threads Unrolled: