The Art in Business System Design. Jeff Chapman
System and stress testing
Alpha testing
Regression testing
Technical documentation
Develop an implementation plan
Develop training materials
Create online help
Beta or parallel production testing
Training
Post implementation corrections
Production Support
Well yeah it’s a lot of stuff; it’s what makes the job both interesting and challenging.
Artistic Growth
More than most professionals (perhaps with the exception of doctors) software developers contend with change and growth.
Outsiders identify the instigators as advances in hardware and new deployment platforms, but when you’re deep inside the works — a fish in the fishtank — the view of change and growth are quite different.
From inside you see your assignments and what the nearby developers are creating, along with occasional somersaults from the development environment. Food drifts down in fits and starts. Occasionally you get a new bubbly castle.
In the workplace you tend to get caught up in the office rivalry to impress your boss with your capabilities; you want to eventually move up the ladder from programmer1 to the lead software architect. In this industry staying static — just creating with the same level of technological adeptness — is a certain downward spiral. It’s like being a plastic plant: you may look really good all the time at just one thing, but nobody is going to get terribly excited over what you have to offer. After awhile you will disappear amongst the accumulated algae.
People acquire skills on the job in various fashions, with as many styles of growth as fish have personalities. One key element to success however is to challenge yourself by volunteering when you smell opportunities. The way you move beyond what you currently know is to step outside of your comfort zone and offer to assume responsibility for something that is slightly beyond, slightly harder than what you think matches your present capabilities. Then the only way out of this predicament is to learn new things and to ask for help.
You need to make an occasional leap out of the fishtank into a new body of water, spawn and reseed yourself once in a while. Growth is all about the research, the struggle, and the experimentation. And more than anything growth is about the stretch.
Artful Digression
Although in this book I focus on the art and science of software development, a thorough picture of a programmer’s life entails quite a bit more. A great deal of outside experience ultimately influences your qualities as a software developer. For me the key peripheral activities for success are reading and walking.
The best source of inspirational reading in our rapidly changing world is a good library. Here you’ll discover various trade and technical magazines and the library may also subscribe to online services that you wouldn’t otherwise consider investigating. You should periodically research the state-of-the-art business use of computers as well as strategic advancements happening in yours and related industries. I also recommend a broad general reading of a variety of background magazines: you never know when a strange juxtaposition of unrelated ideas will lead you to a new breakthrough.
I must emphasize the true value of walking. Not only does it clear your head of the clutter and confusions of political interests, the rhythm of your legs and the change of natural scenery will enlighten you to the proper balance in your designs. It will help you create a more naturalistic and organic path for your growth. Walk. Read.
Artful Notes
It’s difficult to be a successful developer unless you keep prodigious notes. Notekeeping can be an art all its own: it’s really counterproductive at the point of code development if you find yourself with a huge pile of disorganized Post-Its of the use-cases.
While designing software, useful information across scenarios pours in with all sorts of formats. You may hold a meeting where everyone is talking. You may receive a PDF specification from a vendor. You may pick up the phone and chat with a colleague to answer some questions. You may shoot off an email that causes a cascade of responses. You may read something relevant on the internet at home. How can you possibly keep track of all this information in a sensible fashion?
Many of my developer friends like to keep spiral notebooks, but I’ve never been able to easily find what I’ve written previously. I prefer a mixed approach. I use a PIM (personal information manager) to gather and automatically categorize short sentence snippets of concise information. I keep folders organized on the network for documents. I also keep hardcopy in manila folders for documents that I think will have lasting importance. I keep a folder in Outlook for each gigantic-scale project. And I use Google Desktop to find my way amidst all of the detritus.
In meetings I take a single loose leaf of paper and then either transfer my notes afterward to my PIM or a more formal document to mail or file on the network. I also *always* carry a pen and folded sheet of paper in my pocket for any spur-of-the-moment revelations.
Notekeeping is complicated: experiment with different methods and software to find something that works efficiently and correctly for your own style.
The Art of the Stretch
Many things that contribute toward a successful software-development career have nothing to do with people skills or even with technical knowledge. A larger part of accomplishment than you imagine simply has to do with being comfortable with the physiology of an “office job.”
Essentially you sit in a chair a couple feet away from a screen with your hands on the mouse and keyboard all day. Folks euphemistically call this a “sedentary” job. Don’t think for a moment this implies that you lie in a hammock twirling a double mocha cappuccino.
Due to constantly changing tools and requirements the job is full of stress. Other stressful factors include too much work, frequent interruption, unclear or late information, career and job politics, and the pressure to outperform associates. Programming can feel as if you have five pots on the stove, the microwave whirring, and both ovens going, all while you are mincing onions.
So although the job is sedentary in the strictly physical sense it is far from stress-free. To really succeed you need to develop a strategy that fully mitigates this stress; here are some techniques I have used to good effect.
First, why do you need to pile additional stress onto your work from commuting? When you drive your car to your job listen to something enjoyable or motivating. Or better yet ride public transportation to work and multitask your relaxed commute with some reading. When you do drive experiment a bit to discover which routes are the most scenic and least crowded.
Learn how to organize and plan at work. This mostly relieves stress by a process of self education: once you get a good concept of how long things take you can also plan for your own personal slack time. Heck even back in school they allowed for “recess.” Pace yourself: avoid back-to-back scheduling and trying to fit too much into one single day.
List the things that you have to complete by priority; by accomplishing what is most important you will feel more serene. Don’t fret over finishing every last thing: modern lean-running offices always have more to do than the time available. Rest assured that most certainly your boss feels the same overwhelming inflow.
Laugh! Don’t overdo the clowning around, but when you find something appropriately humorous share it with your friends at work.
Try to leave earlier in the morning. Even 10-15 minutes can make the difference between a frantic rush to your desk and having time to ease into your day. Stop adding to your stress levels by running late.
Finally, exercise. Every couple of hours take a brief break from your work to walk around outside, thus allowing