Why do programmers work overtime
?
First of all, let's say this programmer is a novice A in the workplace. He just graduated from college and has no work experience. The requirements from the product, he has to understand for a long time to do. Then the development process will encounter a variety of problems, if the experience is not enough to support him to quickly complete the task, then only to resort to the network, books, acquaintances. If none of these can help him. He needs to turn to his coworkers. But frequently, colleagues will be tired of helping him answer; he will also be shy to consult. At this point, he will basically get stuck on a very simple problem throughout the day. At the end of the day, he hasn't finished his task. That's right, he's going to need to work overtime, because he's a very poor programmer.
Probably no one would have known he was there because he needed to work on a problem that wasn't high-tech. His non-tech savvy boss thought he was a hard worker and thought very highly of him. But what's this progress or will it be so slow? A startup can't afford to wait. All this overtime doesn't seem to be needed if an experienced developer is recruited.
Well, the company fires the programmer or he quits for "personal reasons" or the company recruits a relatively experienced programmer. Of course, the price of experience is that the company pays double. None of the previous requirements were met with overtime on his side. He is a very experienced programmer who has been handling the development work for the past two years. All the problems were minor when he came to this side. His excellent performance surprised and surprised the company, and the company felt that even if they recruited ten more previous employees, they would not be able to beat him alone. So what's double the salary?
After a while, the company started to bring up all sorts of demands, and he finally started working overtime. The overtime wasn't because the total amount of demand at a certain time was more. Rather, it was because as the company grew rapidly, the needs became more and more diverse. His knowledge base was not enough for him to be able to cope with them easily. He became just like the first programmer and worked overtime. Only the reason for the overtime was different. The first programmer was working on some code debugging, while the experienced programmer was working on some technology that he had never heard of before. His overtime made the company take him equally seriously and even consider him a good partner.
Meanwhile, the company had recruited an excellent graduate when they recruited him. He was also an inexperienced programmer, but he had the ability to learn. The slow pace of development made it difficult for both the product and operations people. But he was always able to deliver code at the last minute, even though it needed to be tinkered with after launch. He often works overtime to learn in order to overcome technical difficulties, and the company welcomes employees who work overtime because no one makes them work overtime, and they don't need to be paid overtime or given time off. The company provides a good dinner for all overtime workers. He can take on all kinds of needs, big and small, only, the development time is going to be longer. But he won't encounter that simple problem of code debugging not passing. Compared to Programmer B, Programmer C is often recommended by product and operations to be fired or transferred due to frequent slowdowns.
But then, the company appreciated him. The reason was twofold: first, he could finally work on tasks in a time close to that of Programmer B; second, for tasks that seemed impossible with Programmer B, Programmer C always came up with solutions and code at the nearest juncture, just in a longer time. Product and Operations changed their views and recommended to the company to fire Programmer B. Programmer C is a learning employee and after time gives him experience, he grows to be a better employee.
After the company has had a lesson, it finally goes out of its way to spend a lot of money to hire all kinds of good programmers. Because with one such programmer, there would be many fewer programmers to hire who would corrupt the project. So, the company had programmer Ding. He has a good working experience in the past time, and has helped his company to complete various major projects and solve quite a lot of technical difficulties in the industry. His arrival brought a good deal of energy to the company, and all the problems that had been encountered before disappeared. He became the supervisor of all the programmers. Later, he still worked overtime. Because of the good growth of the company, more products and operations were then hired. The development team was too busy, and he, as the supervisor, asked everyone to work overtime together.
To ease the situation, he asked the company for more programmers. The company agreed and recruited two more programmers each similar to B and C. That's right, the company won't be hiring any more programmers similar to A. The team doesn't need to work overtime. The team doesn't need to work overtime.
The good times don't last long, and after a while, the overtime situation resurfaces, as the competitors' efforts create more demand from product and operations. He found a steady stream of requirements coming in from product and operations. But some of the requirements may never be used by the users or change after three days. To resolve this situation, he brought in leaders and heads of departments to discuss solutions. Someone proposed to go for agile development. The company decided to create a new small team to do testing. So every agile development team in the company was formed. Time proved that this new team could finally work without overtime. And the completion of the requirements overall satisfied the product and operations.
The optimism didn't last long, because a bug came up on the line that caused a dramatic drop in users, and they had to work all night to either roll back the code or fix the bug, which was a nightmare without the use of a good rollback method. Continuous integration and automated releases were added to their team. That's right, programmer Ding started to implement a very good project management program in his team. At least when a new version is released and a bug occurs online during non-working hours, anyone with access to it can easily roll it back with a single click. For the rest, go to work. ... ...
That's a few stories I'm going to tell about why programmers work overtime, and I welcome any additions. I will also add more stories in the future. In fact, all the back is not important, I just hope that all entrepreneurs, when recruiting programmers, to avoid encountering programmer A, and try to find programmer D. As developers, we should also strive to become Programmer D to ensure our competitiveness in the workplace. Still, software development is not a high-tech thing, and there is no such thing as a software scientist in this world. What we can do is to make development more like an art.
PS: But high quality, for everyone to see it.