The Art in Business System Design
Jeff Chapman
Copyright © 2011 Jeff Chapman
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
You are free to copy, distribute and transmit this work, and to adapt it for commercial use, under the following conditions:
You must attribute your work as “based upon the book ‘The Art in Business System Design’ created by Jeff D Chapman;”
If you alter, transform, or build upon this work, you may distribute the resulting work only under the same or similar license to this one.
The Publisher makes no representations or warranties with respect to the accuracy or completeness of the contents of this book and specifically disclaim any implied warranties of merchantability or fitness for a particular purpose. Neither the publisher nor author shall be liable for any loss of profit or any commercial damages.
2011-09-25
Introduction
Software development is a wide and varied field of endeavor stretching across scientific, business, utility, mobile app, and gaming enterprises. Even within a single discipline development efforts specialize to knowledge domains or to an environment of approved supporting hardware or subsystems, and folks become as specialized as a pastry chef.
As I have spent all of my adult life developing and supporting software in the mainstream corporate business world — in the industries of finance, manufacturing, healthcare, and marketing — I am gearing this book toward those who develop software and provide support in these typical capital intense endeavors. Consider it a grounding in the general operations of a commercial kitchen.
How this book is structured
Working in this sector can certainly be creative, interesting, and lucrative, yet it also tends to be highly politicized and fraught with the challenges of facing advancing technology platforms and ever shifting management priorities.
Like a hunter stalking a dear with a bow and arrow, success comes from considerably more knowledge than aiming your weapon. You need to understand deer habits and sensibilities as well as the location of the nearest watering hole.
Hence I have included a variety of sections in this book that span the gamut from the technical details of object-oriented design all the way out to high-level management strategic planning. It is only by understanding the full interplay of all the design components that you can become a truly effective developer.
Who this book is for
This book is intended for use in a graduate course in Information Technology Management. It assumes that you have already chosen to make a career in the business end of software development, have some exposure to a couple of programming languages, and perhaps have created a small departmental system or two.
In this book I want to kick up your development a notch and turn you into a large scale mission-critical developer capable of creating commercially viable software. Maybe even an éclair or two.
—— ——
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
You are free to copy, distribute and transmit this work, and to adapt it for commercial use, under the following conditions:
You must attribute your work as “based upon the book ‘The Art in Business System Design’ created by Jeff D Chapman;”
If you alter, transform, or build upon this work, you may distribute the resulting work only under the same or similar license to this one.
The Job
In later chapters I chat about the more serious aspects of software development, but I would like to start soft as a minuet and describe more generally what it feels like, and what it takes, to hold down a regular intellectual job.
In this chapter I write about developer personality traits, how to grow in your career, and the best habits to cultivate to stay productive.
The Art of Compatibility
What does it take to be compatible with a long term software development career? Quite a bit, actually.
At inception projects may call for numerous meetings so you need to develop courtesy and show some ability to conduct the initial interviews with a bit of panache. If you naturally have the skills of an insightful listener then you may tend towards gathering requirements and performing analyses.
If you’re leaning heavily toward analysis then you will need to develop an understanding of strategic planning and what goes on behind the scenes in your company and in your industry. For management-facing positions writing and salesmanship talents are also essential.
If you’re more inclined toward the technical aspects of the profession then you need a strong grounding in logic and the aptitude for being well-organized. Patience, research agility, and persistence will carry you far when you are coding.
A fair portion of your work will be teaching people how to learn to be competent in technically challenging tasks or instructing people on the intricacies of how your software operates. You must develop a patient and understanding attitude with those you teach: what may be obvious to you might be opaque to others.
Although creative work is satisfying since it entails “discovery,” you must be comfortable with continually learning and furthermore you need to be a self-motivated learner.
So to summarize, if you are thinking of pursuing software development ask yourself:
- can you write?
- can you sell?
- are you logical and organized?
- are you patient? persistent?
- are you competent at research?
- can you teach others?
- do you love to learn?
No two artists have the exact set of matching talents; the same is true for software developers. Maybe you’re more of a jazzy musician, fast to learn and improvise. Or maybe you are a patient oil landscape painter with a keen sense of planning. Although a handful of personality traits favor the profession, few need all of these talents: software development has enough sub-disciplines that you will easily find a niche dependent on your matching strengths.
The Art in Pieces
As if I were undercover or something, every couple of years my mom asks “What exactly do you do?”
Exactly? Well you see she only knows about computers from her laptop and the internet. So what does the job of being a software developer actually consist of in the corporate world? The easiest way to describe the work-work part of the job (aside from the social or sociological part of the job) is in terms of the steps involved in battling through a software project. This is the so-called SDLC, the software development lifecycle:
Research current and future relevant technology
Interviews and focus sessions with clients
Develop implementation alternatives
Research vendors
Review alternatives with management
Develop a project plan
Create functional specifications
Design data flows and data structures
Develop design specifications
Design the draft of the user interface
Programming
Managing the expectations of the sponsors
Unit testing