Sunday, November 18, 2007

Positive sides of Agile

As I am developing in my career I am drifting towards the Agile Engineering. More or less, it follows the process of traditional Engineering, from analysis to design to coding to testing. The granularity which we deal in the Agile is much more compared to the Waterfall. This gives us the more number of checkpoints in our development cycle.
Agile process is customer or end user centric, prioritize the stories of 3x5 cards in order of the customer’s demand and follow them in-orderly as we go to address all these cards. This makes the easier fulfillment of the business needs as and when requires. At the end of the iteration, we have a working set of binaries, with the most priority customer stories addressed; this allows us to deploy our miniature application developed in the iteration to the production environment. This offers the customer, a kind of satisfaction, as something is happening over his requirement list. The R&D divisions also are not over burdened at the end of the release, making their job much relaxed.
We were talking of the granularity in the Agile Engineering. Agile says to break down your complete release in to modules. The modules are then has be subdivided into what we call the stories, with the acceptance of every story showing a slight drift in the positive direction of the Software Development. These stories are broken down into tasks, with each task assigned to a different individual. Acceptance of all the tasks for a story confirms the acceptance of the story. The granularity of such a level and with each story having the weight age associated any slippage can be caught at a very early stage; and the corrective measures can be taken appropriately.
In the primitive Engineering a release was thought of the end-to-end process of n number of things. This doesn’t let to have the scope categorizing various subunits on the basis of their need. The result, can be a disaster; we can be left with a product with all the features addressed but not the one which was most important of the release. Or, to accommodate it we will need to stretch the due date. This is not accepted in today’s market driven world.
Some says, the shorter cycles and the stories definition in Agile are very much specific to your project needs. This doesn’t give an individual enough chances to groom his creation or innovation. But then, creation are to be made for the customers, and if at the end of rigorous research you come at a conclusion of either your research is substandard or customer doesn’t need it. Then what? A loosened heart J. There I would say there should be checks in your development process, to get the feedback of the surroundings around as if you are going in the right direction. The other point I would mention is AGILE IS NEED BASIS, AND NEED IS THE BASIS OF ALL INVENTIONS, hence Agile should be taken in positive sense of creativity.

Saturday, November 17, 2007

Theory of Evolution & Software Appl

The Software like the life, evolves, grows and extinct. Initially Software gets designed for a particular issue to be addressed, slowly it expands and accommodate the subsidiaries which surrounds the core issue to be resolved. The users changes, so as their needs - initially an application which was written to sum two integers now ask the end user to input their the numbers of their choice, then on GUI interface gets added, then the number of integers to be added become generic, later demand reaches out to add floating point arithmetic complex numbers etc. This growing cycle make the application to add two integers lost somewhere in the dark corner and it now has become a calculator. With the calculator the need is to increase the range of numbers to be added, etc. But someday the bigger giants will see the opportunity to accommodate your calculator in their business suite, and since the customer has to use suite for his other business needs; your application will then go to legacy and finally extinct of the market. So Software is not a business of writing 10K lines of code, compile it and give it to the customer rather it is a field of continuous upgrading. Therefore don’t go mum with your initial 10K lines of code, but take them as the foundation of your mansion and build your dreams over it. Software Development is neither a science nor engineering but it is a journey with no destinations.

Tuesday, November 6, 2007

AGILE is T20 Format of SDLC

Hi I am Lalit Shukla; I joined Software Industry two years back, and since then I am in this go lazy field. This is my brief introduction.

Why so brief? World is fast so do we need to.

Let’s start with Cricket. Cricket has changed its format from Timeless Test Cricket – a nine day match to Test Cricket to One Day International and now the super fast Twenty-20 cricket. Nobody has the time to wait and watch the beauty of the shots; the cover drives, the straight drives etc. The batsman coming on to the pitch wants to hit the six on the very first ball he faces. Even without noticing the bounce or turns of the pitch.

