Friday, May 28, 2004

The only good fanatic is a book fanatic.
Virtues of a good Software Developer

1. Laziness
2. Impatience
3. Hubris

Do it right the first time (lazy)
Let the computer do the work (impatience)
Do the best job you can (Hubris)

Bring together a good developer and a good set of tools...

to Quote

Wednesday, May 26, 2004

Charles de Gaulle airport (2004),
"There was more dust falling from the ceiling, particles of cement, more dirt. We pointed it out on several occasions," the cleaner said.

Boeing (along time ago),
Some fresh engineering grad, one of the top guys in his class, gets to Boeing for his first job. He gets told to watch a hose for 3 weeks and count the number of drops of liquid and preasure of a particular pipe connection. Eventually he complains to his manager that he's got a menial job and, after 6 years of study he'd expect something a bit more challenging. And whats the story about the leaking pipe?

"Well, if that leak fluctuates wildly, its signs that something is wrong and it could blow the building apart" - Manager


Even the most menial of workers are important.
Even if you dont understand it, the most menial of jobs can be critical.
If you're an engineer, never disregard a complaint because you think it'll never happen or because the person complaining is 'clueless' about engineering.

Tuesday, May 18, 2004

Java vs .NET

Why not both. Why must one be exclusive? This exclusivity is a perception of Microsoft's practices to hunt and kill, as opposed to compete as sportsmen, but compete nevertheless.

I agree that the advances in .NET and the WoW factor that some .NET evangilisers try to dazzel me are an insult to the Java developers intelligence, that doesnt mean that .NET is bad for ALL developers.

DOTNET is the best thing since Windows 2000 and Java. VB, ATL, COM and a whole lot of bad voodoo must make way. Developing software does not have to be a dark art. The easier it is to validate the integrity of the application the better. Software is a business investment after all.

What Microsoft has going for itself is that its a onestop shop. SUN should do the same with regards to consolidating 3rd party projects to make them look like a onestop shop. JMX is a beginning but its a long way from providing a single management console provided with the J2SE runtime to manage running services, systems and remote services. J2EE is too heavy in my opinion.
Hibernate is great but good documentation (clear, simple, effective and authorative) on the hibernate website is lacking.

Simple Hibernate



Software - Capability Maturity Model (CMM)

Below are some links that provide a simple overview of what CMM tries to achieve and how processes can be put in place to achieve the goals set forth by CMM. I give XP as an example however many other processes from different methodologies could cover CMM. The important thing to note, and I disagree with strict level-by-level advancement of CMM, is that the field of QA in software comes down to 'best practices' that must be introduced by the managers of a company to act as a hedge against the risk of anarchy and cancelled projects. Their job is to reduce risk in the company by ensuring that we always travel forward. The obvious risk to chaotic companies is that while there may be significant short term gains to rapid delivery, there may be painfull costs in the longrun.

CMM Overview
ExtremeProgramming and SW-CMM

CMM is not the holy grail for business managers. There is more than one paradigm to manage development. A company whose managers are at least knowledgable that they can implement processes to protect their investment is better of than the company lead by blind managers.

Against SW-CMM
Software Productivity Research




System Security Engineering - Capability Maturity Model (SSE-CMM)

Security is a whole different ballgame but it's got to be evaluated somewhere. Understanding the all the issues before development is at least one benifit. People have encountered the problem of ensuring that they have not missed some glaring problem, why reinvent the wheel. The biggest problem with security, for small companies at least, is the expensive cost in time that it takes to achieve certification. That doesnt mean as a professional developer one should not know how to evaluate the risks, threats and justify their security solutions regarding how they'll minimise the risks and threats.

Common Criteria
SSE-CMM.org

Monday, May 17, 2004

The World Cup Soccer 2010 comes to South Africa at a crucial time in its development. Many development projects will be fast-tracked and can only improve and unite the country behind a common goal.

Monday, May 10, 2004

Thinking about what a newly hired developer should work through upon joining a company,

1. Company Products
2. Company Support Knowledge Base
3. Employed Project documentation (requirements, specification, source control)
4. Developer Processes (release notes, testing procedure, release procedure)
5. Professional Basics (see April 08, 2004 below)

(Some additional links)
5.1. http://ootips.org/ - great site
5.2. http://www.agiledata.org/ - some good essays
5.4. http://www.objectfaq.com/oofaq2/ - a bit dirty
5.5. http://javaalmanac.com - useful, wish it were maintained more regularly

The biggest company problem I've seen is when both management and developers have a knowledge gap on development and how to develop. Sad. Communication is a no brainer and it should be management that protects their investment in their staff. Hiring someone without any formally planned introduction with effective objectives and saying 'go code' is terrible.

Making sure that all developers are at the same level of communication is very important. Having one guru who doesnt see eye to eye with the rest of the team is a recipe for disaster. Is it up to management to ensure all developers have knowledge of the same concepts? Yes, but this also rests on the developers themselves. How can you call yourself a professional if you're not fully abrest of the concepts and correctness of your profession.