New-age Transactional Systems - Not Your Grandpa's OLTP
John Hugg discusses high volume transaction processing applications with high and low frequency profiles, and how VoltDB can be used for that purpose.
The content has been bookmarked!
There was an error bookmarking this content! Please retry.
Posted by Vikas Hazrati on Jun 29, 2010
Though collocation is one of the prime recommendations of Agile, more and more projects are executed in a manner in which the teams are distributed. Safari Asad started an interesting discussion on the Scrum Development group to discuss about a project in crisis, which not only had a remote customer but also had remote developers.
Asad, described the situation as it degraded from good to bad to worse. The problems started when the team moved back from the customer site due to budget constraints. According to Asad, since then they have been trying to deliver the software but the customer keeps coming back with a huge list of errors and re-opened defects. Asad mentioned that one of the other big problems in the project was remote development. All his developers were working from home and he was not sure if the assigned bugs were getting resolved in the new code base.
When the customer sends the bug list I send the bugs to developers. The developers solve (or spuriously solve) their bugs and give back the new source to me . I compile it and create a patched version.
Though, it was established during the discussion that the team was either not following Agile or not following it in the right way, Asad wanted to seek suggestions by which he could salvage the project.
Mark suggested that a way to save the current project would be by writing a load of acceptance tests and executing them before making a release to the customer. This would depend a lot on the technical debt in the system but is a perfect way to ensure that the software which is being delivered is of the right quality.
According to Roy Morien, one of the fundamental problems in this situation seemed to be the responsibility of testing software and ensuring that the bugs were solved. If the developers were not responsible then they could send back code which had no guarantee of being fixed.
If you are responsible for testing, then the developers have no real incentive to ensure they have done the work correctly. They can apparently rely on you to find out, and just need to say 'Damn, I thought that was working. I'll fix it up by tomorrow!". When do they get paid for the work of fixing the bug?
Roy also suggested that Asad should gather the new software, test it and demo it at the customer site to get immediate and valid feedback.
Bachan Anand emphasized on the importance of honest communication. According to him, the team should move ahead now in a positive way if they wanted to save the project.
What has happened has happened , the only way I could see this solved is to first accept what has happened and then look for solution. So the first step would be come up with a solution to save this project that is acceptable first and foremost to the customer after communicating to them clearly the situation the project is in now.
Pete Ruth outlined a comprehensive strategy to salvage the project. According to Pete, the customer would have to be convinced that the software can be fixed in a quick and cost effective way. He suggested the following list of techniques which have been helpful for him in the past
Jeff suggested that blaming everything on remote customers and remote developers is just a way to find excuses. According to him, he has done several projects in distributed mode and those have had excellent results. The real solution is a commitment to succeed by both the team and the organization.
Thus, most members in the discussion did not see distributed development as the problem. Most of them were of the opinion that having a remote client or doing remote development was not an issue. The pains of distributed development were only symptoms of incorrect execution. The key to success in a remote project is to augment the right agile practices with the right tooling and have a commitment to succeed.
18 agile and lean practices for effective software development governance
A practical guide to choosing the right agile tools
In today’s hyper-competitive world, later may be too late to adopt Agile development and this Roadmap for Success will help you get started. Download "Agile Development: A Manager's Roadmap for Success" now!
Maybe they are agile in the sense that they are young and have good reflexes, right ?
I have about 3 years distributed scrum experience at a management level position of such distrubuted teams. I am much closer to a pig than a chicken on these projects, and am very technical and could replace a developer on the team if required. I can say distributed scrum is very difficult and requires the perfect mix of everything to implement it with great success. In my opinion the number one thing is trust, which appears to be lost at the moment. Putting things in place to re-establish trust is crucial. Scrum is built on trust.
The best would be to try and inspire the customer to go sit with the dev team for a while, but that may be difficult, definitely worth asking. From a very limited view point, it sounds like many things are broken in your processes, but without more information I would only be speculating. Again, I say focus on what you can do to re-establish trust, tell the client this is what your goal is. Ask the client what they think you should do, get them involved in solving the problem. Explain the project is very unlikely to be a success without this trust. Good luck.
Alex VanLaningham
www.forwardvisibility.com
John Hugg discusses high volume transaction processing applications with high and low frequency profiles, and how VoltDB can be used for that purpose.
Kevlin Henney examines code samples to see what can be learned from them starting from the premise that one won’t write great code unless he knows how to read it.
Jason Ayers share the observations he made watching a team of developers collaborating in real time on the same code base, pushing XP, pair programming and continuous integration to their extremes.
Michael Snoyman presents Yesod, a web framework written in Haskell and containing a web server, templating, ORM, libraries (templating, gravatar, etc.).
Richard Kreuter and Kyle Banker on how to avoid classical RDBMS transactional systems by using compensation mechanisms, transactional messaging or transactional procedures.
Attila Szegedi talks about performance tuning Java and Scala programs at Twitter: how to approach GC problems, the importance of asynchronous I/O, when to use MySQL/Cassandra/Redis, and much more.
One category of risk that project teams need to ensure they address is business value failure – delivering a product that fails to provide value for the business investor.
InfoQ spoke to the authors of Software Systems Architecture on a couple of new topics, the System Context viewpoint and Agile, which have been added to the second edition.
2 comments
Watch Thread Reply