I once saw this quote from Instagram user FindHeart:

Programmers are people who enjoy life. Every few months or weeks, they celebrate something called Deadline Eve. This is the night to prepare lots of food and drink, work through the night and wish each other good luck for the next milestone.

I saw a characteristic of programmers in this tearful joke: optimism.

Yes, you read that right. Optimistic. Optimistic.

Programmers are some of the most optimistic people I’ve ever met, and that’s one of the secrets I’ve learned as I look back on my development career as a programmer.

The programmer’s life is full of unknowns: unknown projects, unknown languages, unknown frameworks, unknown tools, unknown schedules, unknown sinkholes, unknown bugs, unknown delivery dates, unknown performance evaluations, unknown KPIs…

So, living in this kind of uncertain environment, if you are not optimistic, you will never be able to survive, you will never see the sun tomorrow. Because, the unknown will produce fear, this is human nature, fear pile up too much people will collapse. The great programmer, the tough programmer, the incredible programmer, the programmer with super tolerance, the ravaged programmer still wandering forward, not only miraculously survived in this inhuman environment, but also happy every day pidian pidian, what is this not optimism? Can any other group be so optimistic?

See, project estimation is that simple

When programmers write “printf(” Hello World! ), convinced that by pressing CTRL+R or clicking the Run button, a black command line window would say “Hello World!” to them. .

Yes, that’s it. When you write the dreaded phrase “Hello World,” the computer will never say “Goodbye World…” And that’s even more striking in response to you.

The world we programmers face is a world of zero and one, simple and straightforward. The longer we spend in the world of software development, the more susceptible we become to the subtle effects of this logic. We worship simplicity and hate complexity, both in the digital world and in real life.

Programmers like to see certain, predictable results, and with so much uncertainty in our world, our approach is to look only for the good, to favor what we can hold on to.

:Begin // Note that Begin is the label used for goto jumps

When we’re forced to evaluate the progress of a project, we try to minimize the big problems and then pick out everyone’s favorite little things and happily give them time: 4 hours this time, 3.5 hours that time… OK, soon have answers, and we feel everything is under control,!!! My magic fairy stick, tsundere to turn a circle on the boom a little again, the whole project takes about four months, set aside some time to deal with such as one month extraterrestrials might happen, we have 8 people, ah, oh no, half month 2 and a half weeks!

The guys split up, and there’s a boom, boom, boom, boom, boom.

In the first week, we reported, “Work is on track, everything is under control.”

By the second week, we reported, “We had a little accident, but two more nights will catch us up. We can handle it.”

By the third week, we reported, “There’s been a little hiccup, you know, in software development, surprises. But we dealt with accidents on Saturday and Sunday and we’ll be done soon.”

By the fourth week, we reported, “Well, it’s more complicated than we thought. We had a mix-up on the integration, and the team pulled an all-nighter and couldn’t do it the next day, so it’s a little bit later than expected, but trust us, it’ll be done soon.

At the fifth week, we reported, “This is going to be the week, trust us.”

By week six, the team was working overtime with black lines on their faces…

At week seven, we reported, “System integration is complete and the first Beta is available for private testing. “It’s a little bit later than we expected, but our beta is perfect, with very few bugs.”

By week 10, the whole team was working overtime to fix the Bug. Everyone had black lines and two puffy bags under their eyes. Whenever the anxious boss asked about the launch date, the project manager would say, “Soon, soon.

By the end of week 14, the version was finally released.

Everybody’s happy.

The boss has been driven crazy by this group of monkeys, hate to fire, but also have to bite the teeth said: “brothers hard, your efforts are there for all to see.”

We report that our release is of high quality, easy to use, easy to use, and users will be satisfied. By contrast, a little delay is worth it.

goto Begin

Okay, is the project estimate simple?

Have you seen the Myth of the Man-month?

“All management theories are bullshit, and none of them apply to our team, because we programmers are unique, we have different personalities, and we have to find our own way of managing projects. In addition, our current team has been running well under our unique management mode. There is no need to introduce such high learning cost control methods. Moreover, it is also an incentive for everyone to feel that the company does not trust everyone, which will greatly reduce morale. There’s no doubt that the morale of our team is high and has to be maintained…”

