Wednesday, January 8, 2014

Seven Mistakes by a Developer....

Developer Thinks i am always Right !!!


In a IT Industry and more specifically in a Development Center, we do have different varieties of job responsibilities, Like Development, Testing, Project Management, Programme Management etc.Job responsibility which gets highest attention is Development and set of people who do it are called as "Software Developers". This is since these are the set of people who actually create the software from scratch or enhance an existing software to make it usable to the real world. This is considered to be one of the most toughest part of software development and hence given highest weight-age.
"But taking the importance given in a wrong way is not the Right Attitude".

Lets discuss on some of the most common mistakes a Developer does.

1.Failed to understand the requirement

Most of the times developers do go through the requirement but actually do not get it right in the first place but they do pretend to have to got it right and start the development, which leads to real disasters at the end of the project when the releases are being done to QA and things actually do not work they are expected to and quite a few times leading to project delays, and release plan has to be re-worked which eventually results in a very high cost to company and many a times credibility of the organisation.
My Advice,
Get the Requirement Right to Develop the Right Product !!!

2.Didn't follow the coding guidelines

Coding Guidelines, the foundation of a True Developer !!!
If i have to just develop the product without guidelines, then i would hire a "Coder" who does not takes care of ifs and buts in the code and just makes it run somehow, without any guarantee for handling errors and exceptions. But this is is not expected from Developer, he is the one who takes care of all the scenarios and makes the product really Solid to withstand most of the Exceptions and Errors.Mishandling of this leads to customer issues and unnecessary cost for the company to resolve this issues, which are finally nothing but basic guidelines, to name a few of them, Memory Leak, Application Crash, Buffer Overflow, Stack corruption etc. My Advice.
Coding Guidelines should be in Developers Blood, to make sure your Product does what it Should !!!

3.Zero unit testing

Most of the Developers i have seen in my career, are really reluctant to do the testing, they do always consider this is Tester's Job. Job of a Tester is to do a Functional Testing and not Unit Testing. A Developer should be doing white box Testing of the code, like testing the true and false condition both by providing required parameters, checking boundary conditions, Testing the basic functionality of the functions, overall a basic feature testing. Not doing this gives an opportunity to the Testers to identify the problems and sometimes it bypasses even QA and comes a customer issue, since there are certain conditions which goes untouched. My Advice
Doing Unit Testing is as important as Coding !!!

4.Ignored the Code Reviews 

Code Reviews are the ones, which does brings in multiple thoughts, variety of thoughts and Criticism.Code Reviews have a huge advantage, to list a few of them,
  • It makes you realize you are not correct always.
  • Things could be done in a better way than what you have done.
  • You eventually do a knowledge transfer to other team members.
  • There is no more a Single Point of Failure.
Code Reviews should be taken up very seriously and the comments should always be welcomed and make sure that those are implemented and not just documented in the code review document.In my career, we were able to reduce the code to a great extent by bringing in thoughts and good programming practice.
Releasing a product without code review, is like Printing a document without a Preview !!!

5.Poor or in-scalable design

Good Design is considered as the Heart of the Software.
Design is the which actually makes sure how robust and scalable the product is, how much better it can perform in a stressed scenario. normally Developers to impress the product managers do develop something quickly which does not have good design and many a times they continue this same base further to the real product. Many Developers do think, "we will fix issues when it comes", "how much can we think", we also have limitations". I do have real experience in my life, due to poor design, the same component was re-written thrice the main reason being performance, and i was the third one, not overrating my self, but after i designed and developed it, it was actually done and satisfied all customer requirements. This Poor design has caused the organisation 2 years of development with multiple developers, Testers, Managers, Tech support working on this, can you imagine amount of money the company would have lost, and to be very frank nothing comes free in this world, finally it does impacts performance reviews of the BU and quite a few times your own salary and bonuses. 
Make Good Design, to make sure it does not gets Re-Assigned !!!


6.Poor Estimation

This is one of the biggest disasters which i have always seen in my career, Whenever a developer is being asked for an estimation, he would just pop-up "It should be fine in 2 days, or Max 3 days". Quite a few times this 2 or 3 days has ended up in Weeks, and sometimes even more, with finally Manager doing a regular follow up and updating to other StakeHolders to cover up the team by explaining this is a real Technical Issue, we never anticipated this, frankly speaking he is doing his job. But how should developer given an estimation, first of all do not give an estimation for something which you do not know what it is, take your time understand the requirement, clarify your doubts, if you are put under pressure to give estimation just raise a Flag, i am cannot give an exact estimation based on this parameters. It is always better not to give estimation rather than give a Wrong estimation.Apart from think about other aspects apart from coding, like Unit Testing, Code Review, Documentation. Always keep some buffer, since issues might crop-up leading to delays.
Good Estimation is a Summation of all the activities you plan to do !!!

7.Improper communication

