19 ms·
Agile is a Sham
- driverdan 15y agoThis quote summarizes how terrible the article is: > If you need to follow a prescribed process in order to be in any way an effective coder then you are mediocre at best and so is your work and your project.
- mattdeboard 15y agoThe world is full of mediocre programmers, and in each cluster of mediocre programmers you'll find that they're surrounding much better programmers. Ergo, since mediocre programmers exist, agile isn't a sham, and is necessary. QED
- fredwu 15y agoEven for really talented developers - imo just because they are talented (they can code and can solve problems) doesn't mean they can play well within a team - especially in a team without any processes to guide them through. I personally find the author's view on processes to be very naive - and a bit offensive, it's almost like saying if you employ processes, then you are stupid. EDIT: My thoughts in a separate entry: http://news.ycombinator.com/item?id=3765693 http://news.ycombinator.com/item?id=3765693
- hack_edu 15y agoThe notion that some 'good,' 'quality,' or 'talented' programmer is somehow entirely autonomous is entirely a fallacy. I'd trust a team of 'mediocre' programmers that follow process and get it done than place blind trust in a couple cowboys or post-docs who have some claim to genius in a prior life. Sure, some are better than others. But to those who somehow believe that Great Programmers can do anything, get over yourselves. They (read: you) probably aren't nearly as good as you think.
- mattdeboard 15y agoSo aggressive! I'll be the first to proudly proclaim that I know practically nothing, and am a terrible programmer. But I'm not mediocre. Mediocrity == doesn't know how to ask questions, decompose problems, troubleshoot or research. Calm down bud.
- kevindmorgan 15y agoMaybe you should go and read this again: http://agilemanifesto.org/ http://agilemanifesto.org/
- peteretep 15y agoThis is a terrible, polemic and content-free post. Please stop submitting stuff like this.
- zedshaw 15y agoSo is your comment, please stop making them.
- deleted 15y ago[deleted]
- ilaksh 15y agoI dunno. In a way I think he is right in some ways in that most of the times people say they are doing agile or scrum it is a sham and they are not really doing agile and also it generally doesn't tell you much about how well they work. Also I think that process can very easily get in the way. I was actually thinking maybe things would work better for small teams if you just handled everything in a group chat room with a history like campfire. But I still have hope that someday I'm actually going to use TDD for a project and then have way fewer regressions to deal with. Still haven't had the discipline I guess to really learn and apply TDD after all these years although I have sort of done it a little a few times. And also a few other things like short iterations and getting the simplest useful software going which I always thought were part of agile, those things help. Although it has always been a battle for me to get managers or even users to stop adding features and do an initial release so I haven't been very successful in that aspect. I don't know if the quality the individuals on the team is everything but it is a good point that it is probably more important than anything. I also would really like to believe that having a real QA team as part of the process would improve things, although I have never had that luxury either so it may be a false hope. But that would be something in the process category.
- PaulHoule 15y agoWell, agile and TDD (not necessarily together) are good for two kinds of projects. (1) If you're building simple web apps for small town clients in a framework like RoR, you can break things into little tasks and estimate with laser-like accuracy. This fits in great with an agile methodology (2) If you're writing security-sensitive string parsing code or any algorithms with tricky components, TDD is a big win. When I was in grad school I converted a very slow program for solving a quantum system (worked for N=5) into a very fast program (worked for N=64) by building very detailed test scaffolding. I don't know if I could have built the fast but complicated app without the tests. Now, I've got another app where I almost want to use TDD but I'd wind up building a whole Potempkin village of mock objects and I just can't bear the line count I'd need to first write it all, find bugs in, and then maintain.
- Xylakant 15y agoYou're wrong on both accounts: (1) Being able to estimate with laser-like accuracy is not part of what's agile. Estimation is not part of the agile manifesto at all - Kanban for example can be done without a single estimate. It just limits the number of tasks that you have in parallel. Scrum on the other hand does deal with estimates, but it mainly postulates that you can't estimate large chunks of work at all and small chunks not necessarily correct. So there are all kinds of observed correction metrics built in that help you to get a better estimate - no one vouches for a correct one though. (2) If you can't use TDD because you have to build a whole set of mock object you might have a tightly coupled system. Writing a test is not dead line count, it helps to formulate boundary conditions and expected behavior. It's certainly not useful for all kinds of project but it's certainly not limited to security sensitive or tricky algorithms. If the behavior is simple, then the test is simple as well. If the behavior is complicated, then the test will be as well - but at least you'll think about how it is supposed to be.
- PaulHoule 15y agoMy own "agile" process for certain kinds of development involves breaking down all tasks to less than an hour and estimating time to 10 minute granularity and planning on weekly releases. For boring web apps built on the right framework I find this keeps everybody very happy. Devs aren't chasing their tails, you can make and keep promises to the client, etc. Of course you've got to be building the kind of app where there aren't surprises, but those exist. As for the other project, the whole thing is a machine where you put a 600 million fact knowledge base in one end and it manufactures 'potempkin villages' (little knowledge bubbles about particular domains w.r.t a point of view) on the other end. Once it's done, I could use it to generate micro test cases for the rest of the system, but in the short term that doesn't bring in revenue or delight customers.
- benohear 15y ago"Agile is not a silver bullet" is more to the point, and applying it dogmatically can counterproductive. But regular communication, short, well defined sprints and a prioritized backlog available to all can do wonders in terms of getting a small amount of stuff done rather than a large amount half done.
- crudolph 15y agoAgree with this 100%. Transparency and communication are key when you have more than one or two people on a team.
- deleted 15y ago[deleted]
- creigh 15y agoLet me say this. I have found scrum in particular to be used as a management tool (report back tool), and not a developer tool. It doesn't matter where i go. It starts with the greatest of intentions, and ends up where management are sticking there fingers in the pie half way through. And by that I mean they don't use priorities on the backlog to manage the process. They use the standup meetings as a moan session when things don't go there way. To me scrum in its purest form is where the developer drives the process. Most projects will perform better if they just let them do that.
- tbsdy 15y agoI disagree. I've met a LOT of developers who believe they know more than the customer, the QA team, the UX team and the DBAs. And they are, most often, wrong. I think it takes a special sort of programmer to run a project to be honest. They are out there, but they are hard to find!
- creigh 15y agoJust to be clear, I meant the developers should drive the STORY, and not the PROJECT. Is is after all something advocated by scrum.
- rbanffy 15y agoAgile is a management tool. It helps manage developer time, feature bloat, organizational blocks, communication overheads and user expectations. It also helps you measure performance and identify bottlenecks in your own process. Like other comment said, it helps getting a couple things done instead of having a huge pile of stuff half done.
- creigh 15y agoLook at what Agile is promising to fix. The development process not the management process. Semantics aside, I like everything you said, except to say that either the line manager is doing those things, or 'it' (scrum) is doing those things.
- guynamedloren 15y agoSee, the thing is, the success of the coding-part of a project is dependent on the calibre of the engineers doing that coding and not the process they follow. The success of the non-coding part of a project is dependent on the calibre of your sales/management and how they interact with the customer. If you are trying to prescribe some rigid process, however lean, in order to make that interaction effective, then you have a customer interface problem and process isn’t going to help it. Couldn't agree more. The only thing I'd like to add is that there also must be a solid interface between sales/management and engineers. Thanks for this.
- Tyrannosaurs 15y agoI anticipate a kicking for this but, hey ho. IMHO if you have great people (developers, sales, test, whatever), process is near irrelevant. Sadly if we're being honest most people are not great (even when they think they are). Where that's the case, process is the sticking plaster that attempts to make up for the failings of us mere mortals. Generally speaking process takes away some freedom from those involved and adds some overhead but provides some predictability. Bad people don't make good use of freedom (and indeed often abuse it) and the project benefits from them being made more predictable. Good people not only make good use of freedom but are already largely predictable (they manage expectations, communicate well and so on) so not only do you add overhead and lose opportunity, but you gain almost nothing. The issue is understanding how good your team are and what level of process is appropriate.
- vannevar 15y ago[T]he success of the coding-part of a project is dependent on the calibre of the engineers doing that coding and not the process they follow. And the success of an NFL team has nothing to do with process either. It's all the players. That's why they never hold practices or review footage with the coaches. Who needs set plays? Tom Brady just tells Wes Welker to go deep and get open. You guys up front block. That's it. Super Bowl. Process is for losers.
- guynamedloren 15y agoProgramming != football.
- plinkplonk 15y agoI personally think Agile is mostly a scam built around some very small nuggets of common sense wisdom, which has then been propagandized by legions of clueless methodology consultants to mediocre teams and management, and spun into mediocre books and conferenceware. Just my personal opinion, ymmv etc. That said, this is a badly written article which doesn't convey much useful information or convincing argument. I am surprised it is on the HN front page,leave alone being the top ranked article (at the time of writing this comment). Agile and TDD have been exhaustively discussed before on HN and an HNSearch will bring up much better arguments, both pro and con, from people who can clearly explain their viewpoints.
- ryandvm 15y agoThe ranking on HN can be explained because there are apparently a lot of people here that share your sentiment. I don't really have a problem with the tenets of Agile, but the Church of Agile, its high priests, and its associated industries are bullshit.
- kamjam 15y agoThat's it, the marketing people take a very simple concept, put a lot of marketing bullshit around it, make it seem A LOT MORE difficult than it needs to be and you then have to take a million courses to understand what the hell is going on. The best "agile" managers I have worked with "just got it", just like the best developers. There is none of this spoon feeding a baby crap.
- papatron 15y agoTrue, agile is a collection of "very small nuggets of common sense wisdom". But one thing that often gets missed is that common sense is often very hard to implement properly; this is where a good agile trainer will help. I can think of dozens of changes I should make to my every day life based on common sense (don't get stressed, spend more time with firends and familly, save for the future etc). Why don't I do them? Because it's difficult to align these "simlple" truths with the overall complexity of my environment and competing pressures. There's always complexity in the system, agile just simplifies one part and moves complexity into other areas e.g. having a highly trained and skilled team.
- mseebach 15y agoIt's useful to distinguish big-A and small-A agile. Big-A Agile is a management buzzword, something you can become certified in and certainly a scam. Small-a agile is a number of mostly common sense principles on how to approach process. It is emphatically not the process itself. While it cannot be meaningfully certified, it can be taught and learned. Someone else linked to the agile manifesto. I'm just gonna go out on a limb and paste the punchline: Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan
- MrKurtHaeusler 15y agoI haven't heard that argument before. Interesting. For me, big-A Agile refers to the Agile Manifesto for Software Development, and is the Agile that people are talking about in posts like this. It may be a software development buzzword, and yes there are certifications and they are scams, but I find the values and principles in the Agile Manifesto to be fairly sound and relevant within the context they were first produced in, as basically a reaction to waterfall in larger companies developing business software with average developers. Small a agile is an English word meaning quick or flexible or something. I am not saying I am right and you are wrong, just that is how I have usually thought about it.
- mseebach 15y agoYou can't "be" big-A Agile, it's a tool set or a check-list - but you can (and should what to) be small-a agile as a development organisation. The reason I make the distinction is that big-A is the quantifiable bit, but you can tick all the boxes and still essentially do waterfall. Conversely, you can be small-a agile without ticking the boxes - agile isn't, and can't be, prescriptive. If the team feels they don't need daily stand-ups, or if they want to sit down (the horror!), there is nothing about being agile that should keep them from doing that. Same goes for tests: You can worship the test coverage number obsessively, but if your assertions are pointless or missing, you won't reap the benefits. Conversely, an agile team can decide to forego tests if that's the right thing.
- 15y ago
- hpaavola 15y agoThe problem with these "only good programmers will create good products so stop with the Scrum already" rants is that in real life we have more than enough mediocre engineers and we just have to come up with best possible products with those. I work as a quality assurance consultant. Usually companies buy my services when everything is messed up. Now if I try to solve their problems by saying "hire better engineers", nothing gets fixed. Nothing gets fixed because there is only so many good engineers available and the company usually don't have enough money to hire him/her. But if I teach them to follow Scrum, it is really easy to add code reviews, testing (unit and functional), planned releases, etc. It could be argued that one does not need Scrum to get those done or that it does not matter since team of better engineers will at some point do better job. But have problems in our hands right now and those must be fixed yesterday. So until some other methodology than Scrum get popular enough, we'll use that. So in real life Scrum makes getting the best out of normal team so much easier. Sure there are always rockstars who don't need any process, but in reality you, me and most of us, are all pretty dumb and just have to live with the fact.
- brazzy 15y agoThe other problem is that the people who write those rants are probably not half as good as they think they are.
- sambeau 15y agoAgile and Scrum have some good things going for them. They teach developers that building things is always an iterative process. A well designed product will still require incremental on-the-fly improvements to get it right just as code does. Sometimes a design will require a refactor just as code does. Needing a 'complete' design doc before building a product is a fallacy. They teach project managers that if they just let the designers and developers get on with it they can usually self-organise and manage their time better than if done top-down by a non-technical outsider. They teach producers and 'product owners' that constant interference can be detrimental to a production process. Developers should be allowed to develop. Best of all if done right they allow everyone scope to make mistakes yet still fix them and good mistakes that they can try out and keep. However, there are downsides: scrum has no role for designers in the day-to-day production. Either they are pushed to the role of product manager or they have to work independently a sprint ahead. An ideal system would put the designers into the heart of the scrum team. Top-down scrum is where it all goes badly wrong: producers and managers insisting that designs are complete before a line of code is created, managers taking the role of scrum-master, sprints being nothing more than waterfall milestones etc.
- fredwu 15y agoI disagree with the author's opinion on processes, and I have put some of my thoughts in a separate entry here: http://news.ycombinator.com/item?id=3765693 http://news.ycombinator.com/item?id=3765693
- talkingtab 15y agoThinking is hard. It seems like the cycle is a) someone thinks b) people follow without thinking c) someone realizes that unthinkingly following some process doesn't work so they debunk the theory without thinking. So the question you have to ask yourself before you participate in b) or c) is do you have any idea why or how agile is supposed to help?
- DanielBMarkham 15y ago[Obligatory plug and disclaimer: Agile professional who wrote an earlier rant "Agile Ruined my Life" http://www.whattofix.com/blog/archives/2010/09/agile-ruined-my.php http://www.whattofix.com/blog/archives/2010/09/agile-ruined-... Also I am writing some practical how-to Agile e-books trying to undo some of the damage: http://tiny-giant-books.com/scrummaster.htm http://tiny-giant-books.com/scrummaster.htm ] Just differentiate between what Agile is and how people are pushing Agile on you. Different things entirely. Agile is best practices around iterative and incremental development. Period. Yes, there's a manifesto and there's Scrum and all sorts of other things, but at the end of the day Agile is a marketing term. A place to go find out what people are trying in order to get better. Two secrets here. One, team success is about 90% dependent on who is on the team. Good teams do well. Bad teams do poorly. But if you're going to have more than one team, you need some way to measure and talk about what they are doing, so you have to have something. Agile -- when done correctly -- is just the minimum amount of something you need to get your work done. It is the minimum amount of process. After all, it's not like you can have no process at all. Whatever you're doing already is a process. I've seen hundreds of teams struggle with Agile, and to me the problem is that we do a really bad job of balancing the difference between "here's a best practice that worked awesome for about 80% of the teams that tried it" and "These are the rules. You must do this." In many shops, Agile is just another way of micro-managing teams, sadly. I can't help that. I also can't help the fact that lots of folks are out to make a buck on certifications and such. I don't think that makes Agile bad. Heck, I'm not even against certifications, although I'd never get one. I just think we take things too far. I like the idea of having a marketing blurb "Agile" where I can go to find out what kinds of new stuff is being done. It helps me pick better reading material. The second secret is that most teams, frankly, are not that good. So you need some kind of way to demonstrate that as well. Making things incrementally and in small iterations lets you see how bad teams are early on. You fail early and often. Then at least you have a bit of a shot at trying to help. But believe me, I feel your pain. Sounds to me like you are a lot more upset at modern marketing and management attitudes than Agile. Remember that we technical folks have a way of over-doing whatever we get into, as I was writing in my blog before your post appeared! (It's still very strange to me watching HN how the same topic comes from multiple writers at the same time) http://tiny-giant-books.com/blog/agile-means-stop-focusing-on-the-wrong-thing/ http://tiny-giant-books.com/blog/agile-means-stop-focusing-o...
- bitwize 15y agoNo. Process is important; it's necessary. There are at least two prongs to this problem: one is you can't manage what you don't measure, and process gives you a way of tracking functionality implemented, defects, defects resolved, etc. There's nothing inherent to programming that gives your manager or your team any sort of knowledge about how far along you are, or just as importantly, when you will be done. You can hack all you like and -- even if your code is visible to all -- there's no way of guessing how far along you are, or if that needs-to-be-fixed-yesterday bug is close to resolution. The other prong to this problem is you can't remember what you don't record. Well, you may have an eidetic memory, but unless the company generates deliverables besides code that explain what the code does or is supposed to do, a change in team X years down the line may mean the company forgets why Joe wrote the widget wrangler in the way that he did, and accordingly the widget wrangling module becomes an unmaintainable black box. Generating these deliverables is a part of the software process, whether Agile or otherwise. And there will always be a process. This arises simply as a consequence of the fact that management needs to know how well you're doing, and if you're performing in a cost-effective manner, to many decimal places of precision. And if the process isn't agile, it could be something far less pleasant. Agile Processes (big A) may sound scammy to you, like their proponents are trying to sell back to you shit you already know. But you only know that shit because you're a software developer. Management can't do what you do, and they're the target audience of Agile Processes like Scrum and XP. It gives them a ready-made Industry Best Practice that they can decide with confidence to adopt company-wide, with little perceived risk because it's so proven and widespread. Compare and contrast with the success of the "open source" meme in convincing companies to adopt, and participate in, free software.
- rickmb 15y agoI would like to add one thing to that: Process is necessary, but it should never be the solution. This is where people tend to wrong at the very start. Any attempt to implement Agile (or any other method) with the illusion that process can solve the problem will always go horrible wrong.
- super_mario 15y agoNo, it's even worse. You can't manage what you can't measure. And so far no one has found a metric to measure creative output like painting, writing poetry or writing software. Whatever metric you choose to measure and evaluate your team, and esp. what ever metric you reward is going to lead your team optimizing their performance for that metric. You want to measure LOC, programmers WILL write more lines. Want to measure and reward less defects, programmers WILL create less defects etc. But will your software be sexy, appealing to users, creative, innovative, trend setting solution to old/new problem?
- nefasti 15y agoJust wasted 5 minutes of my life reading this. save your time. Just a rant with no direct point or constructive thinking.
- gnaffle 15y agoRelevant article: http://www.joelonsoftware.com/articles/fog0000000024.html http://www.joelonsoftware.com/articles/fog0000000024.html Of course, you need process if you really want to consistently create defect-free software: http://www.fastcompany.com/magazine/06/writestuff.html http://www.fastcompany.com/magazine/06/writestuff.html
- damian2000 15y ago"thats SCRUM and TDD and all the rest; it is all those new ways of managing development projects" TDD is a style of developing and nothing to do with management. Anyone who has worked on something more than a trivial size app knows how useful having a decent set of automated unit tests are. Anyone who dismisses this as a "management scam" is fooling only themself.
- willvarfar 15y agoI'm glad you parsed the first line... now please read the rest of the article ;)
- darylteo 15y agoI like to say to people: "Software Engineering is an attempt of turning an art into science". Let's be honest. Software development is an art form. Just like people form groups from quartets to orchestras to make music, so do people form groups of differing skillsets to develop software. That doesn't mean an art is shooting from the hip. There is still tons of practice to be done, and the various skill levels of each individual determines the possibility for success. The problem, then, is that there are not enough Bubles, Joshua Bells, Ashkenazys, etc. around to make all the software in the world. Most companies have to make do with large concentrations of amateurs led by the occasional Bieber/Gaga. So what are all these processes then? They're essentially what companies wish to use to artificially increase their chances of success... However, manufacturing art leads to potential stagnation and also the possibility that every project that follows the same process have the same flaws (like how all pop music nowadays all sound the same). Sadly, it'll take an extremely brave company to get artists to develop their software nowadays. Nowadays, the artists stick to developing their own products =)
- super_mario 15y agoThat should be clear to anyone that has even a little mathematical/computer science training. Anyone that says you can follow some process to ensure success is effectively telling you they have implemented artificial intelligence that simulates a production line designer and to be able to do it by using humans pushing bits of paper around as their computer.
- peteretep 15y ago> Anyone that says you can follow some process to ensure success I'm going to argue this on both of its implications. Firstly: Agile is not about ensuring success. It's about greatly increasing the chances of success, and minimizing failure from fallout. No amount of process will rescue you from truly dreadful technical team, but so what? Plenty of processes will almost guarantee failure with the best tech team and will in the world. I'm going to go for the assumption that you knew that already, though, and are attacking the idea that a management-related solution can help in the solving of technical-related problems. Take a look at a modern hospital, and you will see layer upon layer of 'management' solutions to support medical problems. Prescriptions are checked by the doctor, checked by the pharmacist, and then checked by the nurse. Do hospitals throw these rules away with sufficiently good doctors? No. Do hospitals do this because they think their doctors are shit? No. Agile can be a highly effective management solution for supporting technical development. I know this because it has been for me, on many occasions, with many different teams, in many different settings. I've also seen it badly implemented to the point where it's an impediment to teams, but ... so what? That's a risk with any process.
- super_mario 15y agoAgile and other processes go much much further than your contrived example of checks and balances in a typical hospital. It would be like hospital directly interfering into the daily doctor/patient interaction or say stipulating that no surgery can be longer than 2 hours. You want to do 9 hour heart transplant surgery. Sorry, can't do that. Break it up into 2 hour chunks and measure progress after each to make sure you are going in the right direction. This is why agile is like religion. It is so vague and so thinly disguised into general meaningless correct sounding "principles" that it can be anything to anyone.
- vannevar 15y agoProcess is, actually, just tax. If you need to follow a prescribed process in order to be in any way an effective coder then you are mediocre at best and so is your work and your project. Discipline is just a tax. If you need to structure and test your code, then you're a mediocre coder at best, and so is your work and project. Just write whatever you feel like, it'll turn out ok. You're awesome, how could you possibly code anything less than exactly what the client wants? Nonsense. Agile is a discipline, just like properly structuring your code and testing it. It's discipline at a macro scale, on the team, rather than the individual programmer. You might argue over whether its specific practices are better or worse than other methods, but arguing against any development process at all is absurd.
- elmomalmo 15y agoAn agile process isn't just there to manage the developers, it's there to engage and manage the customer as well. In my experience, customers rarely know exactly what they want out of a software project, large or small. Complicated documents, produced up front get ignored because of TL;DR and projects start on faulty specifications that describe a solution to illusory requirements. So, inevitably, there will be a disparity between documented requirements and the desired outcome. Iterative delivery - a key feature of agile as I have experienced it - gives the customer multiple chances to try-out and feedback on working software along the way. Furthermore, by making the customer part of the solution early they are as instrumental as the implementers in ensuring the validity of the software and - therefore - the success of the project. Incidentally, I think this is why many customers (internal and external) are suspicious of and hesitant to engage in a truly agile process. That is, they would become equally liable for the success of the project because of the decisions they are required to make. They are part of the solution and therefore potentially party to the blame for any failures. It's much safer for them to be more likely to fail and avoid the blame than it is to risk complicity in a failure, however less likely that failure might be as a result of the process. What agile does that the author missed (or at least declined to mention) is that it gives a name to and formalises an approach that attempts to manage the customer as well as the implementers. It compensates for the fact that customers can't always be expected to fully understand their own requirements and for the inevitability that they change their minds.
- drewolson 15y agoA fun anecdote is to consider the belief the TDD crowd entertained that, by creating tests for a problem you couldn’t solve, you could somehow evolve a code that passed the tests and therefore solved the problem! I'm all for a healthy debate of TDD, but the above statement seems ridiculous to me. For me, TDD helps with two main things: - I specify the behavior I'm adding/changing before I implement it. This helps document the change I believe I'm making. - I feel more confident when making changes to a large codebase. TDD works for some and not for others. There are very interesting arguments to be had about the subject. However, can we please stop acting as though TDD advocates view their tests as having psuedo-mystical powers to solve problems automatically?
- marknutter 15y agoI view Agile the same way I do P90X, which if you swapped one term for the other this post would probably be just as valid. Yet, I use P90X and get good results. Is it dependent on my motivation and physical abilities? Yes, of course. Will it help an unmotivated person become fit? No, of course not. But what it does give some people is a road map to follow and a process for following it. Much like Agile does. My team is using Agile and it's effective. It's not a silver bullet, but it keeps us on the same page for the most part and it gives the business team goal posts for getting features designed and queued up. If us developers sucked, it probably wouldn't help that. But since we're all decent, motivated workers, it has been going pretty well. So is Agile a sham? Sure, whatever. So is P90X. I'll keep using both, thanks.
- fredwu 15y agoThis blog post offends me a little bit. The post screams hey, I am a cowboy programmer, and it almost implies that if you employ processes then you are stupid. In this day and age, I would have thought finding the right tool for the right job is common sense. Apparently not. Agile, among many other things, is not a silver bullet - it never was and it never will be. The key thing is to experiment and find what works for you, your team and your company. Most software projects are done in a team environment - putting a bunch of talented developers and designers together actually isn’t as simple as many seem to think. One example is right out of that original blog post: > Given that I am not a fan of prescribed process as the solution to our problems, you can infer my opinion of the general quality and effectiveness of those programmers who teach these courses. From that attitude, I can already see that he is an interesting developer to manage. A team needs to function efficiently as a team. Having one or two ace developers aren’t going to help a lot if they can’t get along with the others. Not to mention that people have spent time and effort proving that techniques such as TDD work for certain projects [1]. As many things in life, there are always people who try to take advantage of others. No doubt there are questionable ‘agile consultants’ who try to make a fortune out of uninformed clients. Just because some people aren’t using agile effectively or even correctly, doesn’t mean agile itself is a sham. Developers constantly make mistakes and write shitty code - should we say all the programming languages out there are a sham? Keep an open mind is important, and a lot of times even necessary. To dismiss agile all together is in my opinion childish, and offensive to others who try to improve things and create more value. [1] http://research.microsoft.com/en-us/news/features/nagappan-100609.aspx http://research.microsoft.com/en-us/news/features/nagappan-1... Originally posted at http://fredwu.me/post/20058808238/agile-is-not-a-sham http://fredwu.me/post/20058808238/agile-is-not-a-sham
- rickmb 15y agoThis kind of somewhat understandable but ultimately clueless ranting just tells me one thing: no way in hell I'm ever going to trust a programmer who cannot (or can not be bothered to) distinguish between marketing bullshit and the real thing. This kind of attitude will show up in other matters, most importantly understanding what actually needs to be developed, what the priorities are and why they are important. I'm surprised how many people here seem to be ignorant of Agile. Take for instance the certification scam accusation that is liberally thrown about: only Scrum has certification, and even that has always been controversial. As far as I know, no other Agile flavor tries to sell certification. But even so, Red Hat sells certification, does that make Red Hat Linux a scam? There are scammers and greedy consultants in every area of IT. None of that has fuck all to do with Agile in particular. So why are people so hell bent on using this against Agile?
- kevinpet 15y agoJust because something doesn't have a name and isn't written down anywhere doesn't mean it doesn't exist. If you don't like agile, it doesn't mean you have no process. It just means you are following another process. Assuming you have a project that actually involves interacting with multiple programmers, your ability to interact with them is a key part of getting the job done. If you're a lone cowboy doing it all alone, then good for you, but please state that upfront in your blog posts about how the software world is doing it wrong so we know you are evaluating things from a very unusual position. If you aren't a sole programmer, then you've got a process. Maybe it's better than agile processes. If so, please, tell us what that process it. This whole article reads like a racecar driver dismissing automotive technology because the only thing that matters is the skill of the driver.
- cletus 15y agoI'm surprised no one has brought up Steve Yegge's Good Agile, Bad Agile [1], which speaks well to both Google culture and scaling (good) Agile. One of the comments on that post mentions it. It's worth reading (and being Yegge, that'll take awhile). Agile is like anything else: some well-meaning (and arguably useful) principles that get warped by bad managers and bad companies. The natural evolution for any such idea is to turn it into an industry and there are any number of people who are willing to sell you training, lectures, books and programs for Agile (with a capital-A). You need to separate the industry from the idea. [1]: http://steve-yegge.blogspot.com/2006/09/good-agile-bad-agile_27.html http://steve-yegge.blogspot.com/2006/09/good-agile-bad-agile...
- davesims 15y agoExactly. And note the date: 6 years ago. I think the collective wisdom has been acquired. The IT community needs to name it in a way that makes these lessons learned common enough that the next time someone is burned by Bad Agile, they won't rewrite one more iteration of this same post.
- S_A_P 15y agoIn the last few companies I have worked for, Agile was not lightweight, and became a significant hindrance to productivity. In fact, there was an "Agile consultant" brought in to make us more agile at one company I worked for. He ended up making our process 3-4x more convoluted and process intensive. He also succeeded in making the work not fun anymore. In my last job, "Scrum" meetings could take 30 minutes or more on many occasions, and our "sprints" would regularly change scope or be canceled mid way through. I know that isnt Agile, but the problem is that many managers(and apparently consultants) think that is the way to do it. In my opinion, work getting done is not because you implement a process or methodology. Work gets done when you have a good team in place and trust them to do their job. Many companies seem to think that they can promote a non technical person to manage a development team. The problem with this is that they have no idea how software is built so implementing a methodology that promises consistent results no matter what the inputs are seems reasonable to them. I am by no means representative of anyone other than myself, but I find I am most productive when a) I know the problem domain inside and out b) I am given some leeway with architecture and design c) I am not bogged down in process. As projects get larger, its not as easy to allow for those conditions, so getting smart people on board is imperative. Agile should allow for managers to get some transparency and a view into the process, but little more...
- shadowmint 15y agoDirect quote: "Process is, actually, just tax. If you need to follow a prescribed process in order to be in any way an effective coder then you are mediocre at best and so is your work and your project." No. Read some history; you'll see the same arguments back years ago about processes being stupid then (80's, 90's) too. I'm willing to accept that perhaps Agile isn't a perfect process, and that agile projects don't always work out. However, process just means that you have a repeatable set of steps for generating a repeatable outcome. It's an absolutely vital part of every industry, from manufacturing to farming to, yes, programming. Everything is a process; TDD is process, writing a plan for your code is process, hell, even just sitting down and hacking away and keeping everything you need in your head is a process. When you have a team that is larger than one person, organizing that team relies on having expectations from each group in the team, and from each person in the group. That's _formalized_ process, and that's what agile is. Summary: Opinion piece, unsubstantiated, no background context. Bleh.
- jonstjohn 15y agoWe use agile at my company w/ about 15 employees. We introduced it about two years ago to help focus our development process. Although I know there are some issues with agile, we've fully embraced agile by modifying our process along the way to suit our style. It has worked really well and I wouldn't change it for anything else right now. Does it produce high quality software? I agree that depends on the engineers, but it does produce a predictable process that we all are on board with. That's huge in my eyes.
- rduchnik 15y ago"buzzword-compliant" that's a good one...lol
- roguecoder 15y agoHow well a team works together depends on far more than how smart the component engineers are. One clever engineer may be sufficient for a Suduku problem, but it is a matter of scale. This fellow is basically arguing that we don't need government because people get along just fine on their own. Which is absolutely true on an individual scale, and not at all true as soon as two people live next door to one another. In my experience 90% of software problems are social problems. He seems to care only about technical problems, and assumes those are solved by the magic of intelligence. I believe that if you can not explain to someone else how to do what you do, you aren't actually a master of your craft. Appeals to hire smarter coders sound incredibly hollow unless they are accompanied by techniques to make the average coder smarter. There are much better critiques of Agile out there, mostly having to do with how it has been sold. I'm not sure what he thinks he is contributing to the discussion. Any process can be harmful. It can also be incredibly useful, and the lack of process is at least as harmful as process applied badly. I recommend the book "The Checklist Manifestos" for examples. It proposes that the goal of process is to handle routine complexity and make cooperation routine, leaving human attention and effort free to focus on the actual hard problems.
- neeleshs 15y agoTo me, agile is essentially common sense. sprints, story cards,scrums are not nonsense, but discipline. I don't care what these are called, but they have served as a good set of tools to bring in discipline to the team. It helps a lot, when your team is not full of self-driven, talented developers. While that may point to an issue in hiring, we all know how difficult it is to hire and retail such people.
- lmkg 15y agoThe problem with Agile development is the same problem that has affected many modern revolutions: The revolution against the current ruling class gets co-opted by the current ruling class[1]. The revolution then ends up changing nothing more meaningful than the colors on the flag. Agile was supposed to help developers escape the obstacles of poor management and poor managers. It's really about developers owning the development of the software, and being given more creative authority. Non-developers play a support role, if they're present at all. That part is all fine and dandy, and it's The Good Part® of agile. Let the guys who make software be responsible for making software. Brilliant! Managers, of course, don't want to get marginalized. If they see a movement towards Agile, they would rather bring it in themselves, so that they can control how it's implemented. And they implement it in a way that a) fits their existing biases about software development b) doesn't marginalize themselves[2]. Both of those goals are met by taking the agile process, and turning into The Agile Process (engraved on stone tablets, up on a pedestal). Agile should be less process, but when the transition is implemented by process guys, it just ends up being different process rather than less. And naturally, the one role in agile that ex-managers can step into (aforementioned support role) is more important in this set-up, because it's about owning and managing the process. So the revolution happens, and nothing changes. Instead of developers having more freedom, the old managers just have a new title. That title still comes with the authority to make developers fall in line, except that "in line" now refers to a different set-in-stone collection of steps and rules. tl;dr Meet the new boss, same as the old boss. [1] I'd rather not derail this thread into history and politics so I'm avoiding details. [2] b) is actually a subset of a). One of management's existing biases is that management and process is an important part of software development. This isn't a knock of managers; everyone thinks the same about themselves. Hell, Agile itself basically originates from developers having the same bias. They just happen to be more correct ;).
- Aloisius 15y agoI've been using scrum for about ten years at several companies. Each time I do it, I explain to everyone that the process has nothing to do with getting people to be more efficient or work harder. It has everything to do with helping me estimate when stuff will get done so that I can let all the dependent parts of the company know well ahead of time. If the work being done doesn't get re-prioritized, I can pretty accurately judge about 3 months out and very accurately judge a month out. That lets the rest of the company plan fundraising, PR, sales, etc. This is where I disagree with the author. You do get fairly predictable output out of a group of engineers regardless of their ability as long as they are consistent in their estimates for how long something will take (it doesn't matter if they over or underestimate, just that they do it consistently). You just won't like the results if they are mediocre. I really want to stress how important the whole self-learning and re-adjustment part of the process is (if someone doesn't scream at least once during a retrospective, they're probably just going through the motions.) While I've run "scrum" for 10 years, the details of how each worked were pretty different depending on the teams involved. That said, I tend to hire self-managing, self-learning engineers which scrum works beautifully for. I also am completely comfortable with delegating away large amounts of authority especially given the type of people I hire.
- davesims 15y agoMust be Wednesday. TODO next week: Go collect all of the blog post cycles of "Agile Sucks" -> "No, agile in theory is fine, it's just marketing and implementation that sucks." It's a full-fledged meme at this point. And I think if you distilled all of these posts down to their essence, you'd have a really solid critique and we could build some lessons learned, and the next time someone gets burned by a bad implementation of s/Agile|XP|Scrum/ maybe the narrative will change a bit from "Agile sucks" to something more productive, something closer to "there's that Agile execution thing again, and here's what I did about it." Everything OP says is true, Agile is misapplied, overmarketed and badly executed, and much suffering in the name of "Agile" has happened. But we need to change the story now. This same cycle of "sucks" -> "yeah but" is generating more heat than light. Time to reset and redirect our expectations to something productive. "In time there will be a new movement which paints Agile as broken, inefficient and bad and we’ll get a new brand. That’s the kind of iterative development I’m looking forward to; a new target for our collective disdain ;)" Here we've hit on something. On common refrain in anti-Agile screeds is "Meet the new boss, same as the old boss." And it's true, but instead of cynically setting us up for some other jaded iteration of Good Process Idea -> Marketing Scam/Bad Implementation -> Backlash, let's distill the lessons learned into something a little more focused and circumspect. Let's not cycle through this again, please. Let's set Agile in its proper place, good stuff, bad stuff, the whole thing. And let's tell the right story that might help us stop looking to things like Agile as the One Best Way to do software and see it as the limited tool it is, dependent on many other concerns, such as quality of developer, product focus, political environment, etc. Agile was a great insight in its time, and I think the time is come for a large-scale retrospective by the community to state the lessons learned. One iteration I would really like to see end is "Agile Sucks" -> "But Not Really". Time to move on to the next level, one that acknowledges Agile's failings but doesn't involve a wholesale scrapping of Agile's important insights.
- willvarfar 15y ago(blog author) +1
- davesims 15y agoNice, thanks William.
- huherto 15y agoI try to emphasize the agile principles. I think there is a lot of wisdom there. The most important: "Continuous attention to technical excellence and good design enhances agility"
- Uchikoma 15y agoNot sure where the poster comes from. (The poster seems to confuse Agile in "Agile is a Sham" and the Agile "industry". I can't talk about the Agile "industry" as I'm no part of it or have no contact to it, so I will concentrate on the "Agile is a Sham" part) After introducing Agile/Scrum in 3 companies over the last 10 years, not as a consultant but as a permanent employee, I'd think it has been a success three times. Measuring success with two metrics: Predictable, ongoing results and developer happiness. Developer happiness in agile usually comes from calming down the fury of requirements and wished for features. Sprints do enable developers to focus for 2-3 weeks on one topic instead of being pushed to the most urgent topic of the day by management. Happiness also comes from communicating and working and feeling as a team. I assume the poster has - if he has - a different agile experience. Perhaps he's not a team person or uncomfortable with coordinating and working with others. 10% of the developers I've worked with just don't feel right with agile, it's not their thing. They should not try to adapt to agile from my experience, as it does not work. Better to find a non agile environment that does work for them. From asking developers after agile introductions we had >90% approval rates on the question "Would you like to go back before agile?" and "Would you like to have a different development model?" Scrum in particular is different from, e.g. XP. It focuses on process and - deliberately - says nothing about engineering practices or craftmanship. Coders are free to chose those for themselves. Some struggle on this or think they don't need to have them just because Scrum doesn't prescribe those. Some think Scrum is sh* as it does not talk about engineering practices or developer quality. But this is intentional. Scrum will not make development "work" with bad developers. But it will make good developers work smoother together and make them - if they are team people - more happy from my experience. One final note: Some people here agree that Agile is a Sham and does not work, then citing examples of managers/scrum masters that deliberately did not follow Scrum. Following Aristotelian logic at least this does not make sense. A final final note: I got a very fine and tasty chocolate cake from my current team for birthday, so I might not be doing things that wrong ;-)
- pbiggar 15y agoWell, yes and no, but mostly no. Looking at the collection of things that people refer to as "Agile", some of the practices work for certain teams at certain times. Saying "its all a sham" is as much bullshit as calling Agile a silver bullet that will solve all your woes. (Just because it's not one extreme, doesn't put it at the other). The OP calls out two practices, Scrum and TDD. I've tried "Scrum" at 3 different places, where by "Scrum" they meant "have a stand up meeting". Never worked. For that project! However, TDD has actually been a silver bullet for some tasks. And on other tasks it killed my productivity. Basically, stop thinking there are silver bullets, and figure out what works for your team and project.
- mkramlich 15y agoI do think think that there's a combo of simple techniques and rules of thumb, that, taken together, yield better results, with less ceremony, than Agile. And certainly far better than Waterfall, in the general case. That combo (in my judgement) includes: iterative development, risk-driven prioritization, KISS/YAGNI, note-taking, scripted automation, CLI bias, FOSS, backups, version control and RDD (README-driven development). And several more, but these are among the biggest. Because you don't necessarily need tests. You don't necessarily need pairs. You don't necessary need cards, or standup meetings. You don't need big upfront design. But you do need to produce working code. You should provide enough documentation to help you remember how things work and why, and bring new team members up to speed and/or project inheritors, and you ought to be flushing out assumptions or minimizing your biggest risks as early as you can, when there's still the most time to fix things, workaround, or abandon an approach entirely. These are rock solid, universal patterns I've seen over the decades. And they apply to small projects and large. Solo rockstars, small teams, large, etc. Independent of tech mix and software types. And yes, ultimately the quality of people you have is the most important. They drive everything else: the choice of technology, tools, architecture, prioritization, morale, pace, resilience, etc.
- helmut_hed 15y agoAgile may well be a sham, but this statement: the success of the coding-part of a project is dependent on the calibre of the engineers doing that coding and not the process they follow. seems to me obviously untrue, for >3 engineers, and the larger that count gets, the more process you need. As an engineer I find that statement very appealing, but experience suggests it's off base.