ifacethoughts

Reuse Requires Research

Software development is not only about programming today. This is not meant to degrade programming, but reusing already available software can help provide higher benefits to the customer. This software ranges from low-level libraries to customizable Content Management Systems. At the Gartner Application Development Summit, analyst Matt Hoyle said:

The future of application development is not about programmer productivity, but in assembling functionality from components.

Many say that open source is one of the reasons this is happening. I think open source is the enabler. One of the key reasons is componentization software. As software programming has evolved, ability to isolate functionalities have enhanced, and by using intended design these functionalities have been made generic so that they can be used in multiple scenarios. The notion of assembling functionality is very tempting, but it can go awfully wrong if wrong softwares are used.

The disadvantage of assembling is that now the developer has to know the software to be used. He/she has to be keep a tab on its usage, development and even licensing. That is why reusing software requires research. Goal of the research is to lay hands on the best software for your requirements, which might vary per project. Here are my thoughts on how this can be approached.

Continuous Global Research

Software development has become more of a science today, where the developments are happening on multiple fronts in multiple places. Being unaware of these developments can quickly push you back into the has been generation. These developments are significant for reasons other than that they are trendy. They represent contemporary solutions to contemporary problems. As software is being applied to more and varied domains, new problems have started coming up. These problems might not have existed before, or might disappear tomorrow. But they are important today and should be addressed, which is what the current developments do.

Another reason for the research is that there are too many options available for one task. Checkout the CMS space or the AJAX toolkit shootout or the various GUI toolkits. Research can be aimed at identifying the pros and cons of these possibilities.

However, research can be terribly expensive. It can eat up most of your time leaving less of it for your main work, for which you are doing the research. Here are some of the tools I think can be useful:

Do You Read Blogs?

Blogs represent individuals, at least most of them. They contain opinions, thoughts and sometimes extreme biases which come out as reviews, suggestions or comparisons. In today’s world of participatory open source, thoughts by individuals matter a lot. Some of them are users, some developers and some competitors. But each of them provide insights that you alone would not be able to come up with.

Product blogs give you a good inside view of the scene. One good example is the blog on Internet Explorer. I don’t think there is any other source which has information as rich as there. Blogs by developers provide the real meat about the work that can help you choose whether you want to use the product or not. There is nothing better than Yahoo UI Blog to keep a track of the library. Blogs are so effective because they contain discussions, between the developers, users and developers and the executives. You can follow a discussion thread on a subject through trackbacks, pingbacks and comments to get the complete picture.

Needless to say, blogs are also the most convenient to keep track of through feeds and subscriptions.

Newsgroups and Usergroups

Groups have been here for a long time and they hold a rich archive of information. Join these groups. I have seen them effective in programming language discussions and usability techniques. The new form of these groups are forums, where you can ask and respond and solve.

Do You Experiment?

There is no way of forming your opinion or judgement about a tool that you come across without trying it out yourself. Experiment with it yourself and get a handle on what it does best and what it doesn’t. You can then either choose to store it in your archives or put it to use immediately or throw it away.

This can consume time, but this will save a much more important and expensive time later.

Document It

Whatever you find out or decide, document it somewhere. The document has to be effective for you, there are not formal requirements for it. Put it in one line, in text editors, in your journals or blogs or in your notes application. But put it someplace where you can refer back later.

Whenever I have mentioned documentation, most of the times I have received back the flack of being too time consuming to write Word documents or formatting them. Purpose of documentation is to store the knowledge, because human memory can be fickle. It depends on the person and is subjective. But documentation does not mean creating an extensive 100 page booklet.

This global research should be continuous and should go parallel to your work.

Research per Project

Once you archive your judgements through your global research, dedicate some time to using it in a project. If your documentation is effective, you can efficiently retrieve back the information and use it in your project. Purpose of the global research is to assimilate, purpose of project research is to eliminate the others and identify the right tools for you.

Why is this research important? One is because it can help your selection of tools can be requirements-driven rather than feature-driven. And secondly, it can help you justify your technical decisions to whoever is asking for it.

Purposeful Research to avoid Difficulties

The difficulty here is that the research can get so extensive and exhaustive that it becomes impossible to control it. This is when it can get disastrous and ruin the entire project. It is important to drive the research by purpose, both in scope and subject. The research can drive you to a destination only when you set it. This probably is the biggest difference between the global research and the project research.

How Do You Do It?

I have trying to follow this for sometime now and have seen the benefits and also burnt my hands sometimes. Of course these are entirely my thoughts and you can have your own technique. What do you do? It can help me to improve mine.

Discussion [Participate or Link]

  1. Anshul said:

    Nice layout. I went to iface and then found out you had moved. Nice work.

  2. Abhijit Nadgouda said:

    Thanks Anshul.

  3. iface thoughts » Blog Archive » Reinventing The Wheel said:

    [...] Having said that, a geek can probably keep reinventing as a hobby, or as a learning exercise. However, justification is a must for any formal product development, and I think research and knowledge of existing software can help a lot. [...]

  4. Boxed CMS on iface thoughts said:

    [...] This might not seem so important for simple web applications, but anything more than a blog or just a product catalog will require these. To be able to make sure that the right CMS is being used a couple of things have to be done. First, find the requirements and only then select the CMS. Second, there is a jungle out there for CMSs, so do some research before you select some. [...]

Say your thought!

Who are you?

If you want to use HTML you can use these tags: <a>, <em>, <strong>, <abbr>, <code>, <blockquote>. Closing the tags will be appreciated as this site uses valid XHTML.

This is the weblog of Abhijit Nadgouda where he writes down his thoughts on software development and related topics. You are invited to subscribe to the feed to stay updated or check out more subscription options. Or you can choose to browse by one of the topics.