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...
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.
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 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.
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?
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.
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.
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."
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 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.
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 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 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 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.
By Andrew Hunt and David Thomas (Review by
Daniel Read)
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...
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.
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.
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...
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 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 *.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.
By Donna L Davis
A Scandal in Software
A serialized work of software development fiction. Follow the adventures Brian Luthor and Dr. Wirth.
By Donna L Davis
All views expressed by authors, bloggers, and commenters are their own and do not necessarily reflect the views of developer.* or its proprietors.