How long did it take to build ….?

I had a wonderful opportunity to listen to and Interact with Hubert Smits couple of weeks back. One of the questions he asked during the interaction is “how long do you think it took to build empire state building (the tallest one when it was built in 1930s)”? There were answers like 10 years, 7 years, 20 years etc.

Empire State
He replied saying 400 odd days with 3400 workers… Immediately the follow up question was to complete the architecture and design? He said “No…” to complete the entire building.

I couldnt believe it immediately. Went and searched in Google and found links confirming the same.

http://history1900s.about.com/od/1930s/a/empirefacts.htm
http://answers.yahoo.com/question/index?qid=20070510175905AAyRbD9
http://en.wikipedia.org/wiki/Empire_State_Building

Some of the things which i could take as a lesson from this
1. It requires meticulous planning. I am not talking about creating a plan here… Continuous Planning.

2. The architect had previous experience in building something of this sort. But again, every project is unique in nature.. The risk management capabilities of this construction was beyond what we can imagine(identify, monitor, mitigate and track).
Women

3. The architects produced the initial design in 2 weeks, based on their previous experience. But, they would have refined it continuously as they built every floor.

4. Though the architects had previous experience, they would have ended up in new challenges every time. The design and development would have gone through iterations to address these challenges and not based on a big design upfront.

What this confirms is that even an industry which is considered to be the oldest, builds things iteratively and not based on one single plan. Hmm… now we are almost near end of 2013 and we work in a modern industry. But these practices are still @ a level where people only talk about it in most of the places.

Now… i will come back to my favorite place. May be after 50 years, someone might be writing about Belandur flyover. How long do you think it has taken to complete the incomplete Belandur flyover?

Happy Learning!!!

Image courtesy of

vitasamb2001 / FreeDigitalPhotos.net
stockimages/ FreeDigitalPhotos.net

Advertisements

Release Planning and Schedule Monitoring : Myth or Real

In the previous post, we looked at the issues with estimation and for sure it’s clear that there is no way one can estimate accurately.

If you want to plan and monitor a release, the first thing one should know is the pace in which his/her team is running and the second is where we stand as of now. All the management care is if you cannot complete it tomorrow, when you can complete.

Obviously, one cannot go to their senior management and say it will be done whenever it is done. I am sure, we all need our jobs :).

Monitoring

But is that an excuse for the manager’s to sit idle and do nothing saying my developers are not giving any estimates or say I have got you an extension whenever you asked for. For sure, most of the managers rely on their techies to give the real picture. But isn’t that we all have some brain and we should put our brains to some use?

In one of my previous posts i have talked about my view points on this “Are we there yet?

There are two things one as a manager can implement, which can help him make informed decisions.

CYCLE TIME

As a manager one of the tools that can come handy for monitoring is the cycle time. Cycle time is the time that takes to complete a feature/story/task from start to end. Now classify your stories/features/tasks/whatever you have, in the format of small, medium, large, and extra-large.

Cycle Time

Calculate the cycle time. What one should be more interested is on the Average. Display your average time takes to complete the Features on a White Board. Build a Trend chart on the same so that everyone knows how things have changed (whether you are spending more time or less time) over the course of the development.

What if we realize that we are taking a lot of time to complete a feature?

There are two things one can look at.

  • How much time is spent at each section (Analysis / Development / Acceptance)
  • The Lead time to move a story from one section to another

This will give you the complete insight and all possible optimizations can happen after that. This will not only expose the problem within engineering team, but also the time spent in requirements. Say for example: If you see your team members spending most of the time in Analysis, i am sure you know where to optimize.

What are the benefits of doing this?

  • As a manager, one is not only dependent on the team to get the estimates. 95% of the teams are into brown field development and this will help big time.
  • Everyone in the team knows how much time approximately it takes to get anything done (since the average time and the trend chart has been displayed). If you are the Product owner, it’s easy to plan for releases by seeing the average time taken and the trend (whether it’s taking more time or less time).  Will it still be accurate? May be or may not be. But then you have some way to predict (using the Velocity Chart, Cycle Time and Cycle Trend) rather than just shooting at the dark.
  • Oh, this works for Brown field. But ours is Green field. Sure, you cannot change the estimates given. But even in your Green field you still need to plan for releases and this will be very helpful even in that case.

