I work for a company that has traditionally been a "consultant" to oil and gas, brokerages etc. A highly paid consultant selling Python implementations of scientific advice. The company, all of a sudden, had a dream - a platform that will dominate the scientific world (of Python), an app that will allow third party developers to build addons geared towards scientists and people without programming experience, a "combo" of power, flexibility and freedom that will rule the scientific and business world, deliver video training, ease of sharing scripts, be a data analytics platform etc. I have to admit, I am naturally skeptical of the "Mother of all" platforms to begin with. Bigger companies have tried and failed. But, history aside, here is what I have learned so far from this effort to dominate the world. 1. Do decide what your goals REALLY are and set out to implement them, one by one. Open ended stuff like "a training platform with data analytics with ease of use for non programmers plus the availability of low level power access to power programmers" is a nice sales pitch but the devil is in the details. 2. Do work on one major feature at a time, make sure it is solid before you move on. Nothing paints an image of chaos more than unfinished stuff cobbled together where the user is greeted with multiple bugs and half-baked "features" that work only sometimes. People lose confidence very quickly in this kind of an arrangement. 3. Think about things long-term before you set out to code them AND release them. For example, if you have not figured out a proper way to update your application then do not release it to the public. There will be bugs and there will be updates. But when the update mechanism has not been thought through, well... 4. Bugs will always be there to fix, however, there are bugs that one can live with and bugs that say "go back to the drawing board". The former are OK, the latter are draining to the morale of the team and to the confidence of the users. 5. Do try to pay for your "dream" yourself. If this project is your dream project, own it and pay for it. Nothing worse than selling the half-baked goods to a major player because you (secretly) want them to fund your project. When someone pays for something, they (think, rightfully) that they own it. With outside ownership the dream can and will become tainted and slanted towards the highest bidder's desires. If it is truly your dream, do it yourself. 6. Agile development does NOT mean chaos, utter chaos and people not talking to each other. It does NOT mean no documentation, poor process and dozens of serious bugs in production. 7. Do hire yourself a Q&A team! If you will be charging $199/license and doing site licenses, do try and at least act like you care. Testing, Q&A says "I care"! Nothing worse than releasing an update to your app to only find out that it "kinda, sorta" works on two out of your three supported platforms. 8. Having "brain power" in house (PhDs and academic qualifications) does NOT mean they will know how to develop an off-the-shelf product! (see item 9). 9. Hire yourself a project manager (or two!). Having a product developed with multiple lines of development (large features, varied clientele), teams in multiple geographic locations and times zones in the world - all these things need to be managed BY a professional, not by a developer who at the same time has his fingers in the release process, the app code and the requirements gathering. 10. Finally: it takes a major mindset shift to go from being a consultant to making a product in house. Two very different things! Most high level scientific software consultancies end up with high-level working prototypes, sometimes more detailed working software and less often very high performance, devil-is-in-the-detail solutions. By nature, a lot of scientific consulting includes discovery (or "hacking") and prototyping. Once a basic model is discovered a solution is produced and so long as it works, people are happy. Selling someone a (general purpose) program that they will run at home or in the office, however, is a completely different beast. People will get stuck on the details and will demand better and more. Beware of your attitude!
Full Post
No comments:
Post a Comment