On Software Development Advances

Software development has advanced rapidly in the last decade. The agile movement has brought about a renaissance to get practitioners to challenge fundamental notions and re-think software development. Each accepted advancement in software development has gathered new followers, new interest groups, communities and conferences – so, we have seen the traditional Software Engineering conferences, followed by conferences on Objects (OOPSLA), . . . → Read More: On Software Development Advances

Coding Experience: Keeping Command Line Processing Separate

I am developing a tool of some kind in Java. This tool accepts some command line argument and options and perform some operations.

My development of this tool began by first writing some core code, which is essentially to traverse a directory of files, parse them into some internal structures for subsequent processing. After getting the core code to work, . . . → Read More: Coding Experience: Keeping Command Line Processing Separate

Maintainable Systems

This is a continuation of the post on tangling and scattering.

Once you can remove tangling and especially scattering, something wonderful takes place – your code becomes really easy to understand, you can trace easily from requirements to code. More accurately, you do not even need to do any trace-ability at all – you have a one-to-one-mapping from requirements to . . . → Read More: Maintainable Systems

Overcoming Tangling and Scattering

The primary barriers to good code (read maintainable, extensible and testable) is tangling and scattering – habits which developers and all seem to be born with.

Tangling. Tangling is also known as spaghetti code. Usually a module begins nice – with clear responsibilities and realization. But as requirements (features) are added into the system, it becomes entangled, so much that . . . → Read More: Overcoming Tangling and Scattering

SCRUM online

I was looking for tools I can use to demonstrate agile concepts in my training workshops. I need these tools to be free and easy to get going. Of course, it has to be free. I do not want my students and clients to pay anything to try out the concepts (at least not before the get really serious). It . . . → Read More: SCRUM online

Testing Concurrency in Applications with jShuffler

I have been asked by project teams regarding how to test their multi-threaded applications for some time, but I have never given a concrete answer. It is a difficult topic, and now finally I have the opportunity and the time to investigate this.

Testing of concurrent applications is definitely not easy. The way most teams test multithreaded applications are as . . . → Read More: Testing Concurrency in Applications with jShuffler

Best Way to Learn is Through Good Examples

The best way to learn is by following good examples. Unfortunately, good code examples are hard to come by, especially if you want something close to what you are doing.

If you want a good source code example that has the following characteristics:

It uses requirements that are close to yours. For example, if you are in the finance industry, . . . → Read More: Best Way to Learn is Through Good Examples

Agile China 2011 – The Future of Agile: Light Weight Software Engineering Kernel

I have a talk in Agile China 2011 on 3rd Sep entitled “The Future of Agile: Light Weight Software Engineering Kernel”. It really took me a while preparing. In talks like these, the audience will have all kinds of people. Having a great introduction to get their attention is not easy, and so is sustaining their interest. Getting the climax . . . → Read More: Agile China 2011 – The Future of Agile: Light Weight Software Engineering Kernel

Fooled By Technology / Excuse for Laziness

In Singapore, families become more affluent and start to employ maids. Gradually, the family members do not need to do housework and start relying on the maid. After a while, they have such dependency on the maid that they cannot do otherwise.

This is the same with technology. With the elevator, and modern conveniences, people do not need to move . . . → Read More: Fooled By Technology / Excuse for Laziness

Agile Development and Re-Work

I am working with some teams to advice them on how to improve the way they develop their systems. They have just moved from traditional development to agile iterative development. What they unanimously say is this – while they have become more responsive to market and priority changes, they face significant re-work. Things which they need only to do once, . . . → Read More: Agile Development and Re-Work