When students graduate with a degree in Computers from colleges in India, they get credited for the college brand, may be class position, campus placement but seldom for what they did there. Given the outdated syllabus, the incompetent faculty, the way the exams are conducted and evaluated, the employers need to look at different metrics to find employable individuals. What differentiates a bright student from a dull one, a hardworking student from a lazy one, an organized student from a clumsy one, a sincere person from a dishonest one? What has the student understood and succeeded in applying into real life? How has the student utilized her stay in campus? The more I think about these relevant questions, all the measures that point at the competency of the students are all reflected only in the projects that they undertake.
In spite of their importance, most student projects are shelved after graduation. Isn’t this most disheartening? In this article, I analyze the causes and propose solutions. There are three things that are required for a product to be successful.
|1. Innovation||2. Value||3. Completion|
Innovation: A cool idea does not directly translate to innovation. Thinking about it first also does not win the race. Having a solution for a problem also does not complete the word innovation. If I give an engineering problem to a bunch of competent engineers who have never known about the problem before, after a little bit of thinking and analysis, each of them will arrive at a solution which is more or less similar. That is how we engineers are trained. That is what makes most software patents redundant. To add to this sometimes the students think that their idea is innovative because they hold on to the word “their idea” emotionally more than objectively analyzing it. Sometimes they are not aware of the state of the arts as technology is moving forward at a very rapid pace. So what exactly is innovation? Let’s take for example when Google first came out with their search engine, they were neither the first nor the market leaders. But they had an algorithm at the core of their innovation that provided more accurate solutions. This probably might not have been the best algorithm but it was good enough to give them enough lead time to establish themselves as the market leaders while other smart people were taking a shot at designing a better one. When Apple came out with their first iPod, there were many MP3 players already out in the market. But at the core of their innovation was a scroll dial, which quickly could allow the user to navigate through a huge list of songs that the bigger capacity disks gave birth to. Competitors could not design equivalent hardware quick enough. So your innovation should place a barrier of entry to any potential competitor to give you enough lead time to complete your task and get established in the market.
Value: Your project should add value to somebody’s life. And those people whose life becomes better are your Market. The fact that you are giving out your product free does not make people use it. But if it really adds value, people will use it even if they have to pay for it and if it really good, they will even pay a premium to use it. So the questions on whether your project is open source or closed source, your business model, whether you are looking for immediate monetary gain or establish yourself or your brand are all of philosophical significance. Gates and Torvalds both played the game of OS, one made huge money but another added to the way people learnt and built software, but both provided value for end users. Google designed Android with a free and open architecture while Apple tied down everything to their belt but both phones provide value to end users. Not all products are meant to be used by everybody. But a small pocket of people in the present tense have to find value in your work. They are your Market and they should not be fictional. It helps if your project adds value to your own life and that of your friends. That will make sure that you will have some early adopters and help you to sustain.
Completeness: 99% of projects that I have seen fail as they neglect this criterion. If you have gotten the first two steps right and have worked very hard to get your project working, you should reap the full benefits that you are rightfully entitled to. Completeness means a lot of things. Any user should be able to run your system. The interface should be clean, robust and intuitive. It should not require your presence to run every time. Sufficient testing, documentation has to be done for this and feedback collected and key pain points removed. Unless your project is very small, you will need other programmers to add to your code and design. So you have to pay attention to design and code quality. If your design is well done, you will be able to scale, add features and evolve quickly. If you do not pay attention to your code and comments, other programmers will not be able to add to it fast enough and will be breaking things left right and center as they add new features. Develop a habit of getting your code reviewed and place it open for other programmers to criticize rather than hide it as your dirty linen. Modern code management systems allow you to take backups, collaborate, version; parallelize development and all such things provided you follow procedures. Your users should be able to find your product or service anytime. So you have to host it somewhere on the Internet. With the current evolution of technology if you have something worth using, the market will find you and you do not have to spend excessively on Marketing and advertisement as in previous ages. You should have a support plan, to communicate with the users, a plan to collect feedback, deliver updates, troubleshoot and fix problems, educate users and so on. If you do not host your project on the Internet, your audience will be limited to your friend circle and the relevance will quickly die as technology leaps forward. And remember not everybody will use your project in the same way. So you have to provide enough configuration features to allow each user to customize and tailor it to his needs. If you put in reasonable thought and commitment towards this objective then you are not limited by your status and limitations. Venture capital, team, Market, everything will find you. So if you have spent a significant portion of your college life on your project to make a difference, you have to reap the full benefits of your efforts and not allow your code to die on some shelf. That is if you respect yourself.