This is a very normal behavior of quite a few Developers that i have seen and sometimes there is no communication. Developers say, "I felt it is right to implement in this way". Developers are given powers to take the decisions to make the product better and come up with the new ideas. but any of these things should be communicated to appropriate StakeHolders, before implementing. since what developer feels is correct might not be correct from customers perspective which is best known to a Product Manager.
Apart from this communication with QA should be very clear and explain the feature properly, since they are the ones who actually give the Quality Certificate to the product, any discrepancy could lead to incorrect product in the market. Since not each and everything can be documented, there is certain amount of information which can be availed only from Developer.
Do Give a Good Thought, but just don't give it a Shot !!!

 Overall i want to say to all the Developers out there
Agreed you are Great, 
You Rock, 
But For what should be your Creed,
Don't Give us a Shock !!!

Thursday, January 2, 2014

Technology The Future Trends.....

The History 

Trends in Technology have always been changing depending on the business needs and end-user ease of usage. If we observe Closely Early 80s was the rise of Personal Computing where we had strong foundation companies like Apple and Microsoft being the first movers who had catch the peoples mind. 90s was the peak of Personal Computing and the beginning of the Web Computing. In Mid 90s there were so many companies got established in the Web Space. Early 2000s was still the peak of Personal computing with Web computing taking the lead. Mid 2000s to till date has been rise of Cloud computing and smartphone & Tablet era.The Task which we used to do via PC now its possible to do via a SmartPhone or a Tablet. So the necessity of having PC has been reduced over the period of time.
What I want to convey is, Technology keeps evolving and keeps changing over period of time, but this current decade which has began since 2011 would be fastest one, in which technology will take different forms very quickly.

What Next ???

With the growth of the business demands day by day, more smart devices are required to do the job in a smarter way. Today a normal person goes to office, opens up the desktop and opens MailBox, Office Applications, and some specific corporate applications which helps him to accomplish his task.
This is good, but this has its own disadvantage of having PC being stationed in office, need people who actually knows to use those tools and overall its interactive to a limit i.e interaction is limited to mouse clicks.
Future would be a person working from anywhere and in a more interactive way, where he should be concentrating on what he needs and not on how he it could be done. In coming days, Gestures, Natural language processing would reach a different level where people would work in more and more interactive way. Overall i want to convey that devices we would present to you exactly what information you need rather than you actually searching for them in PC or Web.
I would call this era, as Era of Smart Computing, Where more and more smart devices will interact with people doing most of the job people do today and people concentrating more and more only on what needs to be done. This would give a great boom to businesses and personal computing.
Lets take some examples of how future will be reshaped with these technologies
Smart Glass, This is going to be one of the biggest thing in near future, Smart glass would be intelligent glass which could load 3D Maps for you, project your phones data onto it, Load your profile from web and do almost everything which you do today with PC and more than that since it would be more interactive.
To give an example of its use case, lets say four of your team members are travelling in a car, Every car in future will have this smart glass integrated in it, on which you can actually project your presentation or anything else, so no need to open a PC or Tablet, you can project this data from your phone or directly load the data from the cloud. In future you would find it almost everywhere, like in Cars,Shopping mall, Home, Office, Bus, etc. Like today people do ask for Wi-Fi station when they enter any of this places tomorrow they will be asking for a Smart Glass.
Next Big thing would be, Smart Sport products, Today we do play BasketBall, Cricket etc, and then to analyze how we played the game we do take opinion of our colleagues or seniors etc, or if you have a system which captures all this, then you go to control room and check in the PC how you played it.
Future wont be like this, You will get Smart products like Smart Basketball, which would be fully integrated with technology, you just keep playing your game and the data would be transferred to your smartphone, which you can analyze later. So People would be asking in future, whether its a normal BasketBall or Smart BasketBall. And dont get surprised this is already avaialble in market, Apple has already developed this.
http://store.apple.com/us/product/HD748LL/A/infomotion-94fifty-bluetooth-basketball

So this is what i want to say, we will be surrounded by more & more smart and interconnected devices.
Overall if create a list of existing and upcoming devices it will be
  1. Smart Phone
  2. Smart TV
  3. Smart Watch
  4. Smart Meters
  5. Smart Grid
  6. Smart Fridge
  7. Smart BasketBall
  8. Smart Cities
  9. Smart Car
  10. Smart Glass
and the list goes on.....

Another field which will grow parallelly is the Big Data Analytics. Since so much of data will be generated by this devices, this data needs to be analyzed and generated reports which will help in future decision making.
Please refer http://shailesh91082.blogspot.in/2013/12/big-data.html for details.


Opportunity

These change in Technology opens up new doors, overall there will be 
  1. Companies which will develop devices.
  2. Companies which will develop embedded softwares & OS.
  3. Companies doing Big Data Analytics
  4. Companies providing services & solutions based on this technologies.


Glimpse of what i want to explain



Overall I See, its a great opportunity for Embedded Developers And Developers & Analyzers of Big Data.