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 Amr Elssamadisy on Apr 16, 2009
In The GDM-Agile Paradox: Tips to Tap into the of Agile in the Global Delivery Model Ajay Bhandari and Kumarasivan Veeramuthumoni report on their teams' experiences with Agile development in an offshore model. They cite several factors for their success, one of them being:
The second factor in our favor was talent. We had what we termed the "silver bullet", a do-anything programmer who has unlimited design capabilities. Obviously not every team is lucky enough to have a star programmer, but there are ways to make sure your talent matches the requirements of the project.
They go into detail of why this technical hero was absolutely necessary for their success, and give us advice not to go ahead with Agile in an offshore model if we don't have this level of expertise:
As a general rule-of-thumb, the more engineering content a project presents the more challenging it will be to use Agile Development. Why? More engineering content means more complexity. Take our project, for example. A number of features we planned on incorporating in the website required the use of cutting-edge technologies which, for the most part, our team had little experience working with. Luckily for us, our "silver bullet" was able to quickly develop an understanding of the new technology, experiment with code, and develop an ideal process which the rest of the team could emulate. Sans his abilities our team would have been over its head, unable to make the quick decisions that Agile Development encourages. We have witnessed the death of many projects because of an overabundance of engineering content. In these situations, if you don't have experienced architects, then don't use Agile!
This advice is hard-won by the authors and is based on their own experience. But it does not mesh with main-stream Agile advice:
Beck explored getting off what he called the "genius-shithead rollercoaster," a pattern that requires us to either be heroes at work... or shmucks, because we can't be heroes. His advice: just be yourself at work.
So is distributed Agile development different? Is the hero a pattern to follow or a smell to avoid?
Transforming Software Delivery: An IBM Rational Case Study
18 agile and lean practices for effective software development governance
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!
I think there's differences in what people are talking about, hence the debate.
A star is that person that seems to be able to do anything, do it faster, do it with fewer bugs and generally leaves you scratching your head as to how they managed to get xxx done and still manage to take time to help others. Any team can benefit from a star, as long as they aren't a jerk. When the star is a jerk they turn into...
A self-martyr (I'll just use martyr from here) is someone who puts in the big hours, is always trying to "make up for the others", seems to have their hand in everything, and somehow you always get reminded of "how much they do", and always has an excuse ready They often run roughshod over the rest of the team because they are so important, know much more, so much better etc.
Everyone sees the star's code, but the martyr's code is often a mystery only the hero can understand. You don't want to get rid of the star because you know that you're getting 10x what the star is worth. You don't want to get rid of the martyr because you're afraid of all that mysterious code.
The easy way to differentiate the two is that the star usually works close to normal hours and gets more done. The martyr works significant overtime, often on weekends, to get that more done. The martyr can poison the rest of the team if not watched closely.
As a general rule-of-thumb, the more engineering content a project presents the more challenging it will be to use Agile Development. Why? More engineering content means more complexity.
I disagree; agile teams are in general better at dealing with complexity as they a self-organizing around the problems.Take our project, for example. A number of features we planned on incorporating in the website required the use of cutting-edge technologies which, for the most part, our team had little experience working with.
Here is the smell! Who are "we"? Why are you telling the team to use cutting-edge technology? This "we"-entity is telling the team what to do and how to do it using which technology.
Luckily you had a brilliant guy who could figure it out for you. Next time put a good team together, let the product owner explain what he needs and let the team figure out how to do it. You'll be surprised how people will rise to the occasion when there is no "silver-bullet boy" around to take control.
In these situations, if you don't have experienced architects, then don't use Agile!
Would it not make more sense to say: if you don't have experienced architects, then don't do complex development with new technologies ?
Agile doesn't do without technical leadership, as long as the tech lead is here to empower the rest of the team.
Also my experience is different about heroes: Agile collaboration and discipline tends to replace the lone hero dragging along the team with the senior people helping everyone else to raise the bar and take on more responsibilities.
Ok. Point well-taken. So does an Agile team require a star or a hero? And, does an Agile team benefit from a star or a hero, or possibly, are they both detrimental?
Fundamentally if you've got a big technical challenge then regardless of methodology you will need very talented people to deliver. Technically complex projects are more likely to fail than technically simple ones. Full stop, end of story. If you've got a few really really good people you'll deliver more, faster and better than a larger number of less talented indiviudals.
I'd contend that the failure rate on technically challenging agile projects is lower than on traditionally organised projects, and when the do fail they do so at lower cost.
If anything agile projects are less demanding of single heros to deliver technically challenging projects because they are better are increasing the skills of the team members to deliver the project. In particular:
In contrast traditional techniques can lead to premature fossilization of design and knowledge silos where the shared understanding of the solution is lower.
Any team with a star programmer delivers better than the same team without...
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.
5 comments
Watch Thread Reply