Fire And Motion (English original) [rpm] By Joel SpolskySunday, January 06, 2002Printer Friendly VersionSometimes I just can not get anything done.Sure, I come into the office, putter around, check my email every ten seconds, read the web , even do a few brainless tasks like paying the American Express bill. But getting back into the flow of writing code just does not happen.These bouts of unproductiveness usually last for a day or two. But there have been times in my career as A Developer WHEN IWITHOUT BEINGS AT A TIME WITHOUT Being Able To Get, I'm NOT IN FLOW. I'M Not in The Zone. I'm Not Anywhere.everyBody Has Mood Swings; for Some people they are mild, for others, they can be more pronounced or even dysfunctional. And the unproductive periods do seem to correlate somewhat with gloomier moods.It makes me think of those researchers who say that basically people can not control what they eat, So any attempt to diet is bound to be short term and the will always yoyo back to the ir natural weight. Maybe as a software developer I really can not control when I'm productive, and I just have to take the slow times with the fast times and hope that they average out to enough lines of code to make me employable. What drives me crazy is that ever since my first job I've realized that as a developer, I usually average about two or three hours a day of productive coding. When I had a summer internship at Microsoft, a fellow intern told me he was Actually Only Going Into Work from 12 to 5 Every Day. Five Hours, Minus Lunch, And His Team Loved Him Because He Still Managed To Get A Lot More Done Than Average. I '
Ve Found The Same Thing to Be True. i Feel A Little Bit Guilty When I See How Hard Everybody Else Seem To Be Working, And i Get About Two or Three Quality Hours In A Day, And Still I've Always Been ONE most productive members of the team. that's probably why when Peopleware and XP insist on eliminating overtime and working strictly 40 hour weeks, they do so secure in the knowledge that this will not reduce a team's output.But it's not the days when I " Only "Get Two Hours of Work Done That Worry Me. It's the day. I. I Tried Tried to Remember The Time When I Got The Most Work Done In My Career. IT was probably when Microsoft moved me into a beautiful, plush new office with large picture windows overlooking a pretty stone courtyard full of cherry trees in bloom Everything was clicking for months I worked nonstop grinding out the detailed specification for Excel Basic -.. a monumental Ream of Paper Going Into Incredible Detail Covering A gigantic object model and programming environment. I literally never stopped. When I had to go to Boston for MacWorld I took a laptop with me, and documented the Window class sitting on a pleasant terrace at HBS.Once you get into flow it's not too hard TO Keep Going. Many of My Days Go Like this: (1) Get Into Work (2) Check Email, Read The Web, ETC. (3) Decide That I might as Work (4) Get Back From Lunch (5) Check Email, Read The Web, etc. (6) Finally Decide That I'VE Got To Get Started (7) Check Email, Read The Web, etc. (8) Decide Again That I really has to get Started (9) Launch The Damn Editor and (10) Write Code Nonstop Until i Don '
t realize that it's already 7:30 pm.Somewhere between step 8 and step 9 there seems to be a bug, because I can not always make it across that chasm. For me, just getting started is the only hard thing. An object at rest tends to remain at rest. There's something incredible heavy in my brain that is extremely hard to get up to speed, but once it's rolling at full speed, it takes no effort to keep it going. Like a bicycle decked out for a cross -country, self-supported bike trip - when you first start riding a bike with all that gear, it's hard to believe how much work it takes to get rolling, but once you are rolling, it feels just as easy as riding a bike without any gear.Maybe this is the key to productivity:. just getting started Maybe when pair programming works it works because when you schedule a pair programming session with your buddy, you force each other to get started.When I was an Israeli paratrooper a General Stopped by To Give USA Little Speech About Strategy. in Infantry B attles, he told us, there is only one strategy: Fire and Motion You move towards the enemy while firing your weapon The firing forces him to keep his head down so he can not fire at you (That's what the soldiers mean... IT Means, "Fire At Our Enemy So He Has To Duck and Can't Fire At Me While I Run Across this Street, Here." IT Works.) The motion allows you to conquer territory and Get Closer To your Enemy, WHERE YOUR SHOTS Are Much More Likey to Hit Their Target. if you're not moving, The Enemy Gets To Decide What Happens, Which is not a good thing. if you '
re not firing, the enemy will fire at you, pinning you down.I remembered this for a long time. I noticed how almost every kind of military strategy, from air force dogfights to large scale naval maneuvers, is based on the idea of Fire and Motion. It took me another fifteen years to realize that the principle of Fire and Motion is how you get things done in life. you have to move forward a little bit, every day. It does not matter if your code is lame and buggy and nobody wants it. If you are moving forward, writing code and fixing bugs constantly, time is on your side. Watch out when your competition fires at you. Do they just want to force you to keep busy reacting to their volleys, so you can not move forward Think of the history of data access strategies to come out of Microsoft ODBC, RDO, DAO, ADO, OLEDB, now ADO.NET -?.!? All New Are these technological imperatives The result of an incompetent design Group That Needs to Reinvent Data Access Every Goddamn Year? (That's Probably It, ACT ually.) But the end result is just cover fire. The competition has no choice but to spend all their time porting and keeping up, time that they can not spend writing new features. Look closely at the software landscape. The companies that do well are the ones who rely least on big companies and do not have to spend all their cycles catching up and reimplementing and fixing bugs that crop up only on Windows XP. The companies who stumble are the ones who spend too much time reading tea leaves to figure out the future direction of Microsoft. People get worried about .NET and decide to rewrite their whole architecture for .NET because they think they have to. Microsoft is shooting at you, and it '
s just cover fire so that they can move forward and you can not, because this is how the game is played, Bubby. Are you going to support Hailstorm? SOAP? RDF? Are you supporting it because your customers need it, or because someone is firing at you and you feel like you have to respond? The sales teams of the big companies understand cover fire. They go into their customers and say, "OK, you do not have to buy from us. Buy from the best vendor. But make sure that you get a product that supports (XML / SOAP / CDE / J2EE) because otherwise you'll be Locked In The Trunk. "Then when the little companies try to sell into that account, all they hear is obedient CTOs parrotting "do you have J2EE?" and they have to waste all their time building in J2EE even if it does not really make any sales, and gives them no opportunity to distinguish themselves It's a checkbox feature -. you do it because You NEED The CheckBox Saying You Have IT, But Nobody Will Use it or need, it. and it's cover fire.fire a nd Motion, for small companies like mine, means two things. You have to have time on your side, and you have to move forward every day. Sooner or later you will win. All I managed to do yesterday is improve the color scheme in FogBUGZ just a little bit. that's OK. It's getting better all the time. Every day our software is better and better and we have more and more customers and that's all that matters. Until we're a company the size of Oracle, we don 'T Have to Think About Grand Strategies. We Just Have To Come In Every Morning and Somehow, Launch The Editor. Open fire [转] Author: joel spolsky Translation: Siyan Li Li Siyan Editor: Paul May Mei Puhua is always For a while, I can't do anything.
I also go to the office of the office, sight, west, every ten seconds to check an email, online shopping. Perhaps dry things like paying the pass card bills don't need a brain. But going back, squat, write a program, there is no door. This kind of not active state is usually usually last or two days. When I have a few weeks in my software development career. As they said, I am not in the state, I can't enter the situation, I can't find the organization. Everyone has emotional fluctuations, some people are gentle, and some can hit a big point, and some can make the whole set. But no matter what, that doesn't seem to have a little relationship with melancholy. I can't help but think of those experts saying that people basically can't control what they eat. Any diet plan is not long. Everyone is always coming back to their normal weight. Maybe as a software engineer, I can't control when I can live. The only hope of hope is that the time to be caught, and it will eventually mix bowlons. Since I do this, I have only two or three efficient times a day. This really makes me big. When I was in China, another intern told me that he was at 12 o'clock every day and at 5 o'clock. 5 hours also included lunch time, but his colleagues were particularly satisfied with him. Because he is doing more than the general people. In fact, I am the same. I only have two or three hours a day. Looking at others, then doing the strength, there is a bit embarrassed. However, I am always living in the group. It can be seen that "human theory" and extreme programming are not going to work, only 40 hours per week, still a little reasonable. They all know that this will not reduce the production capacity of a group. Every day I can only do two hours, I haven't made me too worrying, I really don't worry about those days that I can't do it. I am thinking about what is going on. I have worked hard to recall my most active. It is estimated that Microsoft moves me to a beautiful new office. Comfortable luxurious office, the window of the window, the window is full of cherry blossoms full of stacked gardens. All everything is just right. I don't stop it for a few months, I will get the detailed design of Excel Basic in a breath. A stacked paper like a monument, detailed a super large target model and programming environment, meticulous work, is incredible. I have never stopped from beginning to end. When I got to Posston, I took a laptop, sitting on the Windows Category All the documents of the Harvard College. It is not difficult to press steps. Usually I spent a day: 1, go to work. 2, check emails and internet access, etc. 3. Consider whether you should have dinner to work. 4. After eating, you will come back. 5, check the email. 6, finally decided to start working. 7, check the email, visit the east, west to see. 8. The re-decision does have to start working. 9. Open the dead editor. 10. I have been learning at night at 7:30 in the evening, and I have written it to forget the time. It seems a little defect between steps 8 and 9 of steps, because I don't have successfully per time. For me, starting is the only problem. Still objects remain stationary without external force. Some substances in the brain are very unbelievable, let it accelerate too difficult. But as long as the speed is on, in the case of full speed, it is not necessary to continue to go. Just like a bicycle to make a self-funded trip, starting, you don't think about it to spend so much time, but once you move, let them continue to turn is not a difficult Things. Perhaps the key to high efficiency: start up. The pairing programming method is successful, and may not be able to start with two people, and forced each other to start.
When I was in Tranquard paratroopers, I had a general to tell us actual war tactics. He told us that the infantry tactics actually only one: Open fire. When you fire over the enemy, you rushed to the enemy. The firepower made the enemy can't start, and I can't open fire toward you (when a soldier shouted: "Show me", he means "when I rushed over the street, you fierce Open fire, forcing him to get up, can't open it to me). Go forward, you can occupy the position, close to the enemy, so your winning is much bigger. If you don't rush, the enemy has time to figure out The situation, this is not wonderful. If you don't open the fire, the enemy will be fired toward you. I have been thinking about this teaching for a long time. Whether it is fighter air fighting or a large-scale fleet attack, big Some military strategic tactics are based on the fire in the development of fire. I have been in the fifteen years, I want to have a basic principle that a person is successful in real life. You have to come forward every day. Child, don't want you to write the procedure how bad, how can you sell it, as long as you keep writing, keep the change, dripping can also wear a stone. At the same time, pay attention to your competitors to fire. Do they want to think Let you cope with their scans, so that you can't walk forward? Think about the information access methods developed in these years, from OBDC, RDO, DAO, ADO, OLEDB until now ADO, .NET, no Is it necessary to stop new, technical need? Or because that design group is really feet, every time he is a year to reinvent the information access technology? (It is actually true). Its ultimate effect is actually a firepower Let the competitors have no choice but to use the valuable time to develop new functions to transplant and upgrade. Take a closer look at the software industry, the company has the least good company, You don't have to use all your energy to write the process over again, you have to modify the defects that only in Windows XP. Those who spent too much time to guess Microsoft's future development direction, the days are better. Some people have seen .Net, I can't help but press .NET to completely rebuild their system structure, think that I have no choice. Brother, see clearly, Microsoft is fired in you, and this It's just to cover the fire. This game is such a game. So, they can go a big step forward, but you can't. Do you want to support Hailstorm? SOAP? And RDF? Is because of your customer needs, So you support them? Still because someone is fired toward you, you feel that the big company's camp sales department knows the fire. They said that they said, "You don't necessarily buy us. Whose products should be best to buy. However, we want to remind you that it is best to confirm their support (XML / SOAP / CDE / J2EE before the order). Otherwise you will be secured by their technology. "When the small company went to this customer to sell, the obedient CTO will ask them:" Do you have J2EE? "They have to go back and have to sell their J2EE no matter whether they are sold, they will have no chance to show their own characteristics. In fact, this is just a ticking function. Because there is a hook There must be this feature there. Don't need it. This is the fire cover. For my small company like this, the fire is in progress, it means two things. Don't go with time, you still have to Every day, it will be made. The day is not worn, you have a day. I spent a day yesterday, but let the color of the fogbugz are very good. This is not tight, as long as you don't stop.