When being a good programmer hurts you

in #entrepreneur7 years ago (edited)

As a programmer goes through his career, moving from junior to senior positions, he constantly learns. One of the first things that people start telling him is to use generalization when solving problems.

If you write a program that has a lot of if statements checking for different conditions, programmers more senior than you will definitely cringe. 😵 They will tell you about the ways of programming, and how to apply the principles of DRY and SOLID to avoid writing code that hideous.

This is great, you got some mentoring from more experienced developers, and in time you understand everything they were teaching you, and you use those principles proudly. Years go by, and you start mentoring other developers about these things, completing the circle.

That's really great. You learn good programming practices. You develop a winning mindset for your programming career. You are able to develop amazing applications that are very maintainable and easy for new developers to get into because of your super duper code. 🦄

But is this always the right mindset? Can it sometimes hurt you?

That kind of mindset is great for your programming career. But if you, like many, aspire to develop your own SaaS, if you want to be an IndieHacker, if you want to call yourself an entrepreneur - you need to also learn when to think outside of that mindset.

You get an amazing idea for your side project, and you build it. That was the easy part. Now comes the fun of everything non-development. With this come special challenges that are unlike anything you had to solve before. These are business things, marketing and sales, growth metrics and other words that scare the crap out of developers. These efforts are not logical. You can do everything right and still fail. It happens when there are people involved.

So you need to move from your strictly logical mindset to a more creative-social-intuition based one. But you shouldn't completely remove the mindset you had. You are good at it. It does solve many kinds of problems. Instead, you should try to augment logic with non-logic. Complement convergent thinking with divergent thinking. Find a balance between the left and the right hemisphere.

I have seen this fixed developer mindset cause software bugs many times. For example, you, as a developer, would create a nice logical system, with the complexities abstracted, and with generalized solutions to different subclasses of a problem. But then, a wild product owner appears! And he says, but what if a user who is in this situation does this thing and then that other thing? And it breaks your code. You didn't think of that. The code itself is great. But the thinking behind it was too linear. And no matter, after that embarrassing moment where you saw that you didn't think of everything, you fixed it quickly and then everything was okay again. But then, soon after, again comes the PO. And he tells you about another thing you didn't think about.

Why is this? Is it because you suck at coding? Absolutely not. It's because the world is chaotic and entropy's a bitch. It's because the real world doesn't fit into your perfectly logically sound system. It's leaky abstractions. It's everything.

So what can we do about it?

Well, if you're planning on being a developer at a company forever, there's no urgent need to do anything. You can chum along just fine with the programmer mindset. There will always be product owners, QAs and other business people to point out your bugs. They are accustomed to a world where there are no rules, only general guidelines. And they don't understand the worlds you're building, that make perfect sense and where the rules are everything. Deterministic worlds.

But.

If you are feeling the itch.

If you want to make something, if you want to be an entrepreneur.

Then you need to be both.

And that's not easy. You have to take a step back. You have to realize when your logical mind is taking over problems that it shouldn't. Think outside the box. But you need to recognize that you are in the box. And constantly taking a moment and wondering - is this the right way of thinking about this particular problem? It's hard. But it pays off. When you are building your SaaS as a solo founder, you have to be both the tech guy and the marketing/sales/business guy. You have to be the creative guy. You need to be the finance guy. You're all those things. There will be a lot of hat switching. And that's fun. But still, it's not easy. Gotta practice.

Be awesome, and build amazing things.

Find the itch inside you. Feel it and do something about it. Great things will happen.