Why is the ugly code everywhere?

  • Simple. Everything is clear. There are always strict rules and no fantasy is needed. The call center is a good example — each operator has rules and instructions on how to make a conversation.
  • Complicated. There is more the one way to achieve the goal. You need an expert to choose from. For example, a software architect is that expert when you decide on a database solution or proper language/framework.
  • Complex. You know the goal and you can move. But there is no clear way, it’s like a labyrinth. Usually, it happens when you build a new product. You calculated economics, probably made some customer development. But have no idea what is the final state. Experiments are your weapons.
  • Chaotic. No patterns, just act. For example, an accident happened — everything is down, the network is busy, support chokes.
  • If we know the final state of the project, there are no excuses. Probably, the previous team was frankly bad or you are the only genius. All the changes are predictable, just do it right or find where you mistaken. But make no mistake — in the 21st century all successful software gets changed.
  • When building new products we are in a complex area. It means nobody knows the final state of the product, even your CEO. Hence, there is no project documentation or it might be, but not the final one. The only thing you can do is to start moving.
  • You planned everything and predict a few steps ahead. You have a strong organized team and move forward. Unlikely, but if it happened — you are the treasure of the company. Just lead it to success.
  • You planned everything and predict a few steps ahead. But, nobody else understands your flight of fantasies. The sign of this situation is when you code 10x faster than your teammates. Did you hire a weak team or made a wrong choice by starting to code all yours? I often see how a strong developer comes to lead the project and plants his own libraries without any reasonable advantages instead of using verified best practices from the community. Just because he made it. I hope you didn’t recognize yourself.
  • Some changes don’t fit your code, because they are too radical. For sure, you have a plan for how to change it, but there is no time for it — crunches appear. And then another one. Still, you make your code clean, write tests, and generally, everything is not so bad. But if you’d have to code the product as it is again, you’d make it in a different way because you know the things you didn’t even suspect in the past.




CTO at hands.ru. Passionate about creating technology products. Love mountains and running.

Love podcasts or audiobooks? Learn on the go with our new app.

Recommended from Medium

Archway Could Be the Catalyst That Web 3.0 Needs

Google I/O 2019 — Flutter Recap!

Building a 16-bit Processor Subset of LC-3 ISA

Intro to software development (Part 3) — Introduction to mobile applications development

10 Ways to Improve Your Focus as a Programmer When You’re Distracted

Person holding glasses. Focused in distance

Teaching Feeling Mod Apk 2.5.2 English 2022

The Best Programming Languages to Learn in 2021

The Beginner’s Guide: Deep Learning Model Deployment (TensorFlow Serving with Docker & YOLO)

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store


CTO at hands.ru. Passionate about creating technology products. Love mountains and running.

More from Medium

What Is Encryption In Simple Terms?

Cybersecurity Certifications Are Doing More Harm Than Good

Cryptographic Failure — OWASP Top 10

5 Tips to Prevent Cyber Attacks & Protect Your Business