What are the downsides of it?

  • Project status will be crystal clear for all the stakeholders. People can make informed decisions.

VELOCITY CHART

Check this post from Johanna on creating project dashboards to display progress

Create the Line chart with Markers in Excel sheet which displays

  • Total Number of Features to be delivered in the duration of the project in X Axis and
  • Duration of the project (Week wise or month wise) in the Y Axis

Velocity Chart

(A Velocity chart for one of the projects i managed in 2009. This Snapshot was taken sometime around 26-Jul-09)

This will help you see the Features done on a week wise or month wise and the features left on a weekly or monthly basis. If there is a new feature or a set of features added on a specific period it will also show you a spike of the remaining features and anyone with common sense can understand what is going on in the project. If you need the project to be done on time, then most likely the Features done line and Features Remaining line has to meet in the middle.

What are the benefits of doing this?

  1. First, it gives a clear status on what is going in the project, how many features done, how many left and how many are newly added etc.
  2. Second, it helps the manager in clearly showcasing the changes that happens in the project. So no need to defend saying features added or modified is troubling the guestimate. In other words it helps in CYA…
  3. Third, the manager do not have to go to a techie to ask where they stand if he/she has to give a monthly update to the stakeholders.

What are the downsides of it?

  1. Project status will be crystal clear for all the stakeholders.
  2. Manager has to work. Apart from giving GYAN to the team members saying they need to be disciplined with their code, Manager also has to be disciplined in creating, updating and maintaining this which is quite some work. Of course, one can always find an executive assistant to do this. J
  3. Manager cannot blame someone else when things go wrong.

This sounds good. But how will it help me solve my estimation problem?

One may not get rid of the issue with estimates completely. But if this data is captured organization wide and have some way to classify data, you still have some scientific way to estimate rather than guesstimate  Of course, I do understand that every project is unique and the complexity varies.

An almost immediate thing which you can expect is

  • Oh, we don’t have such tools in our organization or project.  You don’t need a tool to do all this. You can do it using Excel sheet. Immediate response would be i don’t know how to create a line chart in Excel. All you have to do is type “Line charts in Excel” in Google and click “I am feeling lucky”. Of course one needs to read it which is beyond the scope of this post 😦
  • The other thing is oh, we are not agile. For sure, you don’t need to be agile to do this. Anyways most of us who claim that we do agile do not anything about agile.

IMHO, it is all about bringing in some discipline within the environment, and with a very minimal change everyone can gain.

Happy Learning!!!!

Image courtesy

ddpavumba / FreeDigitalPhotos.net

Am developing a new product. What should i develop first?

We know what we want to build. But we are not sure, what to start with?

This is one of the questions i end up discussing very frequently during my consulting engagements.

Am sure we all agree that there is no straight forward answer to this.

Let us take my favorite example – an eCommerce store. Assume that you are developing an eCommerce application which is going to sell furniture’s.

What are the features one would require?

To sell the furniture, i need a way to
– manage the categories of furniture i am going to sell
– manage the furniture’s in the category
– manage the price for the furniture’s
– manage the orders and fulfill them
– Have a website where users can browse the furniture’s, search for a furniture, view the furniture detail, enter the quantity and place order.
– ….
– ….

Get Started

When i was a developer, if you would have asked me this question on what to start with, i would have said you need a good database design, screens to manage the master data before we can do the eCommerce application.

After burning my hands multiple times with new product development, my current answer would be to build the most important feature from in this list without which the eCommerce store is useless.

Take the Groupon example which Eric Ries talked in his book Lean Start up. Groupon first built their site using a word press blog, maintained those pages on a daily basis, went to market, took the feedback before building the actual website.

The Key here is to look at the pieces in the equation that cannot be removed.

