Recently, I got a Job to build an ERP Application (More like Accounting Package with CRM). I started planning for the Application. I had some experience with Tally.ERP 9 and knew a bit about Accounting too. Once again I chose Wordpress Platform for the application development, as I was more comfortable with it. Application was to have multiple advanced features along with some of smart automated data sensing and processing, and selective data push (Semi-Automated) to Tally for Accounting Purpose. The application was to run in a LAN Environment and was connected with the Customer's Website to retrieve Customer Order submitted on the website (Customized Shopping Cart) for further processing.
I could develop fast in Wordpress, I was familiar with the system and environment. But due to multiple distractions, and tedious job (I hadn't anticipated lengthy coding and timing involved), the project had to be scrapped by the customer. The customer was gracious enough to forgive me, but I couldn't forgive myself for failing on a project. He instead asked me to compensate him by optimizing his business processes and give him better solutions.
Continuing with the thought: Though the ERP project was scrapped, I have decided to build another one on the learning from my past experience, and failures. An Accounting System which will be easy to learn, easy to use and can be a good cost-effective solution for SMBs.
What I learnt from my Past Failure:
- If you take too long to release a product, you will lose control over it and your interest in developing it will diminish. Release as soon as possible.
- Project Management is very Important. I have no Project Management or Time Management experience, and I wish to learn it and implement in my future projects to keep it on time.
- Project Cost and Time Estimation. I never did it. Simply, I never knew and gave it much thought, and I am regretting now.
- Project Scope, Definition, Planning. Heck, I never did any documentation. All I did was back on the envelop(Not literally. Adhoc planning on loose paper sheets) drawing, doodling, and some scribbling. Proper Project Definition, and Planning is very important, you can never succeed without proper planning and documentation (except for some very small projects).
What to do? I was always hungry. I was always short on fund. I was always involved in small projects, and always under super tight schedule to deliver those (3 month's work in one month). I never got enough time to plan for things.
Thanks to my intuition, my ability to visualize what I am going to create even before I could create, and thanks to Dr. Hrishikesh Ingle's influence on me for lateral thinking I have survived this long.
Still, I had failed! I failed for so many reasons, but I am upbeat about it. Because, I am learning my lessons here. I am getting opportunity to learn from my failures and another chance to getting my acts together. I am excited, I have so much to learn and put into practice, and most importantly, discipline myself, which my father and my teachers were unable to.
Weird huh? Happy about disciplining myself? Actually I am. As I know now what can I achieve through discipline. I wish, I weren't a brute, Only If I had paid heed to my father's advice, I would have been able to enjoy life, instead of poring over books late at night. But hey! This is life! You fall, you get up, learn from your mistakes, then fall again, learn to walk... learn to run... and if you are upto it... perhaps you can even fly. And I wish I could fly!
Coming back to my decision of Developing an Accounting System with CRM for SMBs. My friends and my business Partner (My Brother) asked me, why do I need to develop another Accounting System when the market is already saturated with so many Applications? Even I asked myself, whether undertaking such a big project is feasible? Would I be able to devout as much time as It may require? Why cannot I use any existing Open Source Accounting Application? There were and still there are so many questions I need to answer before I can commit to this big project. One of the serious question though is selection of technology and methodology.
Since I cannot afford to hire any experienced programmer to do the job, and I do not have enough patience to teach a fresher and then see him vanish with my source code. I had thought about making this an Open Source, but then decided against it, as I wish to let the application mature before turning it open-source for further marination/seasoning. Plus, I wish to make it a commercial venture, though I am yet to find any VC, and like I said, my project planning skill is zero for making any good impressionable presentation to VCs.
So, I have only one option left - Agile Methodology. I build it quick, release it, and let the market capture it. If need be, do some marketing push. Initially, I will make it free for anyone to use and let the product develop itself(We will be coding) from the user's need/perspective/input. I have given myself Just three months to do the initial release.
But, what about technology? Which one should I use? My plan is to make this a SAAS Application (Mobile Friendly). I do not have enough money to pay to Microsoft, so .Net is out. Never Wanted to learn more JAVA, had enough in my classroom. No more Wordpress. ROR and Django are much better option.
What do I hear??? Meteor/AngularJS? Yeah, I had always wanted to learn and try Node.js.
Or, Should I stick to PHP - Zend/CakePHP/Symfony*/lavarel? Twitter Bootstrap or Foundation Framework??? What about Google App Engine? MySQL or PostgreSQL or MongoDB?
So much to choose from, no wonder I am getting a headache just by keeping track of all these. Though, I would really like to try ROR and Django, I would also like to cut on the learning curve by going along with PHP. Like I had mentioned earlier, This time, I will plan ahead before jumping right into coding and designing. I am going to spend more time on Proper Planning and Documentation, do some solid feasibility study, defining Minimum requirement for launching my Application, and create milestone/timeline for further development. This time, I would do it right.
But what would I do about the combination of technology??? I am always willing to learn. I would again go through learning process to get my skills right. If I choose PHP, I would definitely like to go with Symfony as I have heard so much about it. However, in order to use it I must learn more on PHP OOP programming. This time I would also involve my brother cum my business partner to help me in every aspect of this application. He is learning PHP right now, furiously typing on his keyboard, soaking all the fun that comes with Programming and the feeling of creating something new.
Innovation is the key, but I believe in 'First Replicate, then Innovate', or 'First Repeat, then Defeat'. I need to build my project reports, need to find the best technology combination, need to get my act right, need to discipline myself, need to find a good server, build application, find testing customer, build some more, find paying customer. Uh! So much to do and so little time. Wish my 10 months old daughter could code? Nah! I would definitely inspire her, not push her. Her mum must learn programming though, She had been helping me some graphics work and CSS. Wish I knew how to turn her away from stupid Indian Serials and get her to sit on another terminal beside me and code furiously.