Rad SBS - simple store, site and organizer
My old abandoned project, allows to create simple site, store and be used as an organizer.
My biggest mistake was that I tried to finish two projects at once - Rad SBS and the Web Framework that powers it, it's called Rad (inspired by Ruby on Rails, but more modular and object oriented).
When I started it about year and half ago I'll planed to build simple solution that should be used as a Site and Collaboration for Small Businesses (mix of Alfresco, Jive ClearSpace, Backpack and WordPress).
I already had some experience with delivering such kind of projects (about 5 years of working in business consulting) and thought I can do something similar alone. But sadly it turns out that I'm not a genius, and can't do it alone in a reasonable amount of time.
So, when I recognized it, I was forced to throw out everything (about 60% of features) except the most fundamental features. A lots of them where already half-done, so it wasn't an easy decision.
Below are some of conclusions that may be useful if you would like to finish the project fast:
- Lots of your code will be thrown out: over time sometimes it will happens that your previous decision and implementation was wrong and you should throw out it.
- It's good when you throw out your code: it's a hard decision to throw out wrong code you already spend days working on, but keeping it is even worse - it will be a ballast pulling down agility of your project and taking precious place in your memory (sadly it doesn't doubles every 3 years as the PC memory).
- You should keep the project small: the human memory is limited, there's a point in size, by exceeding it the project became unmanageable. And, there's also another reason - with small size you can achieve a high agility and adopt it very fast and easy (especially important if you are building something new and has to do a lots of attempts and prototyping).
- You can do only very specific solutions (don't try to solve general and big problems): because the project size is small (see previous item) you can build only very small and simple stuff. And there's also another reason - something complicated requires 3-5 years, and the IT world is very fast, at the time you'll finish the project it will be an outdated pice of garbage.
- Use specifications (BDD) - there will be a lot's of changes and you need a way to ensure that they aren't broke the projects. But don't try to be too specific, don't write spec for every tiny point (specs also should be small). Remember about the Pareto principle (read about it if you don't know what it is!) and specify only 20%, only the most important stuff. Writing specs also will keep you focused on the goals and be specific.
And, the last one, my favorite and biggest mistake: DO NOT BUILD PLATFORMS AND FRAMEWORKS! A platform is much harder to built than an application. I knew it, but couldn't resisted the temptation - and it cost me a lot of time. Actually it was a lot of fun and I learned a lot of new stuff, but it still cost a lot of time.