WHAT'S NEW?

Agile Methodology series :: episode 4

As part of the agile practice assessment, we group of friends, the other day they had a talk about how we feel and what we feel are good and bad about agile. what we feel are okay and what we feel are awesome about agile in comparison with waterfall model which we practiced previosuly.


So, lets get into the topic.

What I like with agile:

1. As a team, we can pick and choose which tasks to complete first.
2. I have the freedom of talking and sharing with my teammates more.
3. With more talking, we felt it was the ideas of the complete team than just a two or three that counted.
4. We have the best oppurtunity of 2-3 brains thinking on a problem, if we are stuck than a single head hitting on the wall for a solution.
5. Estimation is done based on ME and MY TEAM members abilities and skill sets than just picking up few use cases.
6. Minimum documentation to the level of making the new entrants understand the project.

What I hate/dislike/disagree about Agile:

1. Too much freedom or too much of work as tasks are divided for everyday core working hours.
2. Sometimes, it so happens that everyone is busy with the sprint work that I don't get a dedicated helping team member to solve my problem.
3. Too lengthy retrospective and sprint planning meetings.
4. Continuous work allocated. So taking a leave might turn my next day a nightmare.

Points of conflict.

1. Less scope and more scope for INNOVATION
2. Less documetation is a down side and at the same time an advantage
3. Team talk an advantage as well as a disadvantage.
4. Product owner giving tasks based on sprint length makes us lag on the complete knowledge of the project and the work to be done.


We will talk on some points in depth and touch upon few more in the next episode.
Stay tuned! Stay curious!! Stay Healthy!!!

All great ideas were shared listening : The Art of Listening

I think it’s not just right to talk about code and the software practices alone. There is more to this what makes the earlier two things go on and succeed. They are skills of different kind. I know that you guys would have guessed it by now – the behavior skills.

Behavior skills in its own is a very vast subject and more importantly it cannot be taught with a chapter in the book for every situation. However, we can make ourselves go through few leanings and stitch them with our previous experience and make ourselves ready for the best and the worst. And every time, it’s the act as per the situation that makes us more convenient and others in the situation more comfortable. So, let’s jump in, but where shall we start? I have the answer!!! Trust me and follow me here.


The first and the foremost of the Behavior skills (BS) is conversing. I somehow don’t want to take the word communication right away and right here, because it’s again a big topic on its own. When we are at a comfortable place, we will start using the word communication. Conversing is between two or more people and in general on a specific topic. So as far as the subject is concerned it’s easy for everyone in the group. However, for the subject to take a route where it realizes (I dislike the word ends-up, because it’s like a narrow mind thought)to become a fruitful discussion is when everyone puts in their thoughts on the subject matter.

But what it takes to make everyone their thought? It’s all about a simple practice of listening to the one who is talking/speaking and the rest giving the full levels of dedication to the one talking. This makes the complete circle of conversing. Yes, A complete life cycle of conversation (sounds pretty similar to SDLC?).

So, we shall put a full stop for this point here and come back with a new line in the next post. Thus, it’s very important that we listen to someone who is talking in the group while we are in discussing, because you might never know that a person who hasn’t spoke at all has a better idea than the rest of the team. See you soon!

Agile Methodologies : Tips : Tip1

  1. Make sure stand up meetings don't go beyond 15 min of time.
  2. Never discuss a topic too deep. Say a person is facing issue in establishing an ADO.NET connection to the DB. It should remain as a hindrance issue and not a topic to discuss on.
  3. Carry a piece of object like an identifier, that indicates who is speaking.
  4. More importantly, don't leave the issue reported in step(2) in the stand-up but discuss it and help resolve the person his/her issue at their desk.

Stay tuned, stay healthy, keep coding!!!

Agile Methodologies : Series 2 : Scrum Methodology


Parker and John are two champs working with a renowned IT product and services company. These days, they are keeping themselves busy for few hours and free for few hours at the office. When peeped in, you can notice that they are spending their time at Pool table, a smiling chat over a cup of coffee.

We grew curious and wondered how not just these two folks but rest all from their project are seen around the office at the same time. So, we decided to walk to them and ask what made them have good free time at office and at the same time deliver better quality product during the project meetings and demos. The answer was straight and clear  - "We are into Scrum under the Agile Methodology"

So, what is Scrum Methodology


