One thing I have realized over the past few years is that creating an wonderful technical design - architecture is fun & important for a successful techie project but more important & tricky is to be able to present it to not so geeky management people and get them excited about it.
This is where all of us end up working & cursing powerpoints: the necessary evil. & unfortunately create it like Gates does instead of adopting the Jobs style. Read this blog to figure out who are you closer to atleast in presentation styles. after reading it, i certainly need to re-visit my presentations & think beyond bullets !!
Starting a Start-up - III (Software Infrastructure)
Continuing from my previous post on why we are seeing more and more start-ups these days, I mentioned the fact that lower entry barriers are also due to host of software infrastructure needs that can be addressed by open source or very economical but mature options.
So here is my list of softwares (mostly collaboration ones) that any start-up should consider:
PBX:
Let me know what kind os softwares you find useful in a startup.
So here is my list of softwares (mostly collaboration ones) that any start-up should consider:
PBX:
- asterisk: complete telephony solutions including conferencing, call queuing etc
- skype
- babble
- teleo of course is now part of microsoft empire (the kind of acquisitions they have made recently makes me excited about what their vista will have to offer
- instalcoll: sabeer bhatias latest brainchild
- writeboard & writely: more like collaborative writing offering "software as service"
- shinkuro & dropload
- loads of wiki engines are available but no wiki talk is complete without mentioning confluence & jotspot (2 of my favorites.... jot being more like a wiki farm)
Let me know what kind os softwares you find useful in a startup.
Indian Services Companies and Open Source
An interesting thought on Why Indian Services companies do not seem excited or interested in investing in open-source? IMO this is due to the following reasons:
- Being services companies, they have always been reacting to customer demands and industry trends, rather than proactively being thought leaders. (This is specifically about technology trends & thought leaders, rather than outsourcing leadership). This is also a reason why the services companies are not hugely succesful in Technology Consulting and traditionally focused just on Application Development.
- Indian services companies usually have no clue about product management, and creating innovative products. After-all how many Indian software products do you see in the market. The entrepreneurship skill and courage is usually not encouraged or cultivated in Indian services companies esp at the techonology developer level, and that skill is definitely required to be able to bring a product idea to life. If Indian services cannot come up with commercial products, why should we expect them to come up with open source ones
Design : Changing Definitions
When I started working, software design used to be a phase where all senior ppl in team worked on trying to define what needs to be coded. The idea of this phase was to create an artifact which detailed the design to such a level that it could be given to the developer, who in turn would just code as per the design and everything will be great.
This process & steps are exactly how things would happen in any other engineering domain like construction, electrical engineering with the architects and engineers deciding on the design & workers creating the product from the blueprint.
BUT what promoters of such design phase and distinction forgot was that software industry is different. Here we dont have dumb workers in software, infact this distinction is not necessary as all are knowledge workers. Thus came the problems of changing design or code being different than the design. Secondly what the above approach forgets is that software development is not yet a defined or a predictive process but rather an empirical one and thus cannot be approached in the same way.
What I feel is that design should be evolutionary rather than planned and thus should be taken as part of coding and refactoring phase done by the developers. I am not totally declaring the design as a dead and redundant phase.. but only trying to change its definition and scope. As a phase, there should be design in each iteration where we identify the contracts (UI, interfaces with external applications, Business Interfaces) with their Api and its behavior. Also we should have robust coding and architecture guidelines specific to the project besides the generic ones.
The contract - behavior information along with project specific development guidelines are sufficient for the developer to create a code-base meeting the needs and infact there are high chances that they will discover a new Api or a need to modify one to address the needs better. That is the time they should help evolve the design in consultation with the design authority rather than avoiding following the design which is the usual stance. Infact the design should be expected to evolve over time & iterations and the code-base expected to become more robust with refactorings during the iterations. Also the development guidelines should keep getting evolved.
Infact one of the better ways to ensure a living development guideline is having it on the wiki instead of word document :). Infact same holds true for the design also ... it should be an artifact which is available in developers IDE itself allowing him to evolve it rather than as a separate UML diagram :)
If this appears greek mumbo-jumbo .. some of my thoughts are better explained by Martin Fowler in his article - Is Design Dead?
This process & steps are exactly how things would happen in any other engineering domain like construction, electrical engineering with the architects and engineers deciding on the design & workers creating the product from the blueprint.
BUT what promoters of such design phase and distinction forgot was that software industry is different. Here we dont have dumb workers in software, infact this distinction is not necessary as all are knowledge workers. Thus came the problems of changing design or code being different than the design. Secondly what the above approach forgets is that software development is not yet a defined or a predictive process but rather an empirical one and thus cannot be approached in the same way.
What I feel is that design should be evolutionary rather than planned and thus should be taken as part of coding and refactoring phase done by the developers. I am not totally declaring the design as a dead and redundant phase.. but only trying to change its definition and scope. As a phase, there should be design in each iteration where we identify the contracts (UI, interfaces with external applications, Business Interfaces) with their Api and its behavior. Also we should have robust coding and architecture guidelines specific to the project besides the generic ones.
The contract - behavior information along with project specific development guidelines are sufficient for the developer to create a code-base meeting the needs and infact there are high chances that they will discover a new Api or a need to modify one to address the needs better. That is the time they should help evolve the design in consultation with the design authority rather than avoiding following the design which is the usual stance. Infact the design should be expected to evolve over time & iterations and the code-base expected to become more robust with refactorings during the iterations. Also the development guidelines should keep getting evolved.
Infact one of the better ways to ensure a living development guideline is having it on the wiki instead of word document :). Infact same holds true for the design also ... it should be an artifact which is available in developers IDE itself allowing him to evolve it rather than as a separate UML diagram :)
If this appears greek mumbo-jumbo .. some of my thoughts are better explained by Martin Fowler in his article - Is Design Dead?
Software Entrepreneurs
Jotspot's Joe Kraus blogs about why everyone is so excited about being an Entrepreneur these days and why do we see so many new Start-ups. So my blogging series about Starting an start-up in India seems to be very nicely timed. Sometime I plan to blog about the Infrastructure Software that is now available Open Source and can form the basis of any Start-up
The CIO visionary
after reading his interview i feel J.P. Rangaswamy - the CIO of DrKW must be one the very few people at such position who actually understand the disruptive force of open source and actually adopts it to his organizations advantage. The interview is littered with quotable gems:
"Now no-one gets fired for using Linux or for having Apache or using Tomcat. But this has happened over a relatively short space of time and we have been aggressive in recognising that trend and becoming contributors to the open source movement rather than consumers"
"Much of what I see sent offshore is commoditised stuff where the value should have been in coming together as an industry and saying we'll build utilities that all banks and financial houses can use. The concept of some of our commodity activities being considered differentiating just is not sustainable any more"Definitely worth a read.
"The open source movement is where we're heading."
Indian Services Companies and Agility
With most of the software world agreeing and adopting Agile as among the better and more collaborative ways of doing software development, it is amazing to see the indian services companies are still far away from adopting it widely. Infact there are just a handful of indian services companies who claim to have development methodologies in agile fashion.
I think it is just a matter of time, when the clients will start demanding Agile as the way to do development and it is only then that the services companies will react.
Fortunately, most of the new start-ups and indian companies focussing on Products use it quite agressively and successfully.
I think it is just a matter of time, when the clients will start demanding Agile as the way to do development and it is only then that the services companies will react.
Fortunately, most of the new start-ups and indian companies focussing on Products use it quite agressively and successfully.
Starting a Start-up - II
Finding the funds for starting on the path of turning ones ideas into business reality is one of the most enlightening and tricky step in the start-up journey. Few places one can get attention of the few venture capitalists in india are TiE and venturewoods also in news for their indian version of Band of Angels
If you are aware of more such forums, do let me know and i will update the blog
If you are aware of more such forums, do let me know and i will update the blog
Starting a Start-up - I
If one has an interesting business idea and plans to startup a new independent operation in India, here are a few ideas one can use:
Been there .. done that
It helps to listen and take advice from people who have started out on their own over the last couple of years. Here's a partial list of such admirable people who also haapen to maintain their own blogs: (If you know of more such people, let me know and i will update this list)
It also helps to be an active member of Entrepreneur group like TiE which in my opinion is lot more useful to start-ups and upcoming entrepreneurs than say Nasscom
The other aspects i plan to cover in my future blogs are:
ps: hopefully i will keep building the list as and when things come to my mind.
Been there .. done that
It helps to listen and take advice from people who have started out on their own over the last couple of years. Here's a partial list of such admirable people who also haapen to maintain their own blogs: (If you know of more such people, let me know and i will update this list)
It also helps to be an active member of Entrepreneur group like TiE which in my opinion is lot more useful to start-ups and upcoming entrepreneurs than say Nasscom
The other aspects i plan to cover in my future blogs are:
- Money
- People
- Space
- Network
- Communications
- Corporate Portal
- Project Management
- Sales
ps: hopefully i will keep building the list as and when things come to my mind.
Subscribe to:
Posts (Atom)