Hello, my name is Sergey and I am afraid of zombies.
I was 21 years old when I got my first job. Imagine yourself, I wrote my first project on classic ASP. This was a classic bydlokodera:
- business logic? no, not heard
- there were no indexes in the database
- ID was generated randomly and checked by select in the table for uniqueness
- monstrous ASP files, HTML interspersed with VB Script
')
True, he worked and brought money to the customer. My biggest achievement on this project is the process of updating the list of users. Due to the specifics of the project, these lists were provided every day in a file in EBCDIC format, and it was not indicated who was removed / added. It would seem, what's the problem? Went through, checked, added / deleted. But no, on average, the file has always been 500 thousand records. Simple bust worked at a speed of 10-30 records per second. After long ordeals, I gave birth to a stored procedure consisting of 5 lines, in which there was not a cycle of cursors, and which processed about 1000 records per second on my P3-800. Win? Win
My second serious project was on VB.NET - a project and task management system. Govnokod was, but I studied. On this project, I ran around the knowledge that I drew from literature. We released two versions of the product, which brought stable money to the company, and I continued to educate myself, while doing projects on VB6 and VC ++, fix bugs in someone else's code, communicating with clients, teaching juniors. Copal, in general.
The first major change in the understanding of how to write code for me was the book by Fowler Patterns of Enterprise Application Architecture. I read it and understood how miserable was everything that I had written before. I really wanted to put into practice all this new knowledge. Ah, the golden times of data mappers, coarse grained locking, implicit transactions, and of course, self-written unit of work.
In the meantime, we have released the 3rd version of the product. She was just inhumanly slow, and I understood that if I didn’t do something, the customers would leave and the product would die. I made a decision to write my ORM system for the system in order to separate the interlacing of UI, business and data logic into which my team and I turned the product over a couple of years, and rewrite the product from scratch.
I think it will not be a secret that it was hellishly difficult for me to convince the boss of the vital need for total refactoring: no one likes to pay for it. Therefore, I began to do it in my spare time from the main tasks.
Version 3.1 was written from scratch, in parallel with the bug fix in 3.0. I did this all my free time - during the day at work between fix bugs, in the evening and on weekends at home. It was the most exciting period in my programming life: I worked. Then I showed the semi-finished product to the boss and said - "let's get the green light, so that the whole team will be involved and in a couple of months we will release a candy." And so it was then, another year and a half on the basis, which I then laid, minor releases were released.
The following refactoring team did without me, because there were clients with thousands of projects and tens of thousands of tasks, and my architecture could no longer cope with such volumes. And I quit, because I was so deeply immersed in the topic of project management that I wanted to do it in a pure form - something that I didn’t have in the company where I worked.
What is it all about?
Any project is going through the stages that I talked about:
- Complicating requirements complicates development
- At some point, making changes becomes very expensive
- And only in the hands of programmers his further fate is to produce govnokod and crutches or to think at least half a step ahead
Now the market situation is not at all the same as in the early 2000s. 100,500 companies talk about what interesting projects they have, beautiful eychary and call everyone “hawala cookies” (by the
way, who invented this crap? ). There is a choice that every programmer makes himself.
You can go the "simple" way and find an "interesting project." Well, that is how it happens? We write a resume, in which we give out the merits of the team for our own. We indicate the salary is 30 +% higher than at the current place of work. We come, lazily answer the employer's questions, LOOK AT THE CODE (if there is one). Interesting? Well then, come work. After a year we repeat the process from the 1st point. PROFIT.
You can go the "hard" way - the way I walked, from junior to the project manager; difficult and long way of taking responsibility for the result and proof that you are worthy of authority, the way that in 10 years brought me to a new round of spiral in the understanding of the surrounding reality.
Now the industry is no longer a cake. The huge demand for IT specialists spawned a generation of pokuistov - “I work from 9 to 18, an hour for lunch, my duties are to program what they say; everything that is out of my working Focus doesn't interest me. ” There is a phrase that well describes what I am saying here: “18.55 is integration failing? OK, I went home. ”
Guys, friends, colleagues - do not turn into factory zombies. You also have a
unique opportunity - to create new, create. In any task, you can find a challenge. And for those where there is no challenge, you can create it yourself and grow above yourself, benefiting your company.