Saturday, December 15, 2012

Experience with Google Nexus 7 Android Tablet (32GB) - ASUS

Nexus 7 is best of Google's 7 inch tablet with  world's Android Operating System 4.2 (Jelly bean) in conjunction with Asus. Google stopped  its 8GB version of Nexus7. Now the tablet is available with 16GB or 32GB internal memory and there is no micro SD card and hence memory can not be extended with Nexus 7 device. The device is built by ASUS and comes with a NVIDIA® Tegra® 3 quad-core processor. The device is thin, light and highly port able; it can fit into your pockets and hence a great deal when you are on travel. A greater alternative to iPad mini. It costs the half the price of iPad mini. The Nexus 7 can be at any time be updated to the latest Android OS directly on the device without any complex steps to upgrade unlike other android devices and hence you can exploit the latest android features
I bought a 32GB version of Nexus 7 because I wanted a bigger storage for storing movies, songs, photos etc. Price wise its just $50 more than a 16GB version.

When I unboxed and started Nexus 7, I transferred a 1080p HD video to it by connecting to the computer using USB cable (included in the Nexus 7 box). By default the screen rotation is locked and hence the device does not play the videos in the full/wide screen. Under settings,when I changed to 'Auto Rotate' then the video started playing full screen. The video quality is excellent. I was satisfied with video quality. The Google Play application which plays the videos stores the timeline where the video was left off and the app asks if user wants to start over or from previous location.

The touch response is great compared to the previous versions of android. Its pretty fast and its a nice experience with navigation. Under Google Play->Apps there some apps called 'Staff Picks for Tablets' which are made for Nexus 7. Google Now is available and gives you the information that you may require depending where you are and other parameters. I played couple of games and the performance is great and its a overall nice gaming experience with Nexus 7. Nexus 7 supports multiple users, the same tablet can be used by different people with different Gmail accounts.

The only minor issue I noticed with Nexus 7 is that the screen brightness flickers while you are watching the video or just browsing the web. Hope this gets fixed in the newer versions of android or Google gives a fix for this. The battery lasts for 8hours.

The Nexus 7 is priced at $199 for 16GB version and $249 for 32 GB version. It also comes with Cellular connectivity (Mobile Data). Google is selling with this price in United States, however may be to promote android market. Its price in other countries are higher, for example, the price of Nexus 7 in India Rs 19,999/-. May be Google needs to consider other tech savvy countries while pricing to greatly promote Android.

Overall, Nexus 7 is worth for its great price, you can enjoy  your favorite Google Play Contents in stunning display.


Tuesday, December 11, 2012

How to Identify & Anticipate Unknowns in Software Development Life Cycle Activities?

In a software development life cycle, there are set of activities involved including the requirements collections, transforming requirements to design and then coding and testing. In all these activities, people have to estimate for all these activities and project to the management that the total time taken to execute the project. In these process of estimating the software activities/tasks, there can be unknowns which are never estimated and there by impacting the project cost and schedule. Are there any ways to anticipate all the project unknowns? Unknowns can be implicit requirements, requirement misses, may be did not consider the impact of other sub-systems that work with the software in hand. In this article, I want to share the real time examples, challenges faced during software estimations and some of the best practices to minimize the chance of not anticipating unknowns.

Unknowns are everywhere, no matter what software development methodologies are being followed. May be, following a particular development methodology may reduce the risk of identifying unknowns late during the cycle of software development, however there are definitely the unknowns. This is true in our real-life also. In a day, you will have some unexpected things happening and anticipating them is a clever and smart idea. The same applies during software development process too.

1. Have expertise in the area of work/domain:
The experience and expertise plays a very important role here. If the software development team is not experienced enough, then the goal can be set towards achieving it. It’s all about thinking "big". We'll hear people saying that "this particular scenario was never thought about by any one". So, the question should be "Why is this happening?, Why nobody thought about this scenario"?, This can be solved by following rapid problem solving method and come up with action items and more importantly sustaining them all the time. This is how team can learn and adopt.

2. Do not just go by the past data: Most organizations maintain project/program metrics and this data is taken as input for the current project estimation. However, this may not lead to the accuracy since 'time' plays an important role. The metric data is somewhere in the past and may not apply in the current situations simply because many things might have changed including 'Customer mind'! Deficiently the data can be looked to get initial hint but should not be taken granted. Other parameters such as deployment scenarios, customers' way of perceiving the software etc would have changed.

3. Go Agile: As I mentioned in the beginning of this post, the software methodology also has some good news. The true fact is that no one can anticipate every unknown 100%. So always we can go by the rule, "Whatever is done is complete" and continuously try making it complete by showing/demoing to intended customers incrementally and this is what exactly agile methodology does. The Agile or Scrum helps discovering the missed out, implicit requirements early.

4. Discuss in group: The software estimation should not be a single person's effort. This may go wrong. Instead it should be collective opinion of all the team members involved in the development. You might know the saying "If all think alike, then nobody is thinking...”. So have team members/give chance for everybody to think in different aspects to project the scenarios. This is more like a "Brain storming" activity. This definitely helps.

5. Have customer requirements at Granular level: Customer requirements are always unclear at the first look and noisy. The more detailed and granular are the requirements, the more accurate estimate is possible. It makes sense to spend sufficient time detailing out the requirements. This activity helps all the developers understand the requirements nearly 100% and helps digging deep to find out the unknowns.

6. Avoid assumptions while finding out use cases: Assumptions are the major hurdles to handle. One cannot go with project execution with lot of assumptions. Basically assumptions are unknowns. Since we are on the goal of finding unknowns, remove all assumptions and get the clarity before proceeding further in the project execution.

To find out unknowns, there are no defined processes, the techniques explained above are just some thoughts that may help find the unknowns. In software development, the tackling unknowns are always a challenge. But finding unknowns as much as possible early in the software development life cycle leads to very less or no unknowns in the later cycle. In one of our examples, two people sitting together and writing down as much user scenarios as they can think of and reserving enough time for all team members to discuss helped. So, it depends on the nature of the software being developed, the team experience level, software methodology in use, past experience, etc. So, we can only learn from past and come with certain best practices and guidelines to deal with project unknowns.

If anyone has any best practice that helps find unknowns, please share...

Also see
Estimation of User Stories in Scrum Methodology
Related Posts Plugin for WordPress, Blogger...