Generally from the comments I see that people tend to stay with once-learned tried-and-true technologies (it's called laziness!). I had a friend of mine who kept saying that every web-based system can be written in Servlets and JSPs... untill he tried Spring MVC and JSF. Of course he was true, you can write every web-based system using Servlets, but that would take you years not months, and right now, when the global economy is slowly getting out of the recession no one is willing to wait for the system for years. IT customers want their software to be ready ASAP so that they can take advantage of their competitors who fail to adapt to new environment.
BUT cutting edge technologies and frameworks introduce a huge risk and no one can deny it!
Partially as a response to those comments I decided to write this post. It happens that my current project is based on a cutting edge mobile technology.
Almost 3 years ago I was a member of a team which had to create an online system which would allow end user to buy car and/or home insurance. System was written in Spring Web Flow. And, by the time project started, only 1 team member knew Spring (and left the company after 3 months). The project turned out to be a disaster, the architectural errors made at the very beggining of the project lead to many, many major issues. In phase 2 we ended up in re-writing almost everything. But we finally did it.
The project was a company-wide case of how not to do a project. And we've learnt a damn lot.
Last month I started a new project. This time it was even better. A mobile application, 3 developers, none of us knew the technology, plus the technology's latest release was 0.9.
How did we start this project?
1st week - we read only documentation and played with examples.
2nd week - we created our first (proof of concept) application stub, with menu at the top, some panels, switching panles logic; then we decided to redisgn the application and move the menu to the left, apart of panels, we added filtering mechanism and filters toggling proof of concepts.
3rd week - we redisgned our application one more time, leaving only a toolbar at the top, and moving the menu to a sub-panel; during that week we also investigated dynamic loading of external resources and business modules.
4th week (week, when our framework's 1.0 version was released) - we did 2 more proof of concepts: asynchronous events and a message bus.
2nd week - we created our first (proof of concept) application stub, with menu at the top, some panels, switching panles logic; then we decided to redisgn the application and move the menu to the left, apart of panels, we added filtering mechanism and filters toggling proof of concepts.
3rd week - we redisgned our application one more time, leaving only a toolbar at the top, and moving the menu to a sub-panel; during that week we also investigated dynamic loading of external resources and business modules.
4th week (week, when our framework's 1.0 version was released) - we did 2 more proof of concepts: asynchronous events and a message bus.
And only then we started the development. And I'm 100% we won't make any architectural mistakes, also we know what's our technology of choice capable of (we know the technology more every day, but of course we're still not experts).
To sum up, we are confident that we will make it on time and on budget! We might be a little bit behind the schedule at the beginning, but end-to-end it will turn out to be a good decision to spend a month learning and building small proof of concepts.
Again, your comments most welcomed!
cheers,
Łukasz

3 comments:
Nice article ! Building on top of productivity frameworks generally reduce the programmers effort, that's a truth. But being tied to a framework's API to reduce time and money by rising productivity can let your project to be tied forever to the capabilities of that framework. So I totally agree that spending some time learning a new technology can save your project in the long-term.
Hi
Which language, this ver.9?
thanks
bcs
Hi,
Thanks for your comments.
@Anonymous:
It's a JavaScript framework. Yes, I know, most of programmers don't thing JavaScript is a programming language :) Of course not everything is written in JS we have a backend providing us data via AJAX calls).
cheers,
Łukasz
Post a Comment