The Independent Magazine
for Software Developers
developer.*
Books Articles Blogs Subscribe d.* Gear About Home
Newest developer.* Articles
Interface Oriented Design Book Excerpt: Inheritance and Interfaces (Chapter 5)
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 Oriented Design.
Career Paths for Programmers
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.
Success/Failure Criteria: Some Surprises
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 and failure factors with practitioners.
Test Smarter, Not Harder
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 we mean when we say test smarter, not harder.
The Many Flavors of Testing (An Excerpt from Software Conflict 2.0)
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.
Shifting the Burden - Whose Monkey Is It?
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.
What Is A Professional Programmer?
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...
Best Practices for Object/Relational Mapping and Persistence APIs
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 focus on "best practices."
All developer.* Articles
.NET Exception Handling
This article presents a set of general error handling principles and illustrates them in action with a downloadable VB.NET project, including a demonstration program and a reusable .NET exception handling DLL.
After the Gold Rush
McConnell posits Engineering as the ideal model for that professional maturation process, and he makes many solid arguments in its favor.  Most of these points are based on the central idea of reusability.  This is not just recycling the data access library you wrote for your last project...
Agile Documentation: A Pattern Guide to Producing Lightweight Documents for Software Projects
Useful documentation has its place, but it should be succinct, worded simply, and presented well.
Altar of Sacrifice
How many of us have, or will, sacrifice ourselves on the altar of someone else's software project?  I know I have.
An Interview with the IGDA (*.ORG Series)
An interview with Jason Della Rocca of the International Game Developers Association (IGDA).
An Interview with The Programmer's Guild (*.ORG Series)
An interview with Paul Hanrahan of the Programmer's Guild.
Automating Software Development Processes
Automating repetitive procedures can provide real value to software development projects. In this article, we will explore the value of and barriers to automation and provide some guidance for automating aspects of the development process.
Behind Closed Doors: Secrets of Great Management
One of the reasons good management is so hard to learn is that much of management takes place behind closed doors. We’re going to open those doors and allow you to see great management in action.
Best Practices for Object/Relational Mapping and Persistence APIs
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 focus on "best practices."
Career Paths for Programmers
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.
Code as Design: Three Essays by Jack W. Reeves
These essays by Jack W. Reeves offer three perspectives on a single theme, namely that programming is fundamentally a design activity and that the only final and true representation of "the design" is the source code itself.
Code Complete: A Practical Handbook of Software Construction (1st Edition)
Several years ago, when I was just getting started as a software developer, I read Steve McConnell's Code Complete all the way through, cover to cover.  Then I went back and read several sections again.  There is no question in my mind that...
Code Comprehension
Quality code does not happen by accident. It really takes true desire in the heart of the developer.
Consider The Total Picture for Offshore Development
Quite often, when corporations consider the possibility of doing some or all of their software development offshore, the decision is made without considering all of the factors necessary to arrive at the best decision.
Consistency, Correctness, and Craftsmanship
Judging someone else’s code according to our own relative correctness measurements is one thing, but what happens when we need to modify that code?
Crystal Clear: A Human-Powered Methodology for Small Teams
Cockburn's tolerance for extensibility and flexibility offers practitioners a foot-hold for transitioning toward agile practices.
Diving in Test-First
Do you test your code before you send it downstream? How much confidence do you have that another code change won't break something?
Eastwood, Stallone, and You: Are You a Typecast Developer?
We may not receive a lot of public recognition, but developers are a lot like actors or directors, our careers punctuated by each software smash. It's amazingly easy to fall into the typecasting trap.
Elevating Expressions
Too often when we write code, we get caught up only in the exercise of the code itself and forget about the people who will have to use the software and maintain the code after we are long gone.
Factory Chain: A Design Pattern for Factories with Generics
The recent Java 5 (a.k.a. Java 1.5) generics implementation opens both new problems and new opportunities in the implementation of the "Gang of Four" Factory patterns.
How Did This Happen?
Introduce yourself to the concepts of general systems thinking and learn a powerful problem solving tool called the causal loop diagram.
Improving Developer Productivity With Domain-Specific Modeling Languages
What is DSM? How is it different from UML and MDA? Can DSM languages produce significant programming productivity gains? Can software development be truly model-driven?
Integrity Testing for Software Professionals
Before I became a supervisor, the very notion that someone might be monitoring my Internet usage was not only horrifying, but demoralizing. Didn’t they trust me?
Intellectual Property Strategies for the Software Seller
The company may have a sales strategy and a long-range view of technology, but the legal protection of its intellectual property becomes an after-thought--a strategic orphan.
Interface Oriented Design Book Excerpt: Inheritance and Interfaces (Chapter 5)
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 Oriented Design.
Leveraging Discontent
Too often, members of a team do not understand the power a non-appointed leader can have in influencing the direction of a team, or in initiating change.
Los Principios del Programador
"Principled Programming" translated into Spanish by Juan A. Romero of the University of Cordoba in Spain.  Traducido desde English por Juan A. Romero desde el Universidad de Cordoba por España.
Making the Cut
We were not sure if we would find them, but we were looking for developers who were serious about their craft, who had reached an advanced level of general software development knowledge...
Object Oriented CASE Tools: Lost Opportunities and Future Directions
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.
Open Source Strategies for Software Developers
Typically, the developer finds management to be of two different mindsets when it comes to open source. They are either supportive because they believe it is an inexpensive solution, or they are not supportive because of the perceived risks associated with its use...
Patterns of Enterprise Application Architecture
Patterns of Enterprise Application Architecture does exactly what it sets out to do: provide the reader with a catalog of proven enterprise level patterns and the knowledge to use them.  Fowler describes an architectural pattern as...
Personal Chemistry and the Healthy Body
I’m well acquainted with such people because I display all their qualities. What we share is an honest dedication to our work--so much dedication that we abuse our own bodies, if necessary, to get the work done.
Places to Intervene in a System
Here we continue the developer.* Systems and Software series, in which we explore the topics of general systems thinking and cybernetics to discover how "systems" concepts can help software professionals in the day-to-day work of creating, deploying, and improving software.
Principled Programming
"Principled Programming" is a collection of "principles" for professional software developers.  The principles address concrete matters such as layout and comments, as well as "softer" areas such as personal character.
Principled Programming (Short Form)
This is a "short form" version of the full "Principled Programming" list.  This shorter version only includes the principles themselves, minus the commentary and explanation.
Refactoring: Improving the Design of Existing Code
This book is essential reading for anyone involved in the construction of software using object oriented languages. Fowler and his fellow contributors do an incredible job of simultaneously introducing and formalizing a code improvement technique called "refactoring."
Seven Sins of Software Sellers: Common Mistakes In Protecting Intellectual Property
Is the value of your company strongly tied to your software innovations? Does your company have an intellectual property strategy?
Shifting the Burden - Whose Monkey Is It?
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.
Software Craftsmanship: The New Imperative
Software engineering is a term often used to encompass the entire range of software development, from creating high-level architectural designs to low-level coding. In Software Craftsmanship: The New Imperitive, Pete McBreen proposes a more strict definition...
Software Design and Programmers
How important are software design skills to a programmer? The traditional view is that programmers merely implement the designs of other people.
Software Estimation Using Pattern Analogies
An LOC estimation does not give you the total picture; the technique I developed to fill this gap is called Pattern Analogies.
Software Maintenance is a Solution, Not a Problem (An Excerpt from Software Conflict 2.0)
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, when we do it, should be on maximizing effectiveness, and not on minimizing cost. An excerpt from Software Conflict 2.0.
Software Team Turnover: Why Developers Leave (And What You Can Do About It)
Easily one of the biggest issues that causes developers to look elsewhere is probably the first issue which causes managers to cringe.
Specialties and Strategies (Part 1) for Software Professionals
How does one come about one’s specialty or specialties?  Once we have chosen a specialty (or after our specialty has chosen us), how do we maintain that specialty?
Specialties and Strategies (Part 2) for Software Careers
A truly rich and fruitful specialty will take years to master, and even better, a large base of adopters will lead to continuous innovation, meaning that there is still continuous learning opportunity...
Stunted Growth: Subsidies and Stagnation in the Software Tools Market
On the face of it, there should be a great deal of money in the software tools business, but, surprisingly, the money really isn’t there for small businesses. This article will show that the ultimate cause of the deficiency is the fact that most of the large development tools are subsidized by the sales of Operating Systems and hardware. These subsidies have the effect of diminishing the profit potential of any pure software development tool vendor and thus remove the incentive to create.
Success/Failure Criteria: Some Surprises
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 and failure factors with practitioners.
Syndromes of Forgotten Programmers
The people who come and go in a software shop may eventually be forgotten, but the tracks programmers leave behind make a lasting impression.
Ten Reasons You're a Software Developer
I still remember the welcoming speech a computer science professor gave his class of eager freshmen almost 20 years ago: "Find a another profession where you won’t constantly beat your head against the wall."
Test Smarter, Not Harder
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 we mean when we say test smarter, not harder.
The Art in Computer Programming
In a way, we programmers are quite lucky. We get the opportunity to create entire worlds out of nothing but thin air. Our very own worlds, complete with our own laws of physics. We may get those laws wrong of course, but it's still fun.
The Art of the Developer Resume - Improving the Programmer Resume
Resumes may seem like something of a mundane topic, but after spending the last few weeks wading through programmer resumes, it is clear to me that most software developers need help with their resumes.
The Cognitive View: A Different Look at Software Design (An Excerpt from Software Conflict 2.0)
"All this time, when we've talked about design, we've been playing around on the periphery of the subject." Excerpted from the classic essay collection Software Conflict 2.0.
The Design of Everyday Things
While this is not specifically a computer-oriented book, it is nonetheless a must-read for anyone who designs and develops computer software. I have learned more about design, especially user interface design, from this book than any other book that I've read...
The Diagram of Effects
Systems thinkers have developed the diagram of effects to bring the structure of complex problems into view.
The Employment Offer Letter: Your Firewall Against Viruses that Infect the Employment Relationship
Have you opened your bonus check only to find that the amount was much less than you were anticipating?
The Global Development Interview Series: Colombia, With Gustavo Alvear
This interview with Gustavo Alvear of Colombia, South America is the first in the developer.* Global Development Interview Series.
The Global Development Interview Series: Saudi Arabia, With Turki Al-Aseeri
This interview with Turki Al-Aseeri, who works in the software development industry in Saudi Arabia, is the second in the series.
The Global Development Interview Series: Scotland, with Craig Murphy
It's going to take us awhile to get all the way around the world, but here we are at stop #3, with Scottish software developer Craig Murphy, who shares his experience of software development life in Scotland with interviewer Donna L. Davis.
The Human Impact of Software
Eventually, we just turned off the phones and let everyone go to voice mail.  The mailbox would fill up completely about once an hour, and we would just keep emptying it.
The Many Flavors of Testing (An Excerpt from Software Conflict 2.0)
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.
The Mythical Man-Month: Essays on Software Engineering (20th Anniversary Edition)
If a book about software development has sold over 250,000 copies (almost unheard of for technical books) and after 28 years is still in print, and selling well, it's a pretty good bet that it has something significant to offer.
The Pragmatic Programmer: From Journeyman to Master
Hunt and Thomas's The Pragmatic Programmer is the logical companion to another great book about software construction, Steve McConnell's Code Complete.  Indeed, these two books make great companion volumes. Were they from the same publisher, they could be sold as a set.
The Purpose-Driven Programmer
Somewhere between algorithms and altruism lies Programmer's Purgatory.  Sure, career burnout is occasionally attributable to work volume, but more often it results from inner conflict...
The Task Pattern: A Design Pattern for Processing and Monitoring Long-Running Tasks
Sometimes it is necessary that tasks that take longer than a few seconds provide feedback to the user and the system. The Task Pattern presented here provides a proven solution for creating and monitoring long running tasks.
Those "Minor" Usability Annoyances
The reasons the business decided to rebuild the application are fairly typical: the original architecture was short-sighted and does not scale; the code base is convoluted and fragile...
Two Principles of Conversation
So what’s a programmer to do? Short of waiting for MIS managers to become enlightened, not much--except try to work around the problem as best we can.
UML Distilled: A Brief Guide to the Standard Object Modeling Language (2nd Edition)
Just about any developer these days who works in an object oriented language would do well to have at least cursory knowledge of the seemingly ubiquitous Unified Modeling Language (UML). If this acronym is not on your resume, then that is a hole you might want to fill.
Understanding the Professional Programmer
This is probably my favorite book on the subject of software development.  It is definitely my favorite of Weinberg's many excellent books.  I return to this book again and again, and find something new every time.
Walking on Water and Eggshells: The Developer's Dilemma
Can we possibly keep a project on schedule and under budget while simultaneously pleasing both clients and management? It's like being expected to be rich, beautiful, and smart!
Weinberg on Writing: The Fieldstone Method - Banishing Writer's Block
In his new book, acclaimed consultant, teacher, and author Jerry Weinberg introduces his approach to writing called The Fieldstone Method. This is not a book about grammar or style, but about *getting things written*--and cutting yourself some slack in the process. In today's world of blogging and "agile publishing," Weinberg's evolutionary, non-linear method is especially welcome. This excerpt explains how Fieldstoning can break the cycle of writer's block.
What Is A Professional Programmer?
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...
Who Owns Your Software? Software Copyright and the Work for Hire Doctrine
Who owns the copyright to custom software--the person who designed and coded it, or the person who commissioned the work? The answer might surpise you.
Your Own Software Development Company
Each of us who works as an employee or contractor for someone else thinks about starting our own company from time to time--some of us more than others--but not everyone has the temperament for it.
Write for developer.*
Articles by Category
Profession and Career
Includes articles about career topics such as software professional resumes and job satisfaction, and also professional topics such as ethics, knowledge, and quality.
Software Design
Includes articles about the design of software, both in the small, at the code, class, and module level, but also in the large, at the system and enterprise level. Object oriented design is featured prominently. As well as more theoretical topics, such as the classic essay, "What is Software Design?".
Management, Process, & Methodology
Inlcudes articles about how to manage software teams, how to cope as a newly promoted manager, and how to "manage your manager." Also includes articles about software lifecyle, process, and methodology.
Software Development Technique
Incudes articles about programming, design, and testing technique, including topics such as usability and aesthetics.
Software Quality
Includes articles about software quality, including testing, usability, and design.
The Software Industry
Learn more about the software development industry, including topics such as offshoring, educaton, professional organizations, economics, and international software development.
Book Reviews
This category contains software engineering, development, and programming book reviews. (We are always looking for people interested in writing software development book reviews.)
Software Legal Issues
Articles about software intellectual property, coyright, and other software development legal issues.
The developer.* 'Systems and Software' Series
Articles exploring where systems thinking, cybernetics, and software development meet.
The developer.* Global Interview Series
Interviews with Software Developers from Around the World.
The *.ORG Interview Series
This series of articles features interviews with not-for-profit sofware related organizations, charities, and professional societies. (Contact the editor to have your organization interviewed.)
Featured developer.* Articles
Code as Design: Three Essays by Jack W. Reeves
These essays by Jack W. Reeves offer three perspectives on a single theme, namely that programming is fundamentally a design activity and that the only final and true representation of "the design" is the source code itself.
Personal Chemistry and the Healthy Body
I’m well acquainted with such people because I display all their qualities. What we share is an honest dedication to our work--so much dedication that we abuse our own bodies, if necessary, to get the work done.
Software Design and Programmers
How important are software design skills to a programmer? The traditional view is that programmers merely implement the designs of other people.
Special Projects and Series
What the CIO Wants You to Know
A series of articles for software professionals by Donna L Davis, sharing her insights as a former developer promoted to management.
A Scandal in Software
A serialized work of software development fiction. Follow the adventures Brian Luthor and Dr. Wirth.
The spinoza Programming Language
Home of the object oriented spinoza programming language project.
All views expressed by authors, bloggers, and commenters are their own and do not necessarily reflect the views of developer.* or its proprietors.
A Jolt Award Finalist!
Software Creativity 2.0
Foreword by Tom DeMarco
RSS Feeds
Articles
Software Engineering Articles and Essays Feed Icon
Blogs
Software Engineering Blogs Feed Icon
Our newsletter policy:
No list sharing of any kind.
No "special offers" from "partners."
No "webinars." No "Special Reports."
No junk.
Google
Web developer.*
New developer.* Shirts & Accessories

All content copyright ©2000-2006 by the individual specified authors (and where not specified, copyright by Read Media, LLC). Reprint or redistribute only with written permission from the author and/or developer.*.

www.developerdotstar.com