A hunter watches a mountain goat grazing on the pastures on the side of a highway. A speeding truck loses control and starts veering towards the grazing goat, in split seconds it jumps off to a safe place. The hunter’s kid who was watching all this asked his dad, “Did the goat escape because it is agile?”. The hunter replied “It is just common sense to avoid a speeding truck”.
There was a question posted in programmers forum in stack exchange site asking Is agile the new micro management? I am not sure why such an impression about agile has been formed in that person’s mind. It could be due to some recommendations being wrongly interpreted. First of all the recommendations like “a quiet place to work” is a necessity for development teams anywhere following any methodology. Interpreting that as a no talking zone requirement is against improving communication between the team members. My perception about why these kind of wrong interpretations arise is due to wrong sense of accomplishment provided by having something tangible. If someone has to show any progress in adopting a new process or a method then it is natural for him/her to incline for a support in some form which could be seen or measured. This has led someone to believe that following some guidelines verbatim and measuring the level of adherence to it is equal being successful in adopting a new process or method.
I have not been aware that I was part of agile teams for a few years until I met someone who joined my team because it was an agile team. We were a team of 12 people doing weekly releases to production, wearing different hats of Dev, QA, BA and had everyday interaction with the customers. That is how I started my career and I never felt the value of it until I worked in a conservative setup. There was one golden rule of thumb we followed in the teams I worked, treat the team (client team included) as your own organization and do what makes sense to deliver the right value.
I asked one of the directors of a company that how come he never used the word agile though he was part of agile teams for quite long, he replied “talking to your customers often; keeping the code well tested, integrated and delivering the right value on time is all about common sense. There is nothing agile about it!”. He sure left me to figure out what agile meant.
Is there a prescription? Check the answers given out in that forum for that question.
Recently my faithful mobile handset dropped dead after five years of duty as a phone and a bluetooth DUN. I reached the shop trying to get myself a similar device and the salesman lured to Xperia arc and started explaining the features. The one feature (ok fact) that sounded too ridiculous was 2,50,000 applications available and the numbers are increasing way too fast. I ditched any advice to go for a hi end phone and settled for a candybar one. I think that there is an android bubble and need to understand how big it is. First look at the market place shows that it allows any application to be available for use without QA from them. This one window allows vendors to mutate, replicate, spam their products on the market. Examples – Ringtones classified as mp3 players, wallpaper changers with just one wallpaper but rendering too many ads, very simple applications which could rather be rendered as a web page. Finding a useful product out of the store is an uphill task.
Secondly; like how every company wanted their website during the dot com boom, similarly they seem to be in line for mobile applications for themselves. Most of the applications are concentrated on content rather than getting innovative by using the accelerometer, camera, GPS, cell site information, NFC and others. Layar is one such application which is a true blue mobile application. My gut feel is once the excitement levels plateaus and the awareness of the mobile applications increase, then we will see high quality products on the market. As a developer I restrain myself not to create a mobile app which can anyways be rendered in a web browser with a good UI.
Between Spaghetti, Pasta and Sandwich which one would you choose if you are writing and maintaining code, how it should be like? Definitely not the spaghetti right? I have come across spaghetti code and detest it to the core.; but I have also observed that wrong understanding of OO or TOO (too much object orientation) and obsession with modularization leads to pasta like code. This makes us go through multiple files and sections of code to understand simple functionalities. Cannot we translate most of the software requirements into code like how a well prepared sandwich can be nutritious and filling too?
I don’t have an answer to this question but my readings like Worse is better (talks about less and useful features) make me infer that like every person’s hunger can be satisfied with cost-effective, tasty, nutritious and simple to make food; most of the software requirements should also be delivered with simple to write and maintain code. Aesthetics, modularization and other bells & whistles should not come at a cost.