Posts Tagged ‘process’

  

Balancing Order and Chaos with Process

Whether it is software development projects or I.T. operations, many larger organizations seem enamored with process as the solution to their problems. The default reaction to negative outcomes or variances between people in performing activities is to add more process. Process provides an ordered structure for keeping such chaos at bay. This reflects an underlying […]

Scaling Up From One Developer

I have noticed a common problem afflicting small development teams formed to make significant enhancements to an application that was previously maintained by just one developer. Both the original maintenance developer and their management are accustomed to essentially solo development and this culture spills into the enhancement work. Development is treated as individual efforts rather […]

My Concerns with Process Certification

In I.T. there are a number of process-based certifications that organizations can obtain based on standards like ISO-9001, ITIL via ISO 20000, and CMMI. The process of qualifying for a certification is similar across these standards: the organization defines and/or revises their internal processes to comply with the requirements of the standard, documents these processes, […]

My System for Writing

People from time to time ask me how I manage to write all the articles on my website despite having a family and a demanding full-time job. My simplistic, off-the-cuff answer is “one sentence at a time” :) Seriously, however, over the years I have developed a personal writing system that I would like to […]

The Shocking Truth about Agile and Waterfall

There is a common perception within I.T. that Agile methods are recent innovations – the new kids on the block – and they are contrasted with the traditional waterfall approach – the old-timer that has been around for ages. This perception is propagated by events such as the widely-discussed 10-year anniversary of the agile manifesto […]

Top Seven Quality Principles in Software Development

How do you ensure high quality when developing software? The processes that are used, the decisions that are made, and the actions that are taken must be aligned with proven quality principles. In this context I define a principle to be a fundamental truth that is the foundation for a system of behavior. Too often […]

Filter by Failure Mode Matrix: A Method for Planning Quality

For any software development effort a core component of planning how to achieve high quality is the selection of the quality-enhancing activities and practices that will be performed to assess the software. This selection depends on a number of factors including the capabilities of the team, the characteristics, complexity and criticality of the software, the […]

Using Feature Done Checklists

I have written previously about the importance of having a definition of done that the team understands and adheres to. At the level of features (use cases, user stories, etc.) a comprehensive definition of done will often consist of a number of items, some involving non-developer roles such as tester, business analyst, and architect. Tracking […]

Using To Do Comments in Code

I am a big proponent of using to do comments – comments prefixed by a specific identifier such as “TODO” – in a code base to indicate outstanding tasks or issues with the code. I have encountered developers who are either unfamiliar with the practice or who do not follow it as deliberately as I […]

Use Understood Methods Rule

Over the years I have refined the approach I use to write code. Recently I codified a key aspect of this approach as a practice I call the Use Understood Methods Rule. The basic formulation of the rule is quite simple: when coding a method only invoke other methods whose behavior you clearly understand and […]

My Definition of Done

I recently wrote about why you need a definition of done, and it only seems logical to follow this up by presenting what I use for a definition of done for developing software. I use two guiding principles as the basis for constructing my definition. Potentially releasable: Ideally the software can be released (or shipped) […]

Why You Need a Definition of Done

Whether you are working on a small task or a large project, do you and your team have a clear understanding of what it takes to complete a piece of work? The Scrum method of software development calls this Definition of Done and touts this as a critical practice for high-performing teams. While I have […]

The Five Commandments of Version Control

Effective use of version control is a fundamental development practice, especially if there is more than one person working on the same code base. Below are the standard rules I use for the proper use of version control in the style of biblical old testament commandments. I like imagining an authoritative voice booming these commandments […]

How to Always Get Better: A Framework for Continuous Improvement

If you believe like I do that organizations must develop a culture of continuous improvement in order to flourish, then the question is how to achieve this. Throughout my career and especially in the last few years I have promoted effective software development practices and a philosophy of learning and growing as a professional. I […]

Continuous Improvement Experiments

If, like me, you believe strongly in championing continuous improvement then an obvious question is how exactly can continuous improvement be implemented? One answer I have come up with is something I call continuous improvement experiments – CIE for short. What is a Continuous Improvement Experiment? The idea is simple: a CIE provides guidance via […]

The Source Code is the Design

I first came across the thought-provoking article What Is Software Design? by Jack Reeves as an appendix titled “The Source Code Is the Design” in the book Agile Software Development: Principles, Patterns, and Practices The article was written in 1992 so ignore the references to C++ (I mentally translated them to Java) and instead focus […]

Top Five Essential Practices for Developing Software

As a software developer what practices do you consider essential? Which practices are must-haves that you would refuse to build software without? I believe that producing good software is hard, and that we software developers need all the help we can get in developing software. I have put together a list of the top five […]

What is ITIL Service Management?

I recently attended a three day course on ITIL Service Management and wanted to share what I learned and what my impressions of ITIL were. ITIL – Information Technology Infrastructure Library – is a library of books that defines a framework of processes for IT and provides guidance regarding their implementation. ITIL was created by […]

Are You a Rule Maker or a Rule Breaker?

In order to work effectively with coworkers and clients, you need to understand their viewpoint. Over the last few years, I have discovered that a person’s approach to rules such as processes or standards is an important element in understanding and predicting how they will operate in the workplace. One reason this is a useful […]

My Defect Fixing Process

What’s your process for fixing a defect? What do you do when you are informed that a feature you developed isn’t working to the users’ satisfaction, or even worse fails to work at all? Here’s what I do. Initial investigation. My goal is to reproduce the reported problem in the application in my development environment. […]