We spend years doing what is being done for a week – because all the stalls are playing with IT giants

I worked on a team that made a VPN desktop app. Not the easiest thing in the world, a lot of nuances, a lot of backward compatibility. We had four developers, three testers, a product owner, a project manager, and a third-party design team. Everything is serious. In addition to the desktop client, a lib was also made, which contained all the business logic, and was used on other platforms. And this lib, in turn, used a sish binar, which raised the VPN tunnel.

If someone asked me how much it would cost to make such an application alone, I would say: “two months for development, one for testing”. But there were many of us, so we worked for more than two years.

Each person involved in the project increased the general misunderstanding of the project. There are a lot of practices to deal with this – we write documentation, formalize requirements, get special people whose task is to understand what the project is and explain it to everyone. And in the short term, it even works – but later, each page of the documentation on a large project begins to contradict the others, and becomes another source of problems – another piece, whose development we must support, not understanding how and why.

The more users an application has, the larger the application itself, the larger it is, the larger the team, and the less you understand what and why you are doing. If I have a mechanism made of one gear, which has 50% reliability, then its reliability is 50%. If there are two gears, the reliability will be 25%, and if there are ten gears, the reliability will be close to zero.


On one of the weeklies, some important owner of testers came to us and asked us to make him a test application. A desktop piece that would allow us to use and combine all the possibilities of our lib. No design assignment, no clear requirements.

I made the application in less than a month – and it was a lot of features of the main project. At the same time, I did not forget to have a good rest during working hours.

It’s easy to work like this. I didn’t spend three months creating a weird “designer” analogue of a hamburger menu. Not a single ridiculous custom control. All from popular material either. I immediately knew exactly what kind of project should turn out in the end, and did not waste time creating code that would be rewritten in a week. I didn’t spend time writing a bunch of unit tests that didn’t test anything. And he didn’t overengineer, because he immediately understood that it was required to do a fairly simple thing.

I am not a green june, I have a habit of immediately writing plus or minus good and readable code. The context of the subject area was in my head, I received a dozen comments in the review, quickly fixed it, and the project was ready.

After that, of course, I did not come to the conviction that absolutely all projects should be done this way. This doesn’t work in business applications that many people use. They explained to me – it turns out that way, Phil, because at the start of a business he himself does not know what should turn out. The industry has long given up on projects that you can just take and do. To take and do is nonsense. You have to do the project forever, collect feedback at every step, improve it every day. The project should evolve as a living organism as long as we have money.

And when I first heard the idea of ​​perpetual development, I believed it. Sounds really reasonable – business requirements grow and change, we will iteratively improve, and the codebase will become a detailed specification of all the processes it describes. Modern software is too complex to design and develop something complete.

I like to work alone and quickly put together something. But I have not lost faith in the idea of ​​eternal development. It is correct – for projects, Windows or Chromium scale. When designing a calculator, this idea is bullshit. And if you look at the job market, go to social security information, you can see that most of the industry in the Russian Federation makes calculators rather than Windows.

Calculators, but with Scrum / Agile, CI, CD, a whole brood of products, a gigantic codebase, and complex, custom designs. I have a theory that this works because everyone wants to play adult development.


I can download an entire application in a month. For example, at my last job, I made a prototype of a project in a day – and that’s 60% of all the work needed to go to market. But when I start making a pet project, I immediately want to take everything seriously. The guys and I create fat, cut everything into sprints, start tickets, set up CI. Because with all these ceremonial things, the pet project becomes something very real.

This is an illusion that we play, because we don’t really want to do a pet project. We want to play startups. And it seems to me that small and medium IT businesses in Russia are from the same series. And this creepy system supports itself. You invented the online store. We did the concept, the business went, you begged the investors for a million dollars, and you hired a large team. They’ve printed 300,000 lines of code for you in a couple of years, and the system works well. You look at these thousands of lines, and you think – well, since we wrote them, and it seems like nothing can be thrown out of here, then such a system should have such a large code base.

Survivor’s mistake. You can simply take an online store ready-made – most likely, man, the uniqueness of your business was not in some specific software features. Or it was, but there were two such features – and for this we wrote a system from scratch, simultaneously with a thousand other companies that during this time wrote a thousand of exactly the same systems from scratch in the world where such systems were built a long time ago.

Each project has a point of no return – the moment when the answer to the question “are we doing complete crap” no longer matters, because even if it is complete, it will not work to do it from scratch. Because users are accustomed to just such a piece of shit that we made for them, with all its bugs and non-obvious behaviors – this is its uniqueness, which cannot be quickly and easily reproduced.

Business wants to play cool development, but developed and do not mind. What you need? To complicate the incredibly simple things? Oh, bro, we’re so good at this. Complication is our middle name. The Holy Complicator is our great idol, and now you will get so much complexity with us that you will have to spend half a green one only on the server, on which we will add the documentation of this complexity.

We will create a DevOps department, several testing departments, we will take the most enterprise of all stacks. Our codebase will be documented in detail, we will strictly adhere to all the principles that have been invented for giant applications. Tests – we will write an unimaginable number of tests for every taste and color, and we will do everything to ensure that these tests run as long as possible. Let the build run for 6 hours – I just have a lot of important things to do at home, but you have to understand – my time is expensive. And you decided to pay not for the product, but for the game in development. And I’ll play with you.

Only then, after four years, the one-who-for-everything-pays will come and say: “The project died for reasons beyond the control of the development team, guys, thank you all. Can we somehow use the written code for other products, or put separate modules in open source, because you said that all our components are reusable? “

No bro. You paid for four years of writing the most useless shit in the universe. This code is not used anywhere else, and without the product it describes, not a single line is of any value here. We have 400k lines of garbage that was written by top engineers with competent adherence to all stages of a well-thought-out process, because you are an idiot.

And we have learned a lot here, and we will go to large companies where this complexity is really needed. Thanks a lot for the experience and money. Next time, when you want to do something, try to accept the simple fact at last: you invented a stall – so build a stall. It’s very simple, and it makes money – exactly what you want. And let the industrial giants play in industrial development – they fight it off.


Advertising

Epic servers – this is VDS for hosting sites from a small online store on Opencart to serious projects with a huge audience. We present many tariff plans where everyone will find the offer they need.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *