Software Maintenance is a Solution, Not a Problem (An Excerpt from Software Conflict 2.0) By Robert L. Glass

The traditional, problem-oriented view of maintenance says that our chief goal in maintenance should be to reduce costs. I think that’s the wrong emphasis. If maintenance is a solution instead of a problem, we can quickly see that what we really want to do is more of it, not less of it. And the emphasis, [...]

Best Practices for Object/Relational Mapping and Persistence APIs By Mario Van Damme

In this article I will begin with a discussion of home-grown vs. off-the-shelf persistence solutions, including areas to consider when deciding between the two, and advice for choosing the best off-the-shelf solution to meet your needs. I will also share suggestions and advice from my own experiences with O/R mapping and persistence APIs, with a [...]

What Is A Professional Programmer? By Sarah George

So what does it mean to be a professional programmer? What does it mean to be a professional anything? Some definitions simply say to be a professional is “to make money from a skill,” but true professionals also have a set of qualities often described as “professionalism.” In my opinion, these qualities are…Click here for [...]

Shifting the Burden – Whose Monkey Is It? By Donald E. Gray

A new installment in the developer.* Systems and Software series, exploring the connections between general systems thinking, cybernetics, and software development. Author Don Gray applies systems thinking principles–including “balancing loops,” symptomatic and systemic solutions, and “shifting the burden”–to a recurring situation with one of his clients.Click here for the full article.
Read [...]

The Many Flavors of Testing (An Excerpt from Software Conflict 2.0) By Robert L. Glass

Once we realize that we are committed to a future full of testing, it is worth exploring what testing really means. I would assert that there are several flavors of testing, and that all too often when we speak of testing we consider far too few of those flavors. An excerpt from Software Conflict 2.0.Click [...]

Test Smarter, Not Harder By Scott Sehlhorst

When we’re testing any software, we are faced with the tradeoff of cost and benefit of testing. With complex software, the costs of testing can grow faster than the benefits of testing. If we apply techniques like the ones in this article, we can dramatically reduce the cost of testing our software. This is what [...]

Success/Failure Criteria: Some Surprises By Robert L. Glass

At a breakfast seminar here June 6 on “Factors for IT Project Success and Failure,” Prof. June Verner of NICTA provided a fascinating mix of surprises and predictables related to her subject topic. The findings came from NICTA’s study of 400 projects in the U.S., Australia, and Chile, using questionnaires and interviews to discuss success [...]

Object Oriented CASE Tools: Lost Opportunities and Future Directions By Mario Van Damme

In this article the author explores the past and future of Computer Aided Software Engineering (CASE) tools, from the “traditional” structured tools of years long past to today’s “third generation” Object Oriented modeling and CASE tools–and beyond into possible futures. Ironically, the author finds that the future lies in the past.Click here for the full [...]

Career Paths for Programmers By John Bennett, Jr.

The key to maintaining a good employment outlook in IT, it seems, is to move out of programming and up into more business-oriented IT positions such as systems analyst, business analyst, project manager, or systems architect. However, a computer programmer can’t just decide to become a systems analyst or project manager overnight.Click here for the [...]

Interface Oriented Design Book Excerpt: Inheritance and Interfaces (Chapter 5) By Ken Pugh

Finding commonality among classes makes for effective object-oriented programming. Often, programmers express that commonality using an inheritance hierarchy, since that is one of the first concepts taught in object-oriented programming. We’re going to go to the other extreme in this chapter to explore the difference between using inheritance and using interfaces. An excerpt from Interface [...]