Choosing what we need is the key

Web development is changing rapidly, it has become difficult to catch up with the latest technologies that pops out in the market everyday.  Re-usable components or plugins that are emerging has great in demand. JavaScript was just a client-side script, which was used to show, as simple messages as “Please fill required information to proceed.” All of a sudden it has a new face after a new cross-platform library JQuery emerged.

Think about those “Not possible days”, rewind your “Hit the road-block” moments. Now with JQuery and its plug-in components we have to think twice before repeating your old saying to your team “We cannot do this due to the technical limitations, however, we can work around this issue.”

Again, think twice before we say this to anyone. There might be a plug-in component available on web which does solve these issues. There should be a freely distributed library that can fit to your app.

Well, there are always two sides to a coin, there are always advantages over disadvantages, and there are pros and cons of everything we come across. When we are racing a car, we might miss those magical moments, and the fragrance of cool breeze that we enjoy.. when riding a bicycle. That doesn’t mean riding a bicycle is always best, racing a car is always not either. We have to decide what is best? What the situation demands? What constraints we have? Choosing what we want is really tricky sometimes.

The same way, there are many plug-in components available in market, many libraries are available which makes programmers life easy. They can make your application scalable, robust, but by choosing the right framework, the right plug-in is the key. This is being a design decision, it should be decided with in-depth knowledge on various frameworks. All comes with advantages over disadvantages, we just need to focus on the “limitations”.

Choosing what we want is really complex.

Ok, is choosing what we want is the key? Deciding what we need is the key?

“Yes, it is”.

It is the key for any successful project. It is one of the basic principle, keeping as simple as it can be is one of basic principles of any software architecture.

How can we do this? How to choose what we want?

We have to analyze the factors that demands particular feature, the scope of the project, the limitations that we have technically and physically. It is not just by thinking “we can do it”, but we should also think “why we need it”.

Sometimes we just go by clients words, I want a search feature in our application, which just works as same as “Google Search”.

We should ask these questions to ourselves before the agreement.

  • Do you think we can implement a search like “Google Search” in our application?
  • Do you think it is possible in the timeline we have?
  • Do you think we can do that in the budget we have got?
  • Do you think it is feasible, with a year old developers we have in our team?

Some of the answers to above questions may be “Yes”, but we should also focus on what the client is expecting over “what client really needs”.  We can find this by asking simple questions like this.

    • Do you guys really need “Google Search” in a small Customer Relation Application?
    • Are you clear on the requirements and know what you want?
    • Are you clear on the level of efforts required to implement such things?

These questions might help in understanding what your client needs. Then we would start thinking in the lines of “what the client wants”, and how to fill that gap by designing a technical solution that satisfies all possible conditions.

It really doesn’t make any sense, when we have bought an Airplane with powerful engine, and later we decided to cut the wings and tail, do some changes to its look and feel, and started using that as a car. Of course, it’s a luxurious car, a powerful car, but not an Airplane as it cannot fly anymore.

So it really matters, what situation demands and choosing what we need is the key for any successful project.