I can maintain my master data even using scripts. But without the eCommerce website (it could even be a blog) you may not be able to sell anything. Start building things which are the core of your system.

Do not waste your time in building things which are not highly important. All those subsidiary features can be built later.

IMHO, The most important role in product development is Product Owner. If you have one, who can do the right prioritization i am sure you will have a successful product.

A Related example:

Start at the epicenter

Happy Learning!!!!

Image courtesy of idea go/ FreeDigitalPhotos.net

Windows Server AppFabric : What does it really mean?

Complex business applications have quite a bit of back end business processes and activities that are hard to develop and manage. Business applications are typically developed using multi-tier architecture (Presentation, Business and Data).

Business logic traditionally is maintained in the Application Server in the form of application or Services. Apart from hosting the business logic, the application server provides services such as security, data services, transaction support, load balancing, message queue etc. Example could be Web logic Application Server, Web Sphere Application Server in the Java World.

In the Microsoft World, Services Infrastructure in Windows Server acts as the Application Server. By having .NET and IIS on top, it helps in running custom applications developed using WCF and WF, run distributed services, queue management, and perform other distributed tasks across multiple servers.

Though it’s been called as an Application server, so far, it has provided only very limited hosting services for WCF and WF applications inside IIS with limited tracking, monitoring, and management functionality.

To host a Workflow application, one must define their own host (either to run inside IIS or as a part of a custom Windows service).

Is there a better Solution for this?

Yes. Its in the form of Windows Server AppFabric. AppFabric extends Windows Server to provide enhanced hosting, management, and caching capabilities for web applications and middle-tier services. AppFabric will provide a way to create scalable and manageable server side applications.

Image Source : http://msdn.microsoft.com/en-us/library/ee677255.aspx

Windows Server AppFabric has two major components

  1. AppFabric Caching Services: Caching Services which can speed up access to frequently accessed data.
  2. AppFabric Hosting Services: Services that helps to host and manage services created using Workflow foundation and Windows Communication foundation.

IMHO, Windows Server AppFabric is a great server side solution. Recently we happened to implement this for one of our clients and i was impressed with the features it provides.

Useful Pointers:
AppFabric Architecture Guide
Introducing Windows Server AppFabric

Happy Learning!!!

Desktop Application Development : Is there a future?

Whenever I speak to any company which has been developing desktop based applications, one of the questions that comes out is what are the options one has for building a desktop application today?

If you just look at the Microsoft stack, i guess there is not much happening with both Winforms and WPF. No one knows the roadmap for Silver light apps as well. I have never seen anything promising on the java side for desktop application development.

So, should we consider this as a signal that desktop applications will die? I was under that impression till the time i saw HTML5 as the way to develop Metro applications. If Microsoft is doing something in this front, then are there any one else doing something similar.

I posted this question to asksendhil.com and got myself redirected to Google Packaged Apps. If you are into Solutioning, you will have a better feeling now some options to propose for desktop development.

Packaged apps deliver an experience as capable as a native app, but as safe as a web page. Just like web apps, packaged apps are written in HTML5, JavaScript, and CSS. But packaged apps look and behave like native apps, and they have native-like capabilities that are much more powerful than those available to web apps.

Packaged apps have access to Chrome APIs and services not available to traditional web sites. You can build powerful apps that interact with network and hardware devices, media tools, and much more.

Packaged app pages always load locally. This allows apps to be less dependent on the network. Once a user installs an app, they have full control over the app’s lifecycle. Apps open and close quickly, and the system can shut apps down at any time to improve performance. Users can fully uninstall apps.

Without any effort on your part, your apps will launch offline. But you will need to put some effort into making sure user data is stored locally while offline and then synced back up to your data server once online.

Packaged apps are modified web apps. You use the same code, frameworks, and tools of the web platform to write your apps. Some browser features have been removed, other web APIs have been disabled or changed to improve security and programming practices.
http://developer.chrome.com/trunk/extensions/apps/about_apps.html
http://developer.chrome.com/trunk/apps/first_app.html

