<div dir="ltr">Hi All,<div><br></div><div>Thanks for sharing this Mark. I've just come out of a stand-up (one held with developers in four cities over two countries) and I have, despite some initial misgivings, started to appreciate the advantages of the Agile ways of doing things. On the other hand a quarter century of software development has also convinced me there is no silver bullet (<a href="http://en.wikipedia.org/wiki/No_Silver_Bullet">http://en.wikipedia.org/wiki/No_Silver_Bullet</a>). Like a lot of enterprises we've picked out those aspects of the theory that seem to work best for us in practice, no doubt to the horror of consultants and authors who seem to believe you have to sign on completely to get full benefit.</div>
<div><br></div><div>What I am interested in, and it's perhaps more relevant for this list, is to what extent Agile techniques might be also applicable to "hobby" coding projects. Often these are single developer (or a small number) and the coder is also the "customer". I suspect Agile type ideas (such as delivering often) happen naturally. But are there other techniques that we could use even in our efforts that might improve our "productivity"? Or would that all make it seem too much like work, each weekend becoming a "sprint" and tasks rolling over undone? </div>
<div><br></div><div>I note that despite much day job experience with them I've only just started using a revision control system (github) for my own Arduino based projects and I'm wishing I'd done so years ago. That's what gave me the idea that perhaps there are other "work" habits that could be usefully adapted for my "play". OOD/OOA? Test driven development? Design by contract? These probably all happen naturally to some extent but has anybody made a conscious effort to adapt formal methods for informal projects?</div>
<div><br></div><div><br></div><div>Quentin</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Fri, Aug 15, 2014 at 7:25 AM, Mark Atherton <span dir="ltr"><<a href="mailto:markaren1@xtra.co.nz" target="_blank">markaren1@xtra.co.nz</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">sense at last :)<br>
<br>
stolen from <a href="http://www.embedded.com/" target="_blank">http://www.embedded.com/</a> hopefully with full credits included<br>
<br>
-mark<br>
<br>
============<br>
<br>
Bertrand Meyer is one of the most literate authors in computer science. His latest work, Agile!, is an example. It’s a 170 page summary and critique of the leading Agile methods. The introduction gives his theme: “The first presentations of structured programming, object technology, and design patterns… were enthusiastically promoting new ideas, but did not ignore the rules of rational discourse. With Agile methods you are asked to kneel down and start praying.” The book burns with contempt for the eXtreme attitudes of many of Agile’s leading proponents. He asks us to spurn the “proof by anecdote” so many Agile books use as a substitute for even a degraded form of the scientific method.<br>

<br>
This is a delightful, fun, witty, and sometimes snarky book. The cover’s image is a metaphor for the word “Agile”: a graceful ballet dancer leaping through the air. He contrasts that with the Agile manifesto poster: “The sight of a half-dozen middle-aged, jeans-clad, potbellied gentlemen turning their generous behinds toward us…”!<br>

<br>
He quotes Kent Beck’s statement “Software development is full of the waste of overproduction, [such as] requirements documents that rapidly go obsolete.” Meyer could have, and should have, made a similar statement about software going obsolete, and that both software and requirements suffer from entropy, so require a constant infusion of maintenance effort. But he writes “The resulting charge against requirements, however, is largely hitting at a strawman. No serious software engineering text advocates freezing requirements at the beginning. The requirements document is just one of the artifacts of software development, along with code modules and regression tests (for many agilists, the only artifacts worthy of consideration) but also documentation, architecture descriptions, development plans, test plans, and schedules. In other words, requirements are software. Like other components of the software, requirements should be treated as an asset; and like all of them, they can change”. (Emphasis in original).<br>

<br>
He describes the top seven rhetorical traps used by many Agile proponents. One is unverified claims. But then he falls into his own trap by saying “refactored junk is still junk.”<br>
<br>
The book’s subtitle is “The good, the hype, and the ugly,” and he uses this to parse many Agile beliefs. Meyer goes further and adds the “new,” with plenty of paragraphs describing why many of these beliefs are actually very old aspects of software engineering. I don’t see why that matters. If Agile authors coopt old ideas they are merely standing on the shoulders of giants, which is how progress is always made (note that last clause is an unverified claim!).<br>

<br>
The book is not a smackdown of Agile methods. It’s a pretty-carefully reasoned critique of the individual and collective practices. He does an excellent job of highlighting those of the practices he feels have advanced the state of the art of software engineering, while in a generally fair way showing that some of the other ideas are examples of the emperor having no clothes. For instance, he heaps praise on daily stand up meetings (which Meyer admits are not always practical, say in a distributed team), Scrum’s instance on closing the window on changes during a sprint, one month sprints, and measuring a project’s velocity. (I, too, like the Agile way of measuring progress but hate the word “velocity” in this context. Words have meaning. Velocity is a vector of speed and direction, and in Agile “velocity” is used, incorrectly, to mean speed).<br>

<br>
One chapter is a summary of each of the most common Agile methods, but the space devoted to each is so minimal that those not familiar with each approach will learn little.<br>
<br>
Agile! concludes with a chapter listing practices that are “bad and ugly,” like the deprecation of up-front tasks (e.g., careful requirements gathering), “the hyped,” like pair programming (“hyped beyond reason”), “the good,” and “the brilliant.” Examples of the latter include short iterations, continuous integration, and the focus on test.<br>

<br>
The book is sure to infuriate some. Too many people treat Agile methods as religion, and any debate is treated as heresy. Many approaches to software engineering have been tried over the last 60 years and many discarded. Most, though, contributed some enduring ideas that have advanced our body of knowledge. I suspect that a decade or two hence the best parts of Agile will be subsumed into how we develop code, with new as-yet-unimagined concepts grafted on.<br>

<br>
I agree with most of what Meyer writes. Many of the practices are brilliant. Some are daft, at least in the context of writing embedded firmware. In other domains like web design perhaps XP is the Only Approach To Use. Unless TDD is the One True Answer. Or Scrum. Or FDD. Or Crystal…<br>

<br>
Jack G. Ganssle is a lecturer and consultant on embedded development issues. He conducts seminars on embedded systems and helps companies with their embedded challenges, and works as an expert witness on embedded issues. Contact him at <a href="mailto:jack@ganssle.com" target="_blank">jack@ganssle.com</a>. His website is <a href="http://www.ganssle.com" target="_blank">www.ganssle.com</a>.<br>

<br>
<br>
______________________________<u></u>_________________<br>
Chchrobotics mailing list <a href="mailto:Chchrobotics@lists.linuxnut.co.nz" target="_blank">Chchrobotics@lists.linuxnut.<u></u>co.nz</a><br>
<a href="http://lists.ourshack.com/mailman/listinfo/chchrobotics" target="_blank">http://lists.ourshack.com/<u></u>mailman/listinfo/chchrobotics</a><br>
Mail Archives: <a href="http://lists.ourshack.com/pipermail/chchrobotics/" target="_blank">http://lists.ourshack.com/<u></u>pipermail/chchrobotics/</a><br>
Web site: <a href="http://kiwibots.org" target="_blank">http://kiwibots.org</a><br>
Meetings 3rd Monday each month.<br>
<br>
When replying, please edit your Subject line to reflect new content.<br>
</blockquote></div><br></div>