Posts Tagged ‘software development’

« Older Posts    Newer Posts »

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 […]

Growth through Operating Under Constraints

The other day I was composing a tweet and it struck me that the difficulties I faced in crafting my message to fit within 140 characters without using abbreviations was a good exercise for making me a better writer. After further reflection I generalized this specific case to a broader principle about personal development: performing […]

Streaming Data to Reduce Memory Usage

I recently performed a series of optimizations to reduce an application’s memory usage. After completing several of these I noticed that there was a common theme to many of my optimizations that I could explicitly apply to help identify further opportunities for improvement. As a reoccuring solution, this qualifies as a design pattern which I […]

How Should You Feel About Defects

I have recently observed myself and others having a variety of reactions when defects are found ranging between the extremes of elation and despair. How should we feel when defects are discovered? Should this vary by role? Role-Based Attitudes I will first answer this question on a role by role basis, starting with the role […]

Connecting with Calgary

I recently had the opportunity to travel to Calgary, Alberta to visit the CGI office there and hang out with several of the development teams. These teams have extensive experience with larger-scale agile development including both XP and Scrum and have a good reputation for having a great development culture that excels at mentoring and […]

When is Testing Done?

I have been asked several times recently about the question of when testing can be considered ‘done’ for a piece of software? A related form of this question is to ask when one should stop testing. This applies to both developers and testers for any type of testing ranging from writing automated unit tests to […]

Predicting and Evaluating Defect Levels

Is it possible to predict how many defects will be encountered in acceptance test or production? What number of defects would be considered reasonable versus signs of low or high quality? These are questions I considered when my last project entered acceptance test. At the time I had no good answers. So over the past […]

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 […]

Who is Responsible for Quality?

I had a manager a short while ago ask me who was responsible for quality within their organization, within the context of software development projects. Without having to think about it, I knew the answer. It was intuitively obvious, but it was an intuition fueled by reading hundreds if not thousands of pages about lean […]

Mistaking Plans for Goals

I believe there are two primary flaws in focusing on plans. The first flaw is the assumption that following the plan will achieve the goal. Sure, the plan is assembled with the intent of meeting the objectives, but what guarantee is there that this will actually happen? The second flaw is putting one’s primary attention […]

Example-Based Requirements

Most of the requirements I deal with are in the form of documented use cases and lists of business rules. These requirements are almost always written in a generalized form. For example a business rule might be written as “Produce a warning if the last transaction in the account is more than a year ago.” […]

Defect Prevention Practices

I have written numerous times about defect elimination practices such as code reviews, unit testing, and static code analysis tools. From the perspective of lean thinking, however, eliminating defects, no matter how soon after they are introduced, results in waste due to rework to fix the defects. The ideal as far as lean is concerned […]

Capability for Software Developers

I have recently been wrestling with the problem of clarifying the concept of capability levels for software developers. What does it mean to call a developer junior versus intermediate? How can a developer at one level progress to the next? How do you evaluate the capability of a developer? These questions and more formed the […]

Exploring Mental Processes behind Developing Software

How do you go about designing and coding software? More specifically, what is your mental process for accomplishing this? Becoming more aware of the approach you use allows you to deliberately control and improve it. Mental thought processes are, however, very intangible and difficult to put into words. In the software development literature much has […]

Why Coding is not Enough

If the goal of software development is to produce working software then developers need to know more than just how to code – they need to know how to prevent or eliminate functional and non-functional defects. Too many developers think their job is complete once a feature has been coded. Sometimes they think that it […]

Predictability and Planning for Done

There is an interesting relationship between having predictable estimates for project management and using a thorough definition of done. Achieving the full definition of done for a feature or release (often called being done-done) is surprisingly difficult. You may have heard the anecdotal rule of thumb that it takes 80% of the time to achieve […]

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 […]

Problems with Typical Definitions of Project Success

My previous article discussed the importance of defining success as it relates to software projects and products. Now I want to look at some typical definitions of success and identify problems or short-comings with these definitions. From this analysis I aim to point the way towards a better definition of what success entails. Typical Definitions […]

Avoiding Caching To Improve Hibernate Performance

I was recently doing some performance tuning and made the surprising discovery that doing less caching in Hibernate actually improved performance in a particular scenario. When I discovered the problem this seemed very counter-intuitive. In fact, my original design maximized the use of caching in order to improve performance, but the opposite happened in practice. […]

« Older Posts    Newer Posts »