In this process I also found frameworks like Pokki, which helps you develop desktop applications using HTML5.

My belief on HTML5, JavaScript and CSS3 as the standard for developing applications (Web, Desktop, Mobile) in the future is getting stronger and stronger every day.

In summary, JavaScript based Packaged Apps or Windows 8 Metro Apps are just another language binding to do the desktop development. The future will converge on this language binding (JavaScript) because it makes us chase the WRITE ONCE/RUN ANYWHERE (Smart tv, Tablet, Mobile, Desktop PC, Browser based Web Application) dream again.
The only exception to that is, this time it is JAVASCRIPT and not JAVA.

Happy Learning!!!

Lean Startup : Useful Pointers to get started

I started reading the book “The Lean Startup: How Today’s Entrepreneurs Use Continuous Innovation to Create Radically Successful Businesses” about an year back. For sure, it is an impressive thought process. From that time on wards, I have been reading, discussing, practicing ( some form), Selling Lean Start up ideas 🙂

The Lean Startup is a business approach coined by Eric Ries that aims to change the way that companies are built and new products are launched. he Lean Startup relies on validated learning, scientific experimentation, and iterative product releases to shorten product development cycles, measure progress, and gain valuable customer feedback. In this way, companies, especially startups, can design their products or services to meet the demands of their customer base without requiring large amounts of initial funding or expensive product launches.

Via : http://en.wikipedia.org/wiki/Lean_Startup

I found an interesting place where you can test your knowledge on lean start up.
http://www.veri.com/t/lean-startup/18
I scored 195 points 🙂

If you are new to the concept of lean start up, here is a list of useful pointers which can help you get started

Lean Startup – Book Summary

Principles of Lean Startups

Lean Startup: How to Learn fast about Customers, their Problems and Solutions

How to Lean Startup? A Flowchart

Using Lean Startup Principles

Lean Startup Cycle

Customer Development Engineering

Combining agile development with customer development

How Development looks different in a lean startup

Lean Startup (PHP World)

Implementing Minimum Viable Changes as Part of a Lean Startup for change approach

Iterative funding of start ups- an entrepreneur’s perspective (Check the Image)

Contrasts between Agile and Lean Startup

Continuous Value Delivery

Happy Learning!!!

Responsive Web Design

Recently i was looking into Responsive Web Design (RWD), as i see there is a lot of momentum.

Responsive Web Design (RWD) essentially indicates that a web site is crafted to use Cascading Style Sheets 3 media queries, an extension of the @media rule, with fluid proportion-based grids (which use percentages and EMs instead of pixels), to adapt the layout to the viewing environment, and probably also use flexible images. As a result, users across a broad range of devices and browsers will have access to a single source of content, laid out so as to be easy to read and navigate with a minimum of resizing, panning, and scrolling.

Via : http://en.wikipedia.org/wiki/Responsive_Web_Design

I did not understand the full meaning of it until i started reading this book “Architecting Mobile Solutions for the Enterprise” by Dino Espito.

The essence of RWD is that when you are building websites for mobile, the size vary from device to device. Now how do we build a site which works with the different sizes?

A Responsive Web design is a client side solution which uses CSS for the Visual Characterstics and JavaScript for Behavior characterstics to build sites.

This means that you arrange webpages around a fluid HTML layout, which is then reconfigured and styled dynamically on the client using JavaScript functions in your pages. Your Javascript code, decides the browser’s capabilities and rearranges the page, apply styles etc.

Key technical features of responsive Web design:

  • Media queries and media query listeners
  • A flexible grid-based layout that uses relative sizing
  • Flexible images and media, through dynamic resizing or CSS

Via : http://msdn.microsoft.com/en-us/magazine/hh653584.aspx

Sounds very good. If you happened to have good javascript programmers, then its definitely worth looking into this.

Couple of good pointers
http://www.alistapart.com/articles/responsive-web-design/
http://assets.en.oreilly.com/1/event/3/Responsible%20Web%20Design%20Presentation.pdf

Happy Learning!!!!