Thursday, April 22, 2010

Craftsmanship

Craftsmanship. A term which was rarely used in connection with software development. Lately, in the Agile world, I hear this term often and it already started to shift my paradigm on many things.

It was discouraging to find out a related manifesto was already in place. This is what the manifesto says:

Not only working software,
but also well-crafted software
Not only responding to change,
but also steadily adding value
Not only individuals and interactions,
but also a community of professionals
Not only customer collaboration,
but also productive partnerships

Friday, April 2, 2010

Orthogonality


What is Orthogonality? (Thanks to Andrew Hunt and David Thomas for coining this term in connection with Programming)

When we move parallel to X-axis, no change on Y-axis. In other words, the two lines are independent. In software development, or computing in general, this can be called decoupling. I should be able to change one thing without affecting the other thing.

For example, I should be able to change the UI without having to change the database; or I should be able to change one concrete class without having to change another concrete class.

Thursday, April 1, 2010

The 'Big Picture'

When I lose the 'Big Picture', I lose my vision. I have been reading 'The Pragmatic Programmer' (a great book, by the way) and there is a quote in the book which struck me:

We who cut mere stones must always be envisioning cathedrals (Quarry workers creed).

A programmer, who is working on a particular project, is doing the quarry worker's job. If we don't cut the stones by keeping the cathedral (the big picture) in mind, we will have to do a lot of patch work, rework and maintenance later on.

The construction of software should be an engineering discipline. However, this doesn't preclude individual craftsmanship...

hmm...

In the beginning...

Ok, first things first. There is nothing written on stones here. No solutions offered here. This is more of my own ramblings on things pertaining to software design, development, testing and architecture. Everything is open for discussions. After all, this is part of my own learning process...