When we talk about agile, most of the teams that practice agile are using scrum methodology. That's because its the most easiest and the simplest of all. The simple steps that make Scrum the simplest of all are.
  • Its team has 4 different roles 1. Product Owner. 2. Scrum Master 3. Team members.
           However, Scrum master is not a new person in the team, but a role given to one from the team.
           A good output from a team can be obtained if the team has 2 developers and 1 QA.
  • The project requirements are executed in what is called SPRINTS which last for 2 weeks and in some cases 3 weeks. 

  •   At the end of the sprint, all the team members/ stake holders get into a meeting and review the work done. In general, this has what items of the product have been promised, what are delivered, what have changed and followed by a DEMO of the potentially shippable application.

Backlog:

This has all the requirements to be developed so as to produce a completed product.
Each backlog item has few steps that take the team's efforts closer to finish line.

Sprint Planning:

Few items together executed over a sprint makes a potentially shippable product.

Daily stand-up.

Also called as daily scrum, all the team members share with each other
  • what an individual has done yesterday
  • what  is in for them for today
  • are there any obstacles/ impediments/blockages that can hinder the sprint work
This meeting is presided over by the scrum master.

Sprint review:

At the end of the sprint, team has a meeting with the product owner where the developed part of the application is either accepted or rejected.

Sprint retrospective:

This is the last step of finishing the current running sprint before the next one is taken. Here the scrum master discusses what went well, what went wrong, what were the unexpected that came to the team during the sprint. This helps in better planning for the upcoming sprints.

See you with another series on agile coming up!!! stay healthy, stay tuned, happy coding.



Agile development Methodology : A series : Introduction

Being a software doesn't mean that you always, all time stick to writing code based on the requirements.

Writing code is a job that makes a software engineer stick around. S/E is the one who makes requirements turn into applications. But, how is it that he/she make this change that helps the client's life turn around?

Everything in life is bound to follow step-by-step procedure. Say for example, reaching destination B from A. The step-by-step procedure is get to the nearest transportation mode at place-A. Get into the transport mode and reach-B. But this doesn't merely solve our requirement.

What else will we do? Find what is the best route and the fastest mode of transport available at place-A that makes us reach place-B faster.

Alright, say if this is the requirement for few hundreds of people out there at place-A at the same time. Assume that everyone takes road, hire a car and reach place-B. This leads to blockage of roads at a junction. How do we control the flow? put in a traffic signal and control the traffic. This is called management by laying down few rules.

Thus everything in life has a step-by-step procedure which has some rules that manage the software life cycle so that the life of S/E moves easy and helps him/her develop a better quality product with high quality coding standards.

To achieve this, there are many methodologies/ methods like waterfall, iterative, Agile etc.

Off late the one that gained importance in the recent times in Agile. Though Agile existed for over 2 decades now. management and developers have started believing that releasing little chucks of working code every now and then which shows some result is more important than a disaster that can possibly occur after all the development is done at one stretch.

So in the coming few posts, just to relax ourselves from hardcore programming we shall focus and understand what makes our life easy being a software engineer.

Lets make our code talk - episode 3

Hi guys,
Wish you and your dear one's a wonderful new year- 2014 ahead.

Continuing our abilities in trying to bring the best of us using our code, we are in the 3rd episode of this. This time around, we will discuss how we can make our code get rid of the red lines.
Red lines? Yes, the hard coded text in C# is in general in red color and so we call it the Red-Color-Phobia.

Red-Color-Phobia.

Many developers have this tendency of hard coding few values, during the process of assigning things, comparing things or while retrieving things.

Example 1:
Say, there is a requirement for an online shopping portal where in, based on the current location of the active customer, a surprise discount percentage has to be offered during the Thanks Giving time.

The developer/ programmer has written this to achieve the requirement.

Var cutomerSurpriseDiscountPercentage=0;
Var customerLocation = string.Empty;
If(customerLocation == “New York”)
{
       cutomerSurpriseDiscountPercentage = 10;
}


How can we better this code?

Define an ENUM that holds the names of the locations to which the surprise discount s available

enum ValidSurpriseDiscountLocations{
NewYork = “New York”,
Detroit,
NewJersy = “New Jersy”
}

Thus, our code is little modified for a better quality


Var cutomerSurpriseDiscountPercentage=0;
Var customerLocation = string.Empty;
If(customerLocation == ValidSurpriseDiscountLocations. NewYork)
{
       cutomerSurpriseDiscountPercentage = 10;
}


See you again.