Similar is the case of Software Development Life Cycle [SDLC]. This has also been changed in its form so much from its inception, the very first I had studied the Waterfall Model, in which the developers follow the classic path of Analysis, Design, Coding and Testing. But once the Testing phase fails, we used to return where we were at the initial point of our Project Initiation journey. Similar to Test Cricket, release deadline met without a concrete positive result.

This drawbacks leads to a new methodology called as Spiral Model. This model has one thing very good; i.e. something if you fails to do in your present Project; just don’t Panic, you will have the next release to follow and you can accommodate your failed Test Cases in next Release.

Gradually, the smaller Software Projects became Suites which later converted to Platforms. Therefore the number of teams started increasing and so their interdependencies. This leads to Management’ job of keeping eye on the status of the Project deliverables, slightly difficult. The number of Defects or Failed Test Cases planned for current releases moving to Future releases increases and therefore the size of the spiral. Hence a new methodology what we call as AGILE, literal means flexible came into being. The core behind this is that at every point in time every individual must be aware of what is happening in and out of the complete Project. Hence failure of one person/team doing a particular thing can be overcome by some other person’s/team presence. So Agile says be top on the specific issue to be resolved, and forget about the classics of the design specs of the complete project.

Agile in a way, says go for the core thing you are assigned to, and forget about the subsidiaries. This can be a super fast methodology of SDLC. The iteration planning/demos every two weeks are just like the fast Cricket, which says go and hit hard, and if you can’t, just RAISE YOUR HANDS, we have other batsman[developer/Defect] lined up.
AGILE says don’t think of what is going to be there in next iteration or what was there in last iteration. Following the basics of AGILE, may let the teams meet their deadlines, but it avoids the individual contributor for being a far sighted; similar to what we call INNING building in bigger formats of CRICKET. This is why bigger formats of Cricket will be there, and so should be the older methodologies of SDLC. After all, the depth of a Developer and Cricketer is measured by his PATIENCE and CONFIDENCE.

Monday, July 23, 2007

Am I a Software Developer

I'm a s/w engineer in reputed firm .. which is known for its gud range of product

lines ... i'm supposedly a member of a CORE team .. plz notice the casing of the word

CASe...But wat m i doing ..? i dun know .. even i hv a fuss bout my product.. wat is so gr8

bout the product m i making ... ?... evry s/w wrks on the same lines ..? u being given a set

of inputs .. u do some data manipulation ovr those input strings n generate some output

patterns ..i hear ppl saying "hey dude i'm working on KERNEL, filesystem drivers ...some

alien virtualization technologies ... ". the KERNEL is put to empsize so that others wud

know him as a geek.. but then is that KERNEL stuff is so much to boast bout ...believe as

far as I know every kernel comprises d same basic principle modules ... Process, Memory,

Filesystem, Netwrk.. management .. n evry module has specfic standards to follow
...like for loading a kernel image for all d Operating systems involve reading the

BIOS..loading the boot sector of the first device ... loading the booting image located at a

specfic offset, extracting it and spawning a root level process .. and keep spanwning and

exiting a process as n whn require... so knowing such a stuff of exact offset is called

Software Engineering ...??? I suppose NO...Now come to the application layer ...today we are

having so much of the frameworks .. a function of creating a window with lots of graphics

can be made in just a few clicks ...you put a DOT and entire set of library methods pops up

related to the object u pointing to .. is that putting this DOT so special that u r the only

one who knows or can put such a DOT ... Is this the S/W engineering ...I suppose NO...

Software Engineering is phenomenon of constant learning..,, a phenomenon of

identifying issues and rectifying problems...it shouldn't be co-related to the size of

Knowledge base you are having ...it shouldn't be related to any specific techology .. a real

s/w developer is the one who can swich between different technologies as n whn require n do

watever suits to the environment ...it is a methodology of building new things ...S/w

Engineering requires creativity .. a futuristic approach,..devicing a thing which can change

at least somebodies' lifestyle ...this left a question on us are we Software Developers...?