Here's what I would like to see from a consulting company for once. Don't interview the stake holders of the company, they don't use the software like their employees do. They have a high level overview based on feedback from their employees. When you interview them, you're getting second hand information that will likely be missing key points that they forgot to mention or just simply think is obvious and doesn't require mentioning.
So here's what you should do. Over the shoulder review of a representative employee of each department. HR, AP, AR etc. Actively watch and understand the processes they go through. FOR AN ENTIRE 8 HOUR SHIFT.
No, seriously.
Now, you've got a good idea of how its done current.
Then do the stake holder interview to find out what they want to do differently.
Then plan, develop and deploy your software.
I seriously don't get why despite there being a recognized need for understanding the problem scope which everyone one will invest hours in meetings and conference calls talking about, no one actually invests any (significant) time doing, or reviewing the actual process. It's the fastest most efficient way to understand the problem. It would totally diminish months of back and forth "here's what you asked for" "no, that's not what I asked for" development review process that almost _always_ occurs with consultant projects.
Let me tell you why you don't see this happening more often.
I did this on a project a few years back. I replaced a paper workflow process that was taking up two people each in three departments with a web-based workflow that increased visibility, dropped turn-around time from days to minutes, increased accountability and accuracy and trimmed those 16 person hours of processing down to 1-2 per department.
Everyone who directly interacted with the new system loved it. Numerous edge cases that would have been lost in high-level review were caught and integrated from day 1 due to my actually watching people do the job for a day or two per department. The solution has been rock solid (minor maintenance only) for five years.
And I almost lost the job.
The people who sign the checks were furious. The balance of political power between departments were thrown for a loop. One head in particular treated the thing as a near-existential threat. His entire concept of his job revolved around being the authoritative interface for retrieving and maintaining pieces of data that were no longer exclusively under his control. Another flipped out because middle management saw the results as cause to reduce his headcount and budget, and thus importance.
These two departments fought for months, refusing to contribute their shares of budget that were pledged toward modernizing this system.
On a technical and practical level, it was the single best experience I've ever had as a consultant. On a personal and economic level, is was one of the worst. It was some of the hardest money I've ever tried to collect. It was some of the most time and energy I've put into the political and 'sales' side of a job (the part I treat as a necessary evil, but very much evil). The corporation has made out like a bandit in the long run. But I paid the price.
It's simply too easy and financially rewarding to allow a client's political nonsense to screw up every stage of a project. I have less stress, the people who pay me are happier and I bill far more hours.
As with most software, internally developed software included, you don't see better projects more often because the incentives are horribly perverted and stacked against it.
This is why corporate software like SAP is so bad. The guy who writes the cheques to the vendor doesn't do timesheets or whatever. His secretary does his expenses and his travel and his holidays. He never touches the software apart from to look at the dashboard and the final generated reports (which will be whizzy). He literally doesn't know it's miserable to use, and unless "subordinates satisfaction with corporate apps" is his bonus metric, literally couldn't give a flying fuck even if he did know.
Say what you will about large corporations but at the very least they can get this right. I'm working for a 4,000+ company now and we take these steps very seriously during our Engineering design. Also part of the job is working with vendors (Oracle, HP, others) who send people on sight from around the world to work with us (the client) and properly interview for the right knowledge.
Call me bias, but a lot of smaller companies overlook tried and tested standards. Proper requirement elicitation was documented in IEEE Computer Society SWEBOK prior to 2004 and even that is a summary of important knowledge to Software Engineering profession. Why is it that when a new company comes along with a truly innovative concept they feel they can innovate the rest of the process as well?
Part of why I love my current job is because we focus on the actual users of the software and get feedback from them, not the executives.
It made the initial sales much harder, but the results are much stronger and we've gained such a strong reputation that the software almost sells itself.
You're exactly right – but you realize, there's a whole group of people -- a whole discipline, in fact, that does exactly what you're talking about, right?
We're designers.
And we do have & run consultancies. Places like IDEO, Frog Design, Adaptive Path, RED, Doblin (Part of the Monitor group now), Gravity Tank, Teague -- and many, many more.
User centered design processes should be backed up by rich user stories, that come from real user experiences. The only way to do that is to go out in the field and get exposure to the who, what, when, why and how of what the users are doing, want to do/need to do and how they use your product/service.
And if you do it right, you can make a much more successful product that sells a lot better while actually doing some good for the users.
This is exactly how we did process review / analysis at my last company. It was always awesome to uncover the differences between what the stake holders thought the current process was, and what the people actually doing it did.
After that we tried to reconcile the differences and usually made the in-software process a mixture of the two (where possible)
Few seem to realize that source code is but the most thorough "blueprint" of the product. That compilation - to wit construction of the actual product from the blueprint - is nigh unto instant and free means everyone overlooks it as the actual construction process, akin to actually building a bridge from detailed plans (except you get one shot at building a bridge, while you can recompile every few minutes). Ergo, "analysis", at greatest detail, _is_ coding. That we iterate so much comes from the continued newness of the technology and the relative complexity of the products; bridges are well-understood and iterating the design of one is minimal.
To the site's point (or missing thereof), the notion of "don't start coding until the analysis is complete" is a gross misunderstanding that coding IS analysis.
The inanity of reinventing the waterfall model is obvious to HN readers.
Meh. This is hardly the most ridiculous thing I have seen on the internet. I am sure this methodology will work sometimes for some clients. Heck, I bet a lot of startups here on HackerNews are using similar methodologies - but without the early usability testing. If nothing else, at least this company are differentiating themselves. Haven't seen a lot of other consultancies get posted up here on HackerNews.
Every project is different. We should try and not be too dogmatic about these things.
The ridiculous aspect of this page is the quote "We've invented a development process tbat's completely unique in the industry.", after which they describe a process that looks entirely like waterfall. It's an entertaining fallacy.
This was posted on HN so that we can make fun of it, and I think we're right to do so. You can be as wishy washy as you like about different situations requiring different processes, but have you ever seen somebody successfully isolate software engineering from coding and put them in sequence?
I agree with you. After a few years in the field, I'm now convinced that it is how most software is made. Even in the "Agile" startups and such, processes are often implemented as waterfall, or large parts of projects comply with the waterfall model.
While it fails sometimes, there are plenty of success stories about the waterfall model, like it or not.
Actually, this is refreshingly honest compared to the "agile" methodologies. Having worked with plenty of supposedly agile consultants I can tell you they basically do waterfall it's just their cascading stupidity starts with code and then wanders around writing unit tests until the client is tapped out. At least this is doing some actual user interface design and usability testing.
Then again, I doubt these guys do this since it's all marketing.
The difference between "agile" and "waterfall" isn't that easy to pin down.
Some people think of "agile" as just going through their full waterfall process every month or every two weeks.
Other people insist the core of "agile" is TDD, others claim nonsense, TDD is just as much part of "waterfall", and yet others don't see any point in TDD for their "agile" process.
Really? Claiming to have invented the most well know and also the worst software development process is honest? It's a bold-faced lie written only to get clients.
One can only imagine what actually happens in communication once they have a client. If the marketing is a complete lie, then I can't imagine the company itself can be trusted.
Am I in the minority who uses both agile and waterfall methods?
The long and the short of it for me is this: There's two ways to solve problems. Agile helps immensely when you are figuring out how the solution would work. When you're solving a problem that might be solved in manual processes largely, Waterfall can help a lot, but not alone.
For unknown solutions, agile gives you a lot of iterative benefits.
For known solutions, waterfall with some agile feedback loops gives you incremental benefits.
What's the difference?
Sometimes, in a business, they have a great process already. It's in paper, or multiple systems, but they have their way of doing things that works. I believe it's called their competitive advantage.
Othertimes, a business is facing a problem for the first time, and wonder "how do we solve this". In this case, doing a big upfront design is a waste of time, starting small and staying flexible is most important.
For me, this mindset of doing both is critical, not one or the other at all times. You simply miss out on too much if you don't use agile, and you run around too much if you ignore waterfall when a solution exists.
Waterfall works where it's a known process, like building a house. You can have agile loops in there when building a house and improve it as you go.
When you're trying to build a new building that's never been built before, an iterative, feedback-centric approach like Agile is a lot more beneficial.
If a company focuses on taking something like Waterfall and introducing feedback loops (agile) like this epicenter thing, is it not a bit clearer than the black-box voodoo out there? Maybe it's just me, but I applaud anyone trying to make software easier. It just shouldn't be a dogmatic, or religious dismissal.
Its really not quite as bad as it looks at first glance.
Step 2: "we design an interactive prototype" allows them to get the feedback that really makes more agile methods work. You don't need to constantly iterate during development if you iterate properly during prototyping. I certainly wouldn't advocate this method but its not a vanilla waterfall method.
If one reads the paper most commonly cited as the source of the waterfall methodology he or she will discover that the author of the paper recommends doing something akin to prototyping before designing the real program. The paper is actually a critique of the process now commonly referred to as waterfall and the author does not recommend using the process as first presented in the critique.
Agreed - this isn't as poisonous as the usual waterfall techniques are.
And frankly, if you're working on a massive project that has strict requirements (either regulatory or functional) then up-front analysis has a lot going for it.
Sadly, I don't think this is a joke.
Method as described:
"Analysis
We don't write a line of code until we know your business as well as the people who keep it running every day. "
Method as implemented:
"Analysis
We never write any code"
tl; dr: I think Waterfall vs. Agile religious war is wrong; it's mostly about that you can't hit a moving target without a feedback loop.
That's why I don't think the discussion should really be Waterfall vs. Agile, it should be about feedback loops in the process. There are circumstances in e.g. military or medical projects where you absolutely, positively, need to work to an approved spec with time & budget analysis, etc.; it seems to be common outside of software (I don't see much of agile-built bridges or jetplanes). There are those parts of the process that can be predicted (and have their cost estimated) relatively well - those you plan in advance (aka. waterfall). There are others, where you only have a somewhat vague and changing final goal - there your only real solution is a process with a tight feedback loop (aka. agile).
Now you can look at software process on different levels - what might look like waterfall from the high level may be in fact a collection of very agile sub-processes. Which may contain waterfally sub-levels (like, isn't a single iteration of TDD red-green-refactor cycle a bit waterfally? ;). So I think instead of thinking about "agile vs. waterfall" we should consider what feedback loops we need where, and how tight they should be.
Agreed. Waterfall is usually better when you do client projects. Agile would be better when you do your own product, at the same time Agile may lead to cost overrun.
Maybe they aren't aware of Waterfall. Pete Campbell on Mad Men had a great quote; "You know what? I have good ideas. In fact, I used to carry around a notebook and a pen, just to keep track. Direct marketing? I thought of that. It turned out it already existed, but I arrived at it independently."
If they are such experts, how would they not be aware of waterfall? Either they are idiots who have no clue about software development methodology, or they are just lying (either to their customers or themselves). It's not like it's hard to find a reference to waterfall if you bother to look.
The site looks nice. Whether or not their methods are the best, I've worked for quite a few folks who would find their presentation very appealing. Because they've been burned by companies who wrote code for them that didn't meet their expectations, they're excited about a company that will actually listen to their expectations thoroughly before the process begins.
We've invented the mobile un-friendly site! We are industry pioneers!
How are we missing the -
Paperback + Consultation for $250
Complete 45 page book (45 pages?)
Ships within 2 days
1 hour 1-on-1 consultation
Expert implementation advice
They sound like experts to me. 37signals book Rework only has 288 pages $11. Page count doesn't mean everything, but clearly 37sig is stuffed with fluff. All you need is 45 to change to the game up.
I'm a non-profit and small business owner, I'm sold!
In an ideal world, Waterfall will lead to a worse product than an iterative one. We don't live in the real world, and I expect these guys deal with clients who regularly fall into the -from-hell[1] category. I would bet that many people posting here aren't running consultancies and don't have experience with such clients (or any clients).
In such a situation, it is in fact entirely rational to develop a lightweight, low cost UI that a non-technical person can commit to, i.e. sign a contract. The developer can then go off and implement it with a very clear legal case if the client then chooses not to pay because "its not what we wanted".
Its not what I do, and I know that many here take a more involved approach to their clients, but its undeniable that it is a successful business model, and in some cases I believe it can produce some result where otherwise there might be none. Equally I'm sure it produces results that are ultimately not used, but where the company still gets paid.
Doesn't look as terrible as "true" waterfall, but I think this is just marketing fluff to win people over by telling them about your rock-solid practices.
If they have an arrow that looped from Beta Testing back into Interface Design/Usability/Engineering/Coding, you'd probably end up with what most shops do anyways, speaking in broad strokes.
My founding business partner Ryan McMinn spoke at an open source conference in Toronto a few years ago. In the talk he explained how and why we built Unspace the way that we did.
He talks extensively about the need to work directly with the end users of the system, instead of the management. The realization that specifications are usually nothing more than mutually assured destruction.
Pretty much the only thing that's changed in five years is that the scale of our company has grown, and now we do indeed have contracts with our clients to protect us from bad things.
Anyhow, I highly recommend the video if you're looking for an in-the-trenches perspective.
I actually know Clark Valberg, the founder of Epicenter Consulting, and did some work with him a few years back; he's a great guy. You guys can criticize him all you want, but he actually cares.
We should direct our efforts towards the bloodsuckers, not the people giving blood.
We you say "he cares" I presume you mean "cares about slick marketing to clueless clients". Because Epicenter obviously doesn't give a damn about either the truth or software engineering.
I'm sorry, but the people who claim the one true method is keeping the programmers locked in the basement without real world input or feedback are the bloodsuckers.
[+] [-] giberson|14 years ago|reply
So here's what you should do. Over the shoulder review of a representative employee of each department. HR, AP, AR etc. Actively watch and understand the processes they go through. FOR AN ENTIRE 8 HOUR SHIFT.
No, seriously.
Now, you've got a good idea of how its done current.
Then do the stake holder interview to find out what they want to do differently.
Then plan, develop and deploy your software.
I seriously don't get why despite there being a recognized need for understanding the problem scope which everyone one will invest hours in meetings and conference calls talking about, no one actually invests any (significant) time doing, or reviewing the actual process. It's the fastest most efficient way to understand the problem. It would totally diminish months of back and forth "here's what you asked for" "no, that's not what I asked for" development review process that almost _always_ occurs with consultant projects.
/rant
[+] [-] roc|14 years ago|reply
I did this on a project a few years back. I replaced a paper workflow process that was taking up two people each in three departments with a web-based workflow that increased visibility, dropped turn-around time from days to minutes, increased accountability and accuracy and trimmed those 16 person hours of processing down to 1-2 per department.
Everyone who directly interacted with the new system loved it. Numerous edge cases that would have been lost in high-level review were caught and integrated from day 1 due to my actually watching people do the job for a day or two per department. The solution has been rock solid (minor maintenance only) for five years.
And I almost lost the job.
The people who sign the checks were furious. The balance of political power between departments were thrown for a loop. One head in particular treated the thing as a near-existential threat. His entire concept of his job revolved around being the authoritative interface for retrieving and maintaining pieces of data that were no longer exclusively under his control. Another flipped out because middle management saw the results as cause to reduce his headcount and budget, and thus importance.
These two departments fought for months, refusing to contribute their shares of budget that were pledged toward modernizing this system.
On a technical and practical level, it was the single best experience I've ever had as a consultant. On a personal and economic level, is was one of the worst. It was some of the hardest money I've ever tried to collect. It was some of the most time and energy I've put into the political and 'sales' side of a job (the part I treat as a necessary evil, but very much evil). The corporation has made out like a bandit in the long run. But I paid the price.
It's simply too easy and financially rewarding to allow a client's political nonsense to screw up every stage of a project. I have less stress, the people who pay me are happier and I bill far more hours.
As with most software, internally developed software included, you don't see better projects more often because the incentives are horribly perverted and stacked against it.
[+] [-] gaius|14 years ago|reply
[+] [-] TheCapn|14 years ago|reply
Call me bias, but a lot of smaller companies overlook tried and tested standards. Proper requirement elicitation was documented in IEEE Computer Society SWEBOK prior to 2004 and even that is a summary of important knowledge to Software Engineering profession. Why is it that when a new company comes along with a truly innovative concept they feel they can innovate the rest of the process as well?
[+] [-] SatvikBeri|14 years ago|reply
It made the initial sales much harder, but the results are much stronger and we've gained such a strong reputation that the software almost sells itself.
[+] [-] incongruity|14 years ago|reply
We're designers.
And we do have & run consultancies. Places like IDEO, Frog Design, Adaptive Path, RED, Doblin (Part of the Monitor group now), Gravity Tank, Teague -- and many, many more.
User centered design processes should be backed up by rich user stories, that come from real user experiences. The only way to do that is to go out in the field and get exposure to the who, what, when, why and how of what the users are doing, want to do/need to do and how they use your product/service.
And if you do it right, you can make a much more successful product that sells a lot better while actually doing some good for the users.
Not a bad line of work, IMHO.
[+] [-] grecy|14 years ago|reply
After that we tried to reconcile the differences and usually made the in-software process a mixture of the two (where possible)
[+] [-] ctdonath|14 years ago|reply
To the site's point (or missing thereof), the notion of "don't start coding until the analysis is complete" is a gross misunderstanding that coding IS analysis.
The inanity of reinventing the waterfall model is obvious to HN readers.
[+] [-] tpatke|14 years ago|reply
Every project is different. We should try and not be too dogmatic about these things.
[+] [-] haasted|14 years ago|reply
[+] [-] goldmab|14 years ago|reply
[+] [-] Zarathust|14 years ago|reply
While it fails sometimes, there are plenty of success stories about the waterfall model, like it or not.
[+] [-] zedshaw|14 years ago|reply
Then again, I doubt these guys do this since it's all marketing.
[+] [-] bh42222|14 years ago|reply
Some people think of "agile" as just going through their full waterfall process every month or every two weeks.
Other people insist the core of "agile" is TDD, others claim nonsense, TDD is just as much part of "waterfall", and yet others don't see any point in TDD for their "agile" process.
tl;dr:
It's all bullshit, all the way down.
[+] [-] jameskilton|14 years ago|reply
One can only imagine what actually happens in communication once they have a client. If the marketing is a complete lie, then I can't imagine the company itself can be trusted.
[+] [-] sleight42|14 years ago|reply
I had myself a nice little nerd slap fight on twitter earlier today about this post. "Agile" without up front planning and research is just dangerous.
[+] [-] j45|14 years ago|reply
The long and the short of it for me is this: There's two ways to solve problems. Agile helps immensely when you are figuring out how the solution would work. When you're solving a problem that might be solved in manual processes largely, Waterfall can help a lot, but not alone.
For unknown solutions, agile gives you a lot of iterative benefits.
For known solutions, waterfall with some agile feedback loops gives you incremental benefits.
What's the difference?
Sometimes, in a business, they have a great process already. It's in paper, or multiple systems, but they have their way of doing things that works. I believe it's called their competitive advantage.
Othertimes, a business is facing a problem for the first time, and wonder "how do we solve this". In this case, doing a big upfront design is a waste of time, starting small and staying flexible is most important.
For me, this mindset of doing both is critical, not one or the other at all times. You simply miss out on too much if you don't use agile, and you run around too much if you ignore waterfall when a solution exists.
Waterfall works where it's a known process, like building a house. You can have agile loops in there when building a house and improve it as you go.
When you're trying to build a new building that's never been built before, an iterative, feedback-centric approach like Agile is a lot more beneficial.
If a company focuses on taking something like Waterfall and introducing feedback loops (agile) like this epicenter thing, is it not a bit clearer than the black-box voodoo out there? Maybe it's just me, but I applaud anyone trying to make software easier. It just shouldn't be a dogmatic, or religious dismissal.
0.02.
[+] [-] brd|14 years ago|reply
Step 2: "we design an interactive prototype" allows them to get the feedback that really makes more agile methods work. You don't need to constantly iterate during development if you iterate properly during prototyping. I certainly wouldn't advocate this method but its not a vanilla waterfall method.
[+] [-] absconditus|14 years ago|reply
[+] [-] ctdonath|14 years ago|reply
[+] [-] AndrewDucker|14 years ago|reply
And frankly, if you're working on a massive project that has strict requirements (either regulatory or functional) then up-front analysis has a lot going for it.
[+] [-] bruinseve|14 years ago|reply
[+] [-] davidu|14 years ago|reply
[+] [-] tintin|14 years ago|reply
But maybe you know this method as these steps (which are the same): Concept -> Functional design -> Graphic design -> Building -> Testing -> Deploy.
Nothing strange about that. Take a look at the IBM Rational Unified Process http://en.wikipedia.org/wiki/IBM_Rational_Unified_Process
I just think this is a hyped site trying to sell there book.
[+] [-] Ronnie76er|14 years ago|reply
[+] [-] arctangent|14 years ago|reply
But they're probably running a computer model of the jet (and its systems) under various simulated scenarios.
They're also probably building some full-scale mock-ups to test in wind tunnels.
And they also have test pilots to fly things which sometimes never make it into wide scale production.
So, I'd argue that there is some iteration going on there.
[+] [-] pnathan|14 years ago|reply
In the 1950s, test pilots were being killed at the rate of about one a week[1]
[1]http://en.wikipedia.org/wiki/Test_pilot
[+] [-] TeMPOraL|14 years ago|reply
That's why I don't think the discussion should really be Waterfall vs. Agile, it should be about feedback loops in the process. There are circumstances in e.g. military or medical projects where you absolutely, positively, need to work to an approved spec with time & budget analysis, etc.; it seems to be common outside of software (I don't see much of agile-built bridges or jetplanes). There are those parts of the process that can be predicted (and have their cost estimated) relatively well - those you plan in advance (aka. waterfall). There are others, where you only have a somewhat vague and changing final goal - there your only real solution is a process with a tight feedback loop (aka. agile).
Now you can look at software process on different levels - what might look like waterfall from the high level may be in fact a collection of very agile sub-processes. Which may contain waterfally sub-levels (like, isn't a single iteration of TDD red-green-refactor cycle a bit waterfally? ;). So I think instead of thinking about "agile vs. waterfall" we should consider what feedback loops we need where, and how tight they should be.
[+] [-] johnx123-up|14 years ago|reply
[+] [-] dylancm|14 years ago|reply
[+] [-] shotgun|14 years ago|reply
[+] [-] tpimental|14 years ago|reply
[+] [-] joshsusser|14 years ago|reply
[+] [-] bernardes|14 years ago|reply
This is freakin' unbelievable. ROFL
[+] [-] blueprint|14 years ago|reply
[+] [-] bmccormack|14 years ago|reply
[+] [-] fypomg|14 years ago|reply
How are we missing the -
Paperback + Consultation for $250 Complete 45 page book (45 pages?) Ships within 2 days 1 hour 1-on-1 consultation Expert implementation advice
They sound like experts to me. 37signals book Rework only has 288 pages $11. Page count doesn't mean everything, but clearly 37sig is stuffed with fluff. All you need is 45 to change to the game up.
I'm a non-profit and small business owner, I'm sold!
[+] [-] buff-a|14 years ago|reply
In such a situation, it is in fact entirely rational to develop a lightweight, low cost UI that a non-technical person can commit to, i.e. sign a contract. The developer can then go off and implement it with a very clear legal case if the client then chooses not to pay because "its not what we wanted".
Its not what I do, and I know that many here take a more involved approach to their clients, but its undeniable that it is a successful business model, and in some cases I believe it can produce some result where otherwise there might be none. Equally I'm sure it produces results that are ultimately not used, but where the company still gets paid.
[1] http://clientsfromhell.net/
[+] [-] MattRogish|14 years ago|reply
"Hal was the first to introduce the concept of building an interactive demo as a key part of the software development process"
Really? I can't imagine that's true
[+] [-] fijal|14 years ago|reply
[+] [-] tryke|14 years ago|reply
[+] [-] reledi|14 years ago|reply
[+] [-] wingo|14 years ago|reply
[+] [-] manuscreationis|14 years ago|reply
If they have an arrow that looped from Beta Testing back into Interface Design/Usability/Engineering/Coding, you'd probably end up with what most shops do anyways, speaking in broad strokes.
[+] [-] peteforde|14 years ago|reply
http://www.youtube.com/watch?v=lIQIZ0NIkxk
He talks extensively about the need to work directly with the end users of the system, instead of the management. The realization that specifications are usually nothing more than mutually assured destruction.
Pretty much the only thing that's changed in five years is that the scale of our company has grown, and now we do indeed have contracts with our clients to protect us from bad things.
Anyhow, I highly recommend the video if you're looking for an in-the-trenches perspective.
[+] [-] willurd|14 years ago|reply
We should direct our efforts towards the bloodsuckers, not the people giving blood.
[+] [-] rickmb|14 years ago|reply
I'm sorry, but the people who claim the one true method is keeping the programmers locked in the basement without real world input or feedback are the bloodsuckers.