Three short advises for a startup CTO

Mauro
3 min readApr 17, 2022

In my experience as a Team Leader and Senior Developer working in different startups, I saw companies struggle and fail. Not because their ideas or products were bad, or they lacked good teams, but because of bad management. I wanted here to express some opinions on what could make a company fail based on these experiences.

Leaders, not Bosses

A productivity and team killer is a management that doesn’t lead, but orders. Leadership is like a parliamentarian democratic country. You need to expose your ideas, convince, listen to critics and even change your own ideas or make compromises in order to have everyone fully on board by their own will to go in a particular direction. This will create a positive culture where ideas are debated, improved or discarded if they must, and people will work with the feeling that they are part of what they are building. And yes, I think that if you cannot succeed in convincing people of something, you should discard it. Never use the “we will do it like this anyway because I say so”. From the moment you do that, you have stopped being a leader. Which leads to the following.

A management that orders is more similar to a totalitarian country. We as workers may participate in the parade, wave the flags, but our minds and hearts are elsewhere. This will create the illusion that you are moving in the direction you want, but what is happening in reality is that people are thinking how can they work as little as they can, or how soon can they flee. Never forget, same as a country, a company is its people.

Programmers may seem like robots, but they are not

There is a relationship that it’s created with what you build. Programming is a craftsmanship. I saw companies move developers from one position to another like if they are just pieces in a machine. For most of us, what we build matters. There’s this idea of creating teams based on their skills. So you build a team of “backend” developers, and then you think you can assign and reassign them to different products or projects. This is a bad idea. Not only because a programmer may be “into” one product but not another. It takes time to get to know a system, to know how a code works. Even if it is well documented and has lots of tests, it takes time to understand why it was architected in one way and not another. And only after that you can start having your own ideas. And ideas can flow from the bottom the same as they flow from the top of a company.

In freelance forums I’ve seen companies advertise jobs like “we need a NodeJs developer”. That’s it, without even mentioning to build what, like if a programmer is a tool, a screwdriver, that won’t mind to that is being used for.

Things take time

Any project will need at least six months to be “something”, then years to actually become profitable. There may be exceptions, but as a company you should be prepared for this. Adding pressure to your team won’t help. It just takes time to see the problems on what is being built, to find bugs, to find mistakes. It takes time for problems to arise, and solutions to appear. That’s why if anything can be done, is to remove features. Remove complexity. Make your products as simple as you can. Outsource any service that is not at the core of what you are building (CI/CD systems, infrastructure, monitoring, etc). As Bruce Lee would say it, “be water”. You need to build a company a small and simple as you can, that will have the flexibility to change, adapt and flow.

Conclusion

Building a successful company is hard enough in its own. It’s the intersection of work, ideas, investment and a lot of luck. But if you add a bad management, you may be reducing that tiny possibility of success down to zero.

--

--