To survive, you've got to keep wheedling your way. You can't just sit there and fight against odds when it's not going to work. You have to turn a corner, dig a hole, go through a tunnel - and find a way to keep moving. - Twyla Tharp
Customer is unhappy with how the provider works. Due to some contractual and logistical reasons customer cannot change the provider so he chooses to force the provider to improve by adopting more iterative and incremental way of development together with other Agile practices.
Provider is not happy with the decision. He is risk averse and any change is considered a risk. Risk mitigation of this transformation receives bigger priority than the transformation itself. Management is so concerned with risks that it does not even try to understand what the transformation is all about. Any deviation from the Waterfall model and practices established years ago is considered unacceptable. Continue reading →
A programming kata is an exercise which helps a programmer hone his skills through practice and repetition.
This article is part of the series "Scala Tutorial Through Katas". Articles are divided into easy, medium and hard. Beginners should start with easy ones and move towards more complicated once they feel more comfortable programming in Scala.
I am often asked by non-programmers to explain what I do and how I do it. Following is my answer.
I am a programmer and, like many others in my profession, I am a nerd.
"Wonderful thing with nerds: they're enthusiasts. Not having a life means you get to love things with a passion and nobody bothers you about it." - John Burnside
Many think that computers are really smart. They are not. They are as dumb as it can be. What they excel at is crunching numbers very quickly. They do not know how to think or reason. They do exactly what we tell them.
The job of a programmer is to translate real-world problems into numbers that computers can understand. A computer is like a child that will do everything you tell him to do. What you want him to do is irrelevant; the only thing that matters is what you tell him.
On rare occasions when my daughter does actually listen to me, our relation is similar to the one of a computer and a programmer. I'm trying to make her do something and she's testing my patience by doing what I tell her to do instead of doing what I want her to do. Continue reading →
You got that great idea for an application that will be a huge success. High level feature set and design is done and you are ready to start bashing the code. Before you do, you might go through a checklist of tasks that should be done before the coding starts.
There are three things that I consider as prerequisites of every project (apart from knowing what the high level scope of the project is).
Some kind of a project management tool or a task tracker
Version Control System (VCS)
Continuous Integration (CI) framework with jobs for each phase from the build to deployment
I, for one, am often inclined to simply start bashing the code. However, that temptation should be avoided in favor of a better and more stable project development. Continue reading →