1K Blog Marathon: Day 53
Did you ever find yourself searching for ways to “refactor” your codes? Are you a perfectionist? Do you prefer vague single-line code versus easy-to-read source? Or you just want to take your programming skills to the next level and discover new ways to solve a problem? That my friend, is what we call “Gold Planting”.
I’ll admit, most of the time I practice Gold Planting – I take up so much time revising my codes and GUI and search for a never-ending ways to make my program more “perfect” than before. It pays off, at times because I introduce new “tricks” and learn other “tactics” along the way. But when weighed with the times lost, past deadlines, over-crowded program – is it really worth it to “Gold Plant” my software?
In Project Management
Gold planting in project management is really a scary thing to do, especially when you are in a Rapid Application Development – time is scarce, error is a sin, and deadline is a grim reaper! Although other times, it’s a good thing to introduce new and more effective ways to the team. It feeds our ego that we have created a better program by adding features.
To sum it all, I listed 7 (my favorite number ^_^) CON’s and PRO’s of Gold Planting. Let’s start!
Cons
1. Less is more
According to the principle of KISS, or Keep It Super Simple, by being straightforward and simple, you are left with raw and valuable function of your program. If you are tasked to create a calculator, you don’t have to add marquee to make the digits move, or doesn’t need to add Text-To-Speech-Reader if your simple calculator is only expected to do MDAS. It’s not only confusing, but overloading. Like you force 100 people inside a 75-limit bus. Remember KISS – Keep It Super Simple.
2. Customers won’t notice
Most of the time, the needs of the user are only one – may it be for processing a single task, or they need a single “OK” button to do a complicated one. They don’t have the time and interest in the tabs and dropdown options. They only use your app to do the task they want. Most of the time, you are the only one who needs it – to be honest.
3. It kills time
If you are working under a strict deadline, I don’t think Gold Planting is an option. For example:
Boss: What are the updates on the development of [Insert cool app name here]?
You: Boss, based on the [Insert cool theory you’ve just googled an hour ago], we need more time to implement the [Insert cool function based on your research] due to its complexity. But by using it, the processing time is proven to be faster by 20%.
Boss: Okay. So in what percent are we now in the development phase?
You: Nearly… 45%!?
Narrator: Just so you know, the deadline is next Friday – 2 days to go!
4. Upgrades should be Versions, not prototypes
Focus on creating first your MVP. According to Eric Ries, MVP or Minimum Viable Product is a concept from his book “The Lean Startup” that defined as a version of a new product that can stand alone on its own, simple yet completed with functions to validate learning about customers with the least effort. Meaning, it has no “upgrades”, it’s just a “prototype”. And by being a prototype, it’s function is not to be “perfect” per se, but to get customers to use it and receive enough feedback – which will steer the direction of your app’s development. By this way, you can get what the customers really wanted and needed.
5. It can introduce new bugs
Adding newly searched algorithm or framework, especially when not familiar, can introduce new problems. It can break other codes or affect with compatibility issues. It can also hinder the development by giving you another learning curve to deal with. If it doesn’t really do any good, it’s not worth your time, and it’s not worth debugging.
6. It doesn’t add “real” value
By saying “Real” value we mean “Usable” features. In our calculator example, a real and usable value may be larger fonts for older user, but a hover effect may not be necessary. Also, in refactoring codes, obfuscating or hiding source from reader, or using different procedures for “every single actions” may not only be tedious, but also time ineffective when developing. Focus on getting what your customers really need – that is where the real value is residing!
7. It adds complexity to the source code, and complexity to the user
As you introduce new features, the old UI can be a more complex one. Congratulations, you have just ruined your User Experience! It’s like cutting onions using a Swiss Army Knife – it does the job, but the user suffers. A program should focus on its objective, be it for calculation, automation, sending or receiving messages, or cutting onions! ^_^
To balance the equation, Gold Planting is not an “All Evil Practice”. At the least possible reason, it can help you learn new things and techniques – still in line with my motto: “Stagnation is a sin.” I’ve listed my “good job moments” for Gold Plating.
Pros
1. It’s a one-stop-shop!
Just don’t overdo it and avoid crowdedness, being a one-stop software is good. How convenient to have a unit converter when dealing with calculating land areas. And it’s not a far feature to add calculation history that the user can view in case they wanted to revisit old calculations. Many software offers one stop shop solution to RELATED PROBLEMS. That’s the keyword, it should be an added value to related problems. You don’t need face recognition to your calculator, just saying.
2. If it’s helpful, regular customers will notice
Contrary to the above Cons, if a user is really utilizing you app, they will find your feature no matter how misplaced it was. Also, these customers will suggest some features that they need – listen to them. If it really is helping them, I mean legit, do it. Just do it.
3. Hours killed vs Lessons Learned
Let’s not go too far – trade your time for the new learnings, is it worth it? You are the only one that can answer it, if it’s worth it, do it. If you will learn it just for the sake of learning, you can set aside it, bookmark it, and come back learning when your job is done. But if it really can help you in your project, it’s not a penny lost when you learn new skill. Maybe it’s not hurting to learn new framework, if it means you can solve your “refactoring” problems.
4. MVP on Steroids
Prototype are meant to fail, or expected to spit errors. It is okay, you just wanted to know the response of your customers. But it’s not a butt hurt to make it presentable, error-free and usable. Adding RELATED, VALUABLE FEATURE is not a big deal. Your MVP, if well accepted, may not need further updates! (Just kidding, there’s no program that doesn’t need updates ^_^)
5. Take it as a challenge and an avenue for learning
Bugs, bugs, bugs everywhere. But don’t leave the battle zone – try Gold Planting (bombs). You can exterminate these problems if you will learn new skill while developing. And who knows, you can use this new found learning to your other projects.
6. Make it valuable
If it doesn’t add real value, it’s not worth adding. Make it valuable. Make sure that the refactoring you are doing on your code really make the algorithm faster, less buggy. Make sure that the new button you are adding is usable, and not just a decoration to fill an empty space. Make it valuable.
7. When matched with great UI/UX, it’s a sure win
Try not to make it more complicated – try to at least use a double-edge knife other than a Swiss Army Knife – decorated with onion logo. If you (or your Graphic Designer) understands the User Experience, you can add the Gold-Planting principle to make it more valuable to use, if not perfect. It’s not a bad thing to take it to the next level most especially if it can really help your customers in their task, like cutting onions ^_^
Gold Planting has its good and bad side of the coin. Just keep in mind that the best software is the one who really help the customer carry on their task. According to the 80/20 rule, 80% of the output came from the 20% of the task. Focus on that 20%, and don’t fear to exert extra effort in making your program a better one. Take the learning as a gift.
So that’s it, I hope you like the points I listed here.
“And that’s one blog, stay hungry!”
“Perfection is Achieved Not When There Is Nothing More to Add, But When There Is Nothing Left to Take Away”
Antoine de Saint-Exupery