15 memorable programming lessons

I’ve been programming since I was 15 and I’ve loved technology and programming every since, during that period I’ve learned some lessons that i would like to share.

I Wrote here my most memorable 15 lessons so far: http://www.jaftalks.com/Home/Show/memorable%20programming%20lessons

Code optimization remarks

Software Developers phobia is code optimization, how to write faster codes? How to make programs runs faster at the same hardware? How to make your client happy?

Heaving read a few million lines of C# code, I came up with these optimization benchmarks that help to significantly improve code performance through simple changes.

Please go here to read the full article: http://www.jaftalks.com/Home/Show/Code%20optimization%20remarks

Thank you

Software Coding Standards

When I was looking for a standard convention for generics, I came across a 50-page manual for coding standards for C#. I am sure that, apart from the author, there are few who actually go through and read all of them. So, I thought of coming up with this article. I have tried to comprehend the essential facts which we developers sometimes neglect in C#. I will also discuss some common pitfalls.

See the full article : http://www.jaftalks.com/Home/Show/Introduction%20to%20Software%20Coding%20Standards

Introducing Agile Methodologies

 

Why we are introducing Agile Methodologies

We use agile development methodologies to improve quality while reducing cost and time-to-market.

Why Agile?

Traditionally, software applications are developed using waterfall methodology. A large percentage of big corporations still continue to follow the waterfall model. As of 2008, surveys show that agile penetration in large enterprise is less than 25%, but growing fast as more and more enterprises understand its benefits. A majority of ISVs and startups already use agile methodologies.

Agile Methodologies

Agile is gaining momentum because of several factors:

  • Businesses operate in a fast changing environment, where they have to respond to market changes quickly by introducing new products or changing existing ones. Typical projects are now 3 months or less and not years as it used to be.
  • New technologies are coming to market every other day, so if a product takes years to build, it sure will get outdated before it launches.
  • The web-based model allows companies to launch a bare bones version of the product first, get feedback from end-users and then incrementally add new features based on that feedback.

Thus launching early, collecting feedback from real users and performing frequent releases is the new way of product development. And agile is closely aligned with this new way.

The Scrum Process

Scrum is the default process we use. A custom-made process for a client is usually a variant of Scrum.

The requirements for the product are collected into what is called the product backlog, which is a prioritized wish list of features. Features may be described using user stories. The Customer maintains the product backlog. The product backlog is never frozen, users can suggest new requirements and the Product Owner can add them to the backlog and prioritize it.

The product is developed iteratively in multiple sprints. A sprint is a time-boxed iteration, which usually lasts 30 days. The duration of a sprint can be fixed based on the nature of the project. Typically a release follows a sprint, though a release can be made after multiple sprints. Each sprint will implement a set of features.

Once a sprint starts, the scope of the sprint cannot be changed by adding new features. This allows the developers to complete a sprint without external interference.

scrum

Detailed Process

Development is done in 4 week iterations. Prior to the beginning of an iteration, several things happen. We call these pre-iteration planning. The actors involved in this phase are Customer, Project Manager, and Business Analyst and to a lesser extend Developers and QA.

Note that during the pre-iteration phase, the developers are working on the previous iteration.

Pre-iteration:

  • Identify features to be implemented in the next iteration from the Product – Customer, Project Manager.
  • Write use cases; create wireframes – Business Analyst, Customer.
  • Identify sprint tasks for implementing the features / use cases – Project Manager, Team.

Iteration

  • Team clarifies use cases with customer and BA. They further elaborate use cases and factor-in exceptional and failure conditions.
  • QA comes up with acceptance criteria.
  • Customer approves use cases and acceptance criteria.
  • Features implementation by development team

Post-iteration

  • QA works on test automation (new test cases are automated to the extend possible).
  • Release code to live.
  • Smoke tests in live environment by QA.

Agile Methodologies

Follow

Get every new post delivered to your Inbox.