It could have been a project manager, I don’t remember. His final conclusion: “This project was delayed, but next time, absolutely not! There must be some way we can control the schedule.”

See, that’s our optimism. It is a vivid example of true optimism: even when our estimates and controls have been proved wrong countless times, we promise “absolutely no delay” when the next project comes along.

It’s easy. Two days

The optimism of the programmer community is the convergence of individual optimism.

How many times have we been asked how long it will take to solve this problem and we have said something like “Two days”…

How many times have we watched a colleague get stuck in a rut and say something like, “If ONLY I would have done it already” when the project is nowhere to be completed…

How many times have we had to learn an unknown technology and apply an unknown technology to an unknown business and finally deliver a working system to a customer, we have naively picked up a few coins from our old pool of experience and said something like “about half a month”… Only programmers, tough programmers, fearless programmers, dare to face the unknown with optimism and give a definite time limit.

This is all because we programmers tend to think simple, and for those of us who believe in simplicity, even if you’re not afraid to evaluate things in the least efficient way, you’ll come up with an estimate that turns out to be optimistic.

Is it hopeless?

No! On the contrary, it is one of the key characteristics that makes us programmers programmers.

It’s not that hard, but is it

All things are difficult before they are easy. Many things, once we break through the initial barrier, the wind will follow us. It’s easy for programmers to reinforce this pattern, because there are so many opportunities to learn new technologies, new frameworks, new businesses, and most languages and frameworks just write a universal “Hello World” to get started!

The feeling of learning a new skill is similar to driving a car. After I learn how to drive, hasn’t been running on the road, the car is hesitated for a few days after, always feel the city traffic complex, many car no matter traffic lights always in strong yellow seconds, pedestrians and trespassing, electric motorcycle is always suddenly roared, turn left turn right and go straight at the same time is allowed, more want to always feel unable to cope with this situation, I was thinking about hiring a practice partner to accompany me on the road for a few days. Later, because of anxious license plate, can not directly hit the road, more than five o ‘clock in the morning, from home to the DMV, after finishing the formalities and trembling to open back home. This is the first time to travel alone, no bumps, no accidents, incredibly! Well, the experience of success gives you confidence, and then I dare to go on the road: afraid of nothing, just like that.

It’s a similar story for programmers. For example, if you ask a C++ programmer to develop an Android app, he can learn Java and Android development and make a DEMO in two weeks. And then, across the threshold, all obstacles are gone, the road ahead is smooth, nothing can stand in the way of the programmer’s great dream of liberating mankind.

The repetition of this experience convinced us that a good start was half the battle, so when we made even a small DEMO, we were happy to announce our conclusion: Ah, we’ve cracked the key technology, and judging from the existing DEMO, the technical problems are no longer a problem.

Of course, that’s not the case. There are many dangerous beaches, bogs and dark pits in the road ahead. When you take the first step, you are glad to think that the world is in my hands and everything is in control, the difficulties and dangers that you can’t expect have quietly set off and are quickly coming to you.

I had not driven more than 100km when I had my first accident and had to go back to the insurance company. When you, as a programmer, say that the problem has been cracked and is technically safe, you are simply being overly optimistic and that the real journey has not yet begun and the scratching of your head is yet to come. That’s it.

Programmers, of course, is optimistic, they say, no matter how the road ahead, as long as every mountain escorting the water bridge see Buddha kill Buddha kill ghost ghost can customs clearance, the sky with a tall roof, yellow project has a strong project manager, the company closed a big deal to change places and river’s lake, ye have craft, where not to eat a bowl of rice…

Well, that’s how optimistic we are. It’s important to keep this in mind if you’re dealing with programmers. Their professional habits tend to keep things simple, to look on the bright side, and to laugh at unknown risks. So, you have to expect that they will often waltz through the first half with ease and trudge through the second half with a heavy heart.