Sunday, July 5, 2009

agile development and sprints

As anyone who knows the real me knows, I am deeply interested in all the agile development methodologies. Since I was back in school I wrote a paper about a variation of scrum that received great acceptance and reviews. While at work I got certified in scrum technologies and I try to be the agile evangelist in every project I work in. Doing so isn't easy, as old fashioned teams don't generally like getting introduced to a new way of doing things. People resist change and tend to be pessimistic about new processes =)
However, the way that agile development is being pushed in some big companies leaves a lot to be desired. In one of my past few weeks, I had to attend a meeting regarding how did the past two sprints go. This in principal is a great idea. You all meet in a big conference room, everyone writes down in notes what went well and what went wrong, some people organize them in clusters and then the management team goes back and works on the feedback. Be it good or bad, the management team has a clear view of how the project is going.
That's the theory...In practice, the dynamics of a huge development group are way more complex than that. When you get in the same room technical people and the business stakeholders, along with all the upper level management, hilarity ensues....The actual developers of the system don't wanna appear harsh in front of their managers and the broader team that can't understand the technical challenges of the project. The upper level management doesn't want to admit when there are serious flaws in the execution of the project as this might mean refactoring processes and this would mean a further delay in the release of it. And the last thing upper level technical management wants is to push a delay in the release and try to explain to the business people that this is because of "fixing technical/project management processes". This will appear like gibberish to the business people who don't care about how the system works, just that...it works!
The business people on the other hand, deserve a paragraph of their own! The whole meeting was a "pat each other on the back" fest...Junior product managers appraised how great their senior product managers are, senior product managers appraised project management and project management appraised back product management...All this tells me that they either have no clue how the project is going and where is it headed towards, or they are trying to prepare for the thunderstorm that is coming once the EVP's understand the full extent of issues that are dragging the project behind...
However, this was a great experience. Teached me how great agile processes are but how dangerous can they be when put in the wrong hands...
As for me? I wrote down my concerns about how code reviews are being held and that the "daily status standup" is a parody since you have so many people that people can't give any status but just bitch about blockers. But why would you wait till the standup to bitch about blockers and not just go and unblock them yourself by talking to the right people and of course why should I care about the blocker of person X with person Y who both are working in something that is totally irrelevant to my part of the platform? It makes for good work gossip though :p lol!

google maps api and hosting your pet projects

These last days I have started working in my new pet project. It's driven mostly by the personal need to fulfill my own problem and wondering if it can benefit other users as well.
For this project, I need to use some mapping servcie that provides map display, directions and rich javascript control. I was looking around the two major maps api's and couldn't but agree with Carol Bartz 's view that Yahoo! Maps can't even compare to the feature set of the Google Maps API. I was truly amazed by the number and quality of features the gmaps API provides and the rich integration with everything google. From analytics to adsense to the Google AJAX API among others...
The other dilemma I am facing this period is how to architect the system. In one sense it could be a javascript only solution but this would severely limit the feature set of the system. One of the features I would like to have is obviously as a platforms guy to be able to collect visitor's raw web server log data and analyze them. This seems to be impossible with google analytics, at least up to the point of an apache web log record can provide you.
Also, I evaluated the usage of google app engine for hosting this project. For my personal pet projects I am usually either storing them on my own git server along with documentation in my twiki server that comes from the same apache server from my old netbook style dell laptop =) But for a project like this, I would like to be potentially able to serve more than just me. Even if it's just friends that find this service as useful as I do.
Google app engine sounds like a good candidate. You can write your code in python or java ( both good options for my style ), you can server enough requests per day for a pet project and if needed you can scale out by paying a (small?) price.
I am still undecided which way I should go. I have started hacking on my dev box but I might soon move over to app engine.
Another nifty feature of the app engine is that it accepts java bytecode instead of source code. This means that pretty much every language that has bindings into jvm can run in this environment.
All in all, google app engine is great but it still lacks some features to make it flexible enough for me. Nonetheless, it provides a turn key solution that alleviates you from many problems. I will post sometime later regarding how did it go...:)