Archive

Archive for 28 January 2008

Seven Principles Of Software Development

28 January 2008 Steve Leave a comment
The First Principle: The Reason It All Exists
A software system exists for one reason: to provide value to its users. All decisions should be made with this in mind. Before specifying a system requirement, before noting a piece of system functionality, before determining the hardware platforms or development processes, ask yourself questions such as: “Does this add real VALUE to the system?” If the answer is “no”, don’t do it. All other principles support this one.

The Second Principle: KISS (Keep It Simple, Stupid!)
Software design is not a haphazard process. There are many factors to consider in any design effort. All design should be as simple as possible, but no simpler. This facilitates having a more easily understood, and easily maintained system. This is not to say that features, even internal features, should be discarded in the name of simplicity. Indeed, the more elegant designs are usually the more simple ones. Simple also does not mean “quick and dirty.” In fact, it often takes a lot of thought and work over multiple iterations to simplify. The payoff is software that is more maintainable and less error-prone.

The Third Principle: Maintain the Vision
A clear vision is essential to the success of a software project. Without one, a project almost unfailingly ends up being “of two [or more] minds” about itself. Without conceptual integrity, a system threatens to become a patchwork of incompatible designs, held together by the wrong kind of screws. As Brooks states:

Conceptual integrity is the most important consideration in system design.

Stroustrup also notes:
Having a clean internal structure is essential to constructing a system that is understandable, can be extended and reorganized, and is maintainable and testable.

From which Booch summarizes:
It is only through having a clear sense of a system s architecture that it becomes possible to discover common abstractions and mechanisms. Exploiting this commonality ultimately leads to systems that are simpler, and therefore smaller and more reliable.

Compromising the architectural vision of a software system weakens and will eventually break even the most well designed systems. Having an empowered Architect who can hold the vision and enforce compliance helps ensure a very successful software project.

The Fourth Principle: What You Produce, Others Will Consume
Seldom is an industrial-strength software system constructed and used in a vacuum. In some way or other, someone else will use, maintain, document, or otherwise depend on being able to understand your system. So, always specify, design, and implement knowing someone else will have to understand what you are doing. The audience for any product of software development is potentially large. Specify with an eye to the users. Design, keeping the implementers in mind. Code with concern for those that must maintain and extend the system. Someone may have to debug the code you write, and that makes them a user of your code. Making their job easier adds value to the system.

The Fifth Principle: Be Open to the Future
A system with a long lifetime has more value. In today’s computing environments, where specifications change on a moment’s notice and hardware platforms are obsolete when just a few months old, software lifetimes are typically measured in months instead of years. However, true “industrial-strength” software systems must endure far longer. To do this successfully, these systems must be ready to adapt to these and other changes. Systems that do this successfully are those that have been designed this way from the start. Never design yourself into a corner. Always ask “what if “, and prepare for all possible answers by creating systems that solve the general problem, not just the specific one. This could very possibly lead to the reuse of an entire system.

The Sixth Principle: Plan Ahead for Reuse
Reuse saves time and effort. Achieving a high level of reuse is arguably the hardest goal to accomplish in developing a software system. The reuse of code and designs has been proclaimed as a major benefit of using object-oriented technologies. However, the return on this investment is not automatic. To leverage the reuse possibilities that OO programming provides requires forethought and planning. There are many techniques to realize reuse at every level of the system development process. Those at the detailed design and code level are well known and documented. New literature is addressing the reuse of design in the form of software patterns. However, this is just part of the battle. Communicating opportunities for reuse to others in the organization is paramount. How can you reuse something that you don’t know exists? Planning ahead for reuse reduces the cost and increases the value of both the reusable components and the systems into which they are incorporated.

The Seventh Principle: Think!
This last Principle is probably the most overlooked. Placing clear, complete thought before action almost always produces better results. When you think about something, you are more likely to do it right. You also gain knowledge about how to do it right again. If you do think about something and still do it wrong, it becomes valuable experience. A side effect of thinking is learning to recognize when you don t know something, at which point you can research the answer. When clear thought has gone into a system, value comes out. Applying the first six Principles requires intense thought, for which the potential rewards are enormous.

