DEV Community

Cover image for Roadblocks to simple design thinking
Parv Bansal
Parv Bansal

Posted on

Roadblocks to simple design thinking

Are you into professional coding and have ever overcomplicated any piece of code ? If yes (like me), don't worry you are not alone. Today I will try to retrospect on 'why do we really do it ?' In this article I will try to recall some of the key psychological factors that I personally observed which lead to over complication of solutions.

Complexity gives pleasure & pride

Programmer's Pride
Issue : It's true when people write solution to a complex problem they tend to get a 'kick' out of it and so should they, there's no problem in that. Real problem arises when we start searching for this pride in developing complex solutions instead of solving complex problems. A complex problem doesn't necessarily always demand an equally complex solution.

Fix : Take pride in developing solutions, doesn't matter how big or small your solution is. Whether you just changed a configuration or you built a gigantic algorithm, just acknowledge the fact that you solved a problem. This can help end your search for pride at wrong places.

Simplicity requires time & understanding

Unfulfilling design
Issue : Research is an important part of solution building process and its biggest enemy is time. Time crunch can not only contribute to over complication but bad solutions in general as well. There are 2 hard facts which I think should be acknowledged in relation to this problem :

No-one knows everything.
There is and will always be a deadline.
Fix : Whatever your deadline is, at first, just forget it. It's important to understand and make sense of the problem first, doesn't matter how much time and effort it takes. There's no harm in considering already proven solutions but let yourself reach to those naturally from your solving process instead of jumping onto them. Any doubts can lead to situations where you end up trying to fit square pegs in round holes. It's necessary to be confident on how you should be solving this problem and when will it be solved.

Future vision

Predicting software evolution
Issue : How many times have you come across a code to solve a problem which is not even there? It's good to have extendable code but sometimes people tend to go ahead of themselves. It gets worse when your code is unreadable. Now not only that you have written a thing which only you know why you wrote, you have given a task to the person maintaining to decrypt what you wrote as well.

Fix : You should write code that can be extended and is readable. No need to do time travel and guess what all scenarios your code can go through. It should be future ready not into future, yes, there's a slight difference. Future is never certain or some might call it, it's "agile" but present should be.

Recognition relation

Recognising employees
Issue : This one is more of a community problem than of the individual itself. If you work in a corporate setup it's quite obvious that you have some people overlooking your work and judging quality of your solutions. For you to progress it becomes necessary that they believe in your work. If people in that group are of the opinion that a person bringing complex solutions at table is more worthy than the one who is using simple and apt solutions to get the job done, then it becomes hard to stay on that simple path.

Fix : Judgement should be more inclined towards the quality of solution and complexity of problem and NOT the complexity of solution. This not only makes life good for person solving the problem but contributes to healthy organisation culture as well.

P.S. This is just my humble opinion which i have developed through my encounters with over-complications, would love to hear your experiences as well.

Top comments (0)