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 Kurt Christensen on Jan 10, 2007
Talented people chafe at having to justify everything they do to another person. Programmers rely on a lot of intuition and experience, and needing to put that into words for people who don’t “get it” is extremely tiring.Mike has been writing about his team's transition to an agile development process, and so far has had a generally positive experience, with the exception of pair programming:
I think pair programming is going to take a lot of work for me to digest, if for no other reason than it seems to promote mediocrity. The sheer energy needed to convince a whole team of people on how to design a simple login function (for instance) seems to fly in the face of what Agile is purported to fix: Overburdened design discussions.The difficulties of introducing pair programming have been discussed before. So why even try? Kent Beck explains the rationale for pair programming in his book Extreme Programming Explained:
...[a] powerful feature of pair programming is that some of the practices wouldn't work without it. Under stress, people revert. They will skip writing tests. They will put off refactoring. They will avoid integrating. With your partner watching, though, chances are that even if you feel like blowing off one of these practices, your partner won't..This may be true, but from a scientific viewpoint, the quantitative evidence is hardly overwhelming. There have been a variety of papers published which attempt to provide evidence for the benefits of pair programming. But the quality of this research was called into question on hacknot.info in an essay from 2004:
What I want to know is - why, as a community, do software developers eat this stuff up so uncritically? Why are there so many people, including Williams herself, quoting this experiment and its conclusions as if they were some sort of vindication of pair programming, when they are in fact meaningless? Where are the critical examinations of her experimental method?The essay provides a detailed criticism of the research methods used, but they all essentially boil down to a single issue: the researchers conducting pair programming experiments are computer scientists and not social scientists. What the agile development community lacks are large-scale studies performed by unbiased researchers who are capable of effectively conducting experiments in the social sciences. Until then, any debates about the costs and benefits of pair programming will rely largely on anecdotal evidence.
18 agile and lean practices for effective software development governance
Case Study: IBM's Agile Transformation
Agility at scale, become as agile as you can be
SCM best practices for multiple processes, releases & distributed teams
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've found this to be informative. It is a presentation from an XP confrence about an XP team which did not use pair programming. Their reasons why are informative - basically their view is that the value of pairing is proportional to the cost of fixing production defects. www.agiledevelopmentconference.com/files/XR1-3.pdf
I'm new to XP/pairing, and currently only interface with a team doing it (not done it myself), but what I like about it, from the perspective of people doing it on my behalf, comes not only from the pairing itself, but pair rotation. In addition to the Beck quote in the article, I think having multiple people familiar with a majority of the code is a valid benefit. Pairing provides that itself, but pair rotation takes it even further. I believe it reduces "key-man" risk, and when there needs to be debate about design, I see that debate have meaning grounded in familiarity with the code and not just theoretical positions debated that often end up useless because reality made it all moot.
It seems to me pairing should consider the individual's skills and the stories to be worked on. Match experienced/inexperienced people in pairs give the inexperienced folks a chance to stretch, but also give the experienced pairs a chance to work together to tackle the stories where their experience can be let loose on a problem that needs some creativity, or shouldn't be burdened by trying to keep someone with less experience up to speed. Here again, I see rotation as being a valuable aspect of pairing.
I can see pairing be very difficult to quantify. I've worked in engineering, software, and marketing in my career, and there are classic debates on ROI for certain marketing principles/functions not the least of which is advertising. These tend to be things that long term studies provide more clarity on the benefits. I can see pairing being one of those things where the benefits are largely intangible which by definition is very difficult to correlate to value.
I instinctively see the advantages of pairing, but I'd be hard pressed to be able to prove its value logically or economically to someoe who just didn't get it.
I disagree with Mike on his negativity because it is about benefitting from two peoples combined knowledge and foreseeability, and not about mediocrity and negotiating a common denominator. Management should look careful at when not using PP, and how the teams should manage themselves.
I concur on the fact that there is nothing like social science in computer science. I have seen too many decisions based on too fragile a foundation within research as within industry, but I do hope at least research will pull themselves up by the reims.
www.agiledevelopmentconference.com/ doesn't look like a real site to me -- appears to be a parked domain.
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.
4 comments
Watch Thread Reply