Thoughts on software development

On this page I will collect the relevant articles on (modern) software development ideas, which may include technical topics, such as optimization, but also more philosophical items, thinking about the process of software development.

Software: How to parallel?
Throwing some ideas around regarding optimization for parallel processing. An important point is that serial optimization for performance is a fixed target, but when parallelism comes around, ‘performance’ can be latency or throughput, or some balance between the two.

The Pessimist Pamphlet
Discussing the potential pitfalls of the popular Scrum method for software development. Pointing out that Scrum originated from Agile development, which had a few basic values that seem to be overlooked by many Scrum teams in practice. One such pitfall is that people are too focused on short-term goals, and do not see the bigger picture of how components and requirements fit together.

Scali on Agile Development
Going over the values and principles of the Agile Manifesto one at a time, commenting on how you may interpret each of them in practice and what the consequences might be.

Premature Design is the root of all evil
On the importance of getting a good feel of the problem you’re trying to solve, before you make the final product. Prototyping is very important. Sometimes you want to spend a few days experimenting and writing ‘disposable’ code, just so you get a feel of the libraries and systems you are interacting with. The experience you got from this experiment will get you a much better design and overall solution.

Multi-core and multi-threading performance (the multi-core myth?)
An introduction to how threads and processes are handled by hardware and OSes, and why things are never as simple as “I have X cores, so I want to start X threads”.

Experience and skill in software development
What you can learn from ‘older’ developers who have been around before the tools and processes you are currently using. They knew how to develop software before these tools and processes were around, and also know why and how these tools and processes have evolved into what we know today.

Source code is NOT documentation
I believe this title is self-explanatory.

Read any good books lately?
More discussion on how Agile and Scrum aren’t the answer to everything all the time, such as requirements engineering and architecture/design.

The “Visual Basic Effect”
How the users of a language may misrepresent the language’s true strengths and weaknesses.

Bugs you can’t fix
People seem to think that you can fix everything in software. Some examples prove that this is not necessarily the case.

What is software development? An art? Craft? Trade? Occupation?… Part 1
First part in a three-part series on how software development may mean many things to many people, and how as a result there are many types of software developer, and many different approaches that people may take to developing software and solving problems.

What is software development? An art? Craft? Trade? Occupation?… Part 2
Second part in the series.

What is software development? An art? Craft? Trade? Occupation?… Part 3
Third and final part in the series.