Thursday, March 7, 2013

Artistic Standards


SOPs (or as we often call them nowadays “best practices”) get the usual bum rap but I like them as an educational tool. Standards and best practices are fine to the extent that they promote a safe and productive workplace without adversely affecting a sense of job security. For example “Always use camel case” is a good standard to improve productivity. “Keep your source code in three places” is a best practice that enhances safety.

Wielding standards like an axe over your employees’ heads will only create defensive animosity. I prefer to use them as search terms when I want to find a template or an example to share with somebody. For instance I might Google “best practices SQL maintenance” and see what it returns.

If your employees feel however that the purpose of your standards is to turn them into interchangeable cogs then at best they will only implement them halfheartedly and at worst they will spoof compliance. Make positive, non-corrosive best practices your standard operating procedure.


Friday, February 8, 2013

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.


Wednesday, January 9, 2013

The Art of the Form


Let's face it: programs run on data. Your software will either receive a direct supply of this data from another machine or it will be interacting with human beings. Most business programs must ultimately, however, gather input from folks who enter vast quantities of customer-related data by typing on a keyboard into an on-screen form. Hence one key to successful software design is mastering how to develop effective data entry forms.

Since humans are highly evolved toward visual processing and semiotic signaling, designing a quality form is as challenging as a fashion model who tries to impress a critic: you must attend to placing every detail as the smallest lapses from perfection stand out starkly. We notice if your borders are too wide or your color choices are too pale.

Organize your forms into logical pieces so that they present related fields to the relevant subgroup of employees with the authority to update them. Required fields should have default values; group commonly-entered fields together near the high-touch areas of the form. Think of organizing your form like you would organize a restaurant menu: appetizers, desserts, drinks.

Users prefer consistent hand actions that keep the fingers fixed over the home keys. Too much clicking about with a mouse for reading and selecting of pulldown menus is an annoyance for high volume data entry.

Either the tab or the enter key should advance between fields in a consistent and logical manner. Indicate errors as close as possible to the source field (physically and temporally) with both a visual cue and a subtle audible signal.

Quality forms take a fair amount of effort to develop; failure to pay attention to all of the small details shows considerable discourtesy to your users. By paying attention to this handful of guidelines you may create forms that are intuitive, promote quality data, are easy to learn, are simple to use, and are haute couture.