Code Is Not Enough

So you’re a coding ace. You know the latest languages. You use the latest tools. You even write your own tools, so your development environment practically reads your mind. You eat, sleep, and breathe code.

So why do you keep missing your deadlines? Code is not enough.

You love to code. You can hardly believe that people pay you to “work” at a hobby you often do for no pay at all. You’re never without a few personal projects under development.

So why do you feel so stressed at work? Code is not enough.

Code may be the fun part of programming, but it’s only a small part of the development process. It’s not enough to see you through a tough project. It’s not enough to help you develop business and meet requirements. It’s not enough to make your project a success.

Code is not enough. And in these essays, I’ll discuss the rest of the development process.

Ulterior Motive Lounge Episode 7: Pizza Party

In our last episode, The Reader and The UML Guy refactored the simple Pizza Order Class into a more complex but more robust Class Diagram that supports a full range of pizza order options.

(Click picture for a larger image.)

Episode 7

No new references in this strip. Too much material to cover. But we see the return of some old friends.

Inheritance in UML is called “Generalization”: Menu Item is a general Class, and Pizza, Item, Drink, and Side are more specific Classes. But in most common languages, it’s just called “Inheritance”. When I say “Generalization” in my UML classes, people look at me funny. Don’t blame me, I didn’t make up the names.

For a discussion of why type codes are for losers, I recommend (again) Fowler’s Refactoring.

image

For an introduction to Patterns, I recommend Design Patterns: Elements of Reusable Object-Oriented Software

GangOfFour

…and also Head First Design Patterns.

Head First

Fowler’s Party Pattern and a host of other really powerful Patterns are found in one of the most indispensable books on my shelf.

Analysis Patterns

With Design Patterns — as powerful as they are — there’s a trick: you kinda have to know you need a particular Pattern to know whether you need that particular Pattern. They’re low-level design concepts. Analysis Patterns are higher level, and you can usually recognize when you need them simply by looking at the customer’s business problems.