Categories: Articles, Technology

8 tips for becoming a true leader

28 January 2008 Steve Leave a comment
On the surface, the difference between a step and a stumble seems obvious.

But in business, plotting long and hard to climb into a leadership role often is indistinguishable from inadvertently falling into one. The fact is, whether you take a deliberate step toward an objective or immediately trip on a shoelace, you may end up in the same spot. Put another way, many people who have a laser focus on getting to the top make it there no faster than those who have a leadership opportunity thrust upon them.

Yet knowing the difference between thoughtful business leadership and the kind that happens seemingly by accident is critical — not only in your ability to grow and develop as a leader, but to establish a pattern of success that’s deliberate, not miraculous.

Here, then, are eight attributes that separate genuine leadership from leadership that’s more a matter of chance:

1. Real leadership means leading yourself. Passing out orders is as easy as passing out business cards. But a prudent leader also knows how to lead himself or herself — not merely to provide a genuine example to others, but to become a working element of the overall machinery of your business. “It’s important that leaders have the ability to focus and motivate themselves as they motivate others,” says Larraine Segil, an author and consultant who teaches executive education at the California Institute of Technology in Pasadena.

2. Don’t be a monarch. Thoughtful leadership likely means you already have a talented work force in place. That’s terrific. But be careful not set up a throne room in the process. Accidental leaders often inadvertently establish a system of guidance that’s unnecessarily restrictive. Guide employees, but don’t implement more parameters than are absolutely necessary. “It’s important to influence the people with whom you work,” says Segil. “Don’t see your business as a hierarchy.”

3. Be open to new ways of doing things. One potential land mine of a prosperous operation is to repeat anything that proves successful. It’s hard to argue against that, but an inadvertent leader will put far too much stock in sticking with what always works. By contrast, thoughtful leadership acknowledges success but also recognizes there are always ways to do things better.

4. Remember that white males are fast becoming a minority. Statistics show that white males now make up o nly a small fraction of the workplace population. Couple that with growing partnerships across borders, and it becomes obvious that blending a variety of cultures and backgrounds in a work environment is an essential leadership skill. A thoughtless leader will try to cope with this as best as he can. One with more vision will work to take advantage of differences. “Competition — the constant push for faster, better, cheaper — mandates that we learn to effectively deal with differences in the workplace,” says career consultant Susan Eckert of Advance Career and Professional Development in Brightwaters, N.Y. A company that weaves an appreciation of diversity into its cultural fabric will make itself “unbeatable,” Eckert says.

5. Establish a genuine sense of commitment. I must admit this is a personal sore point with me. I’ve seen too many company slogans and catch phrases whose import is no deeper than the paper they’re written on. Want to be “committed to superior service”? More power to you, but a genuine leader will see that as words and little else. Instead, put some meat on those bones — establish how to quantify excellence, design a cogent plan to achieve it and set a reasonable but real timetable for its completion.

6. Finish the job. Many business leaders yak about their complete game, but how many actually finish what they say they’re going to start? A thoughtless leader who never genuinely finishes anything loses the confidence of clients and customers. That lack of follow-through isn’t going to be lost on his or her employees, either. Instead, set goals and establish pragmatic, accountable measures to actually finish what you start. “The ability to complete things is critical,” Segil says. “Nothing’s useful unless you actually complete it.”

7. Show genuine appreciation. Thoughtless leaders must have forearms like Popeye’s, what with all the back-slapping they do. That’s fine, but good performance requires a more substantive response. Leaders with an eye to the future hand out praise but augment it with real rewards: promotions, raises, bonuses and other tangible tokens of appreciation. That motivates your people, not only to apply themselves with enthusiasm but to stick around your company longer than they might otherwise.

8. Know that leadership skills come from learning, too. Far too may business executives believe leadership skills stem from some sort of wondrous epiphany or other such flash of insight. Sure, great ideas can come to any of us, but being a bona fide leader also means study. Read books on effective leadership, attend seminars and pick the brains of colleagues to see what works for them. It can be a long education, but one with rewards that multiply with the more knowledge you have under your belt.

Categories: Articles