Posts made in 2011

« Older Posts   

EnvGen Version 1.4 Available

I have just released version 1.4 of EnvGen. It is available for download from my Software page. The major changes in this release include the following: Upgrade to Java 5 compatiblity. This version of EnvGen will no longer work with Java 1.4. Migrate source code repository to GitHub at basilv/EnvGen. All known defects are now […]

The Importance of Hiring

One of my many responsibilities at work as part of my role as Java Practice Lead is the hiring of Java programmers, developers, and architects in collaboration with human resources. Recently I have been adjusting our hiring process and clarifying the roles and people involved. I am always juggling a multitude of requests and demands […]

Announcing my Professional Software Development Email List

I am pleased to announce the creation of my Professional Software Development email list for this website. This list will allow you to receive my blog articles (two per month on average) as well as useful newsletters containing exclusive information not available on my website plus announcements and special offers. My standard for blog articles […]

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

Getting Started with WebSphere Configuration Scripting

Deploying Java EE applications into a WebSphere application server typically requires configuration within WebSphere of settings such as data sources, thread pool sizes, and maximum heap size. The WebSphere Administration Console provides a graphical user interface for easily doing this setup, but the fatal flaw of this approach is that it is manual – repeating […]

Alternatives to Formal Traceability

In my prior post The Trouble with Traceability I discussed the problems with doing requirements traceability, especially formal traceability using approaches like a requirements traceability matrix (RTM). Despite the flaws with traceability the underlying objective is sound: ensure that everything the customer or user requires is correctly delivered. So how can we achieve this objective? […]

The Trouble with Traceability

In software development traceability is the linkage of requirements to the software and/or development artifacts like design or test cases. The underlying objective is to ensure that everything the customer or user requires has been correctly delivered. I have no quibbles with this goal, but in practice the applications of traceability I have seen leave […]

Defects – To Fix or Not to Fix

To fix defects or not fix defects, that is the question: whether it is better to suffer the complaints of outraged users, or to divert effort to investigate and eliminate them. Shakespeare quotes aside, every software development project has to make decisions on how many defects to fix and which ones to leave alone prior […]

Lean Lessons From Starcraft 2

The real-time strategy computer game Starcraft 2 is about economic production as much as it is about combat. One of the major trade-offs within the game is allocating resources between economic production, combat unit production, improving technology / upgrades, and combat units. The ‘macro’ style of play in particular places a heavy focus on maximizing […]

Expertise in Starcraft 2

I have previously written about how to become an expert developer based on the general principles of expertise presented in the book Talent Is Overrated by Geoff Colvin. I recently have had the opportunity to appreciate the nature of expertise in a different context after picking up the real-time strategy game Starcraft 2 created by […]

Software Documentation Templates

I am a believer in minimizing software documentation that lives outside the code. This does not, however, mean no documentation. There are a number of reasons why documentation can be useful, especially for larger organizations: Documentation is more effective than code at communicating high-level or cross-cutting design and operational concerns. Larger organizations or distributed organizations […]

Speaking and Resource Pages

I have added a new speaking page to my website. For the past few years I have been regularly speaking at conferences, user groups and organizations about how to become more effective at software development and I felt it was time to document this aspect of my professional activity on my website. I have also […]

Most Disturbing Code

One question I often ask when giving job interviews is “What do you find most disturbing when reviewing code?” The answers I receive are especially interesting when compared to the interviewee’s results doing an actual code review: it is rare for them to identify the problems they consider the most disturbing. This lack of congruence […]

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

How to Determine Maximum Heap Size

What is a good way to determine the maximum heap size a virtual machine (VM) should be allocated in production? A simple but flawed approach is to simply start with an initial size and increase it by 50% to 100% whenever it runs out of memory. While this might be acceptable for test environments, incurring […]

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

More Remarkable Books – April 2011

This post continues my Remarkable Books Series that lists the books I have read recently and found inspiring or insightful. Drive: The Surprising Truth About What Motivates Us by Daniel Pink. Researchers have discovered that using external motivators – what Daniel calls the carrot and the stick – is not only generally ineffective for creative, […]

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

« Older Posts