Hacker News new | past | comments | ask | show | jobs | submit login
Business Requirements are Bullshit (steve-yegge.blogspot.com)
116 points by mqt on Aug 12, 2008 | hide | past | favorite | 84 comments



I have read Steve's articles before with a certain amount of respect, but this time he addresses an area very near and dear to me, and all I can say about this one is:

I call bullshit.

This article was so full of it, the more I read, the more I had to change into higher waders.

As I normally do when responding to a post, I started pulling out the statements I wanted to respond to, highlighting them, and putting my response below. After 10 minutes, I had the Magna Carta. This is simply too much wrong with this article to respond in the usual way.

So instead, I'll just say this...

Get this and get this good, fellow hackers: When anyone says "analysis" or "requirements gathering" is bullshit, there can only be one reason why: they don't know how to do it.

Sure, there are antecdotes and case studies of people building great software without talking to users first, but they are in the extreme minority, and anyone proposing doing this all the time is doing a disservice to his readers.

In order to find out what people need from software, you don't "grill" them, "interview" them, or "role play" (whatever that means). You get with them and "live their lives" and suffer with them, understanding what they must accomplish, how they must do it, and what's stopping them now. How do you do this? Any way you can. Change uniforms and shovel shit with them. Do their job for a day. Put them together in a room, feed them, give them beer (optional), and get them to bitch about it. Identify every single data element related to their tasks. Connect tasks and data to objectives (You may find that half of what they already do is a waste of time.)

In short, do whatever it takes to find out what you need to know to develop your software. This is hard work. Hardly anyone does it now, and relatively few have ever done it. Steve Yegge certainly hasn't. If he had, the data in this rant would have been very different.

Sorry, Steve, I normally enjoy your columns. Do us all a favor and don't say something can't be done because you've never done it. Next time, write about something you've already done. Then we can all resume learning from you again.


"You get with them and "live their lives" and suffer with them, understanding what they must accomplish, how they must do it, and what's stopping them now. "

This is a great idea, and the real way to address the problem Steve suggests: Become the business.

However, the majority of your criticism of Steve is way off base, because the methods he describes are not strawmen, but the actual methods described in most of the software engineering requirements books. If you look at Karl Wiegers book, Software Requirements, which is considered by many to be a leading reference on the subject, it describes a process much like the one Yegge criticizes.


...actual methods described in most of the software engineering requirements books...

Thank you, Matt. You have just demonstrated my number one concern about the nature of discourse here on hacker news. The issue of "book contents" vs. real world experience.

I don't know you and certainly don't mean to pick on you, but calling my criticism of Steve's article "way off base" merits this response...

First a little of my background. Even though I've been a hacker my entire professional life, I had the good fortune to be mentored by an industrial engineer from a user department. He did one thing extrememly well and taught me how to do it: solve business problems to make money. This is the stuff that is rarely taught in any book, much less one that is "considered by many to be a leading reference on the subject".

Shocking as it may seem, many books on business systems and IT offer very little and many are simply wrong.

I have not read Karl Wieger's book and feel out of place evaluating it. However, I did read the synopsis and all 45 reviews on Amazon. Nowhere did I see mention of any of the things from my OP that I know work every time. Instead I saw lots of mention of techniques like rational rose, entity-relationship diagrams, use cases, and modeling. As anyone who has successfully conducted analysis will tell you, these techniques were never actually designed to achieve results; their purpose is to control the people and the process, not the outcome.

I stand by my original criticism of Steve's article. He is dead wrong about analysis. He doesn't respect it, probably because he doesn't know how to do it. Your comment makes me wonder if the same holds true for you.


Part of the problem is that talking about the analysis process is like writing a textbook on romance. How do you fall in love? Is there a set of best practices and a six-sigma process? Well, no. It's an art. It depends entirely on the situation and on the parties involved. You get better at it with practice. There are rules of thumb that are definitely helpful, but you have to know when to break them. Unfortunately, there's also a great deal at stake: If you screw it up it can ruin your life, but if you get it right you can be happy for decades.

The literature on the subject tends to gravitate towards formal techniques: Dance instruction, sex education, grooming, fashion. Not so much because these are the essence of romance, but because they're much easier to describe in print. And because the people who turn to books are not the ones whose relationships are going well, but the ones who need help -- and when the going gets tough, formalism can be a very useful tool. Nobody consults a lawyer on a first date, but when you need a divorce formal procedures come in really handy.


"How do you fall in love? Is there a set of best practices and a six-sigma process?"

I don't know, but "The Six-sigma Process for Romance; Taking the Guesswork out of Finding Love" sounds like the title of a New York Times Bestseller to me.


Sounds like a good way to address "Startup Ideas We'd Like to Fund" #8 - Dating :-)

http://ycombinator.com/ideas.html


Seven-Sigma dating. It's like six sigma only we don't know what we're talking about.

I'm with several of the commenters. There's a big difference between books and reality. I'm not going as far as edw with his "modeling controls the discussion" (e-gads! Get this man a UML primer and be quick about it!) but there's a long, long way from a guy peddling a book to a guy you'd actually want helping you to do anything.

I'm not throwing books out. Not by any means. Lots of my friends have written software books and I'm peddling one myself nowadays. Got a bookcase full of some good and some not-so-good books. But it's a medium, and the medium has its quirks.


I think that mattmcnight's point was that Yegge is criticizing an accepted definition of requirements analysis. So, edw, when you say "he doesn't respect it, probably because he doesn't know how to do it" you are a bit off base - you're referring to a practice which is different from the one matt and Yegge are talking about. But you're probably right that they aren't familiar with the kind of requirements analysis you're talking about. It also seems like you're agreeing with them when they say that "requirements analysis is bullshit" - because you think the practices they're referring to are worthless.

That said, I am very interested in the things that you know work every time. I'm sure I'm not the only one.


Yegge is criticizing an accepted definition of requirements analysis

So his title (Business Requirements are Bullshit) was just bait. I guess I took it.

I once wrote a hn post with a lot more "meat on the bones" about what works. Here it is:

http://news.ycombinator.com/item?id=84977


Of course his title was bait! What else could a title like that be!? :-)

I also think that your response is off-base though. Taking your own statements:

1) Steve is wrong to call "Requirements gathering" bullshit because you know how to do it properly

2) "Requirements gathering" as taught in most accepted books and other texts is bullshit

If you then throw in:

3) Steve was referring to the "Requirements agethering" as taught in most accepted texts (and, I'll add, practiced in many large organisations).

Then we get:

4) You're referring to your own special brew of "Requirements gathering", which has little to do with what Steve was talking about!

Unfortunately, when most people say "Requirements gathering", they refer to the standard, accepted processes taught in books and large consulting companies. And those, as Steve declares, are largely bullshit. I worked in a large, process-driven IT consulting firm for 4 years, and I can affirm without a doubt that the processes they used to gather requirements would fail miserably at attempting to produce a great start-up product.


I think Yegge goes beyond that, though. He presents "make something you, yourself, want" as the key to making something others want. If I understand edw519 correctly, he is saying "bust your butt and do a lot of very hard work to see the world through your customers eyes," in order to to make something others want.


'Make something you yourself want' is what I would recommend to hackers in general.

No offense to them, but when it comes to understanding what others want, they aren't able to do it, and often lament, criticize, put down, or devalue other people's actions or responses that don't make sense (instead of trying to understand them). For instance, many hackers can't fathom why so many people use Facebook (and don't try to understand that target population, but just ignore it or write a blog post about how Facebook has no value to them).

If you have the ability (and I really think it is a skill that you have to train) to understand other people and their motivations and needs, then I would suggest doing what edw is saying. But, from experience trying to teach my own hacker friends, this ability is very hard to learn.

Unfortunately for hackers, making what they themselves want often only caters to a small niche market in the vast world of people out there, so it might be useful to invest some time in learning how to understand other people, or team up with someone who has that ability in one form or the other.


The "business requirements gathering" Yegge is railing against isn't just book knowledge, it is standard operating procedure at most "consultancy" type shops. Even large product firms and small product startups do it. He gives an example of doing it at HP.


Again, I don't think he or I are criticizing what you're talking about when we would say business requirements are BS. Steve probably agrees with you. His target audience is the people attempting to learn what is, unfortunately, standard industry practice. I have had the misfortune to work on projects with 3 layers of requirements analysis between developer and user. What you, me, Steve and fortunately most of the hackers here know is that communicating requirements via any form of written documentation is necessarily inferior to richer forms of communication and deeper levels of understanding. Sadly for the socialists, it puts many requirements analysts, a job for which I can't seem to find anyone who would be considered unqualified, out of work. :-)


Based on your comment, you basically agree with Steve's argument. You agree with him that "grilling" and "role playing" don't work. This is precisely what he meant. He then goes on to argue that people should build products that they want for themselves. You want people who build products to "live [their users'] lives" in order to understand the users' tasks. Sounds quite similar to me.


"In short, do whatever it takes to find out what you need to know to develop your software. This is hard work. Hardly anyone does it now, and relatively few have ever done it. Steve Yegge certainly hasn't"

For me, the point Steve makes is that the optimum is to build for yourself. The feedback loop is instant. That's where the best software gets written. When developers wake up at 3am with some idea for a feature that would make the software they want, work better.

If you're trying to write software for others, it's going to end up as mediocre and probably not entirely what they wanted.


If you're trying to write software for others, it's going to end up as mediocre and probably not entirely what they wanted.

Stop for a minute and notice how absurd this statement is.

99.9% of all software ever written was for others. Was it all mediocre and "not entirely what they wanted"?

This is the entire reason for systems analysis and requirements specification. You don't need to do any of this for the software you're writing for yourself. You must do all of it and do it well when writing software for others; that's how you insure that it's exactly what they want.


99.9% of all software ever written was for others. Was it all mediocre and "not entirely what they wanted"?

Having lived and breathed (and somehow survived) in the enterprise environment that employs the vast majority of the programmers out there, I can agree with that proposition whole-heartedly.

Yes, 99.9% of the software that gets written is mediocre at best. A shockingly large proportion of it is downright abysmal, but most of it is mediocre. Thankfully, we don't get to see most of that software since it is safely locked away inside the mega-corporations that pay hordes of programmers to write it.


99.9%? That's just insane. You're saying that all the games developers never play their own games?

How about people writing languages, compilers etc. You don't think they use them??

I'd say the majority of open source software is written for yourself rather than others. People contribute the most when they are using that software.

You don't have to be the only customer/user of your software, but it helps to be a customer/user of your own software. That's what I mean by writing for yourself.


There are over 800,000 programmers working in the U.S. alone, an overwhelming majority employed by someone else.

http://answers.google.com/answers/threadview/id/43888.html

I'm saying that the ERP, accounting, banking, claims processing, ecommerce, order entry, scientific, etc., etc., etc. software they work on is for someone else. They dwarf those working on games, compilers, and open source.

Welcome to the real world.


Most: ERP, accounting, banking, claims processing, ecommerce, order entry software sucks.

Scientific software is often started by someone who uses it and tends to work well.


Most: ERP, accounting, banking, claims processing, ecommerce, order entry software sucks.

You're probably right about that.

But enough of it works to run the world. No small feat.


There's a yawning chasm between "works" and "doesn't suck".


Where did I say you have to not be employed by someone else??? That's pretty much irrelevant.


I think there's a difference between an engineer working for someone, and the person making the product decision. If you're a developer for a software company building accounting software, and you don't have much use for accounting software personally, you're probably fine. But if you're defining the product, you're much better off if you've been a user of accounting software in the past.


I interpret the post as just a long rantish way of saying: "If you want to write good software, you've also got to use it."

In my experience, there is a lot of software out there that is deemed valuable by management, produces good ROI, but is despised in some way by its users. I'd say the majority of it. (And I've been in many dozens of shops as a consultant.) That will fly for internal software for a big company, but not for a web startup.

Another way of saying it: really doing "systems analysis and requirements" right puts you in the user's shoes. That's the part that matters, not the artifacts produced by the process. (I'm preaching to the choir here, I know.) In fact, the "systems analysis and requirements" process matters not a bit, only the result, which should be getting the real user experience into the heads of development.


The Apple process seems to be "make something Steve Jobs wants."

It seems to work pretty well.


I'll second that call.

Formula for blog entry:

1) Pick an area that most newbies don't get (ie, requirements) 2) Blather on for a while about all the ways they are done wrong 3) Miss the point of the topic. In requirements, you list what you do, then do it. Instead confuse key terms, like "user" and "customer", or "grill" with "be immersed in" 4) Try to be funny 5) Make sweeping conclusions that are obviously incomplete in the real world "Code only for yourself" -- so everybody with a need now has to have a programmer with the same exact need? Wow. 6) Throw in some generally accepted wisdom ("find something good and take stuff out") as a way of tossing the crowd a bone 7) Profit!

As a general rule of thumb, if somebody comes to you with a common phrase from software engineering and makes a sweeping statement (a friend just blogged "reviews are worthless!") then they are either pulling your leg a little bit or don't know what the heck they are talking about. The usual method of attack is to describe how something is commonly done and then disparage the concept by way of association.


If you don't eat their sandwiches, then you'd better have a LOT of friends who eat them every day, or you're breaking the cardinal rule

The point of that long winded article is don't build something unless you are going to use the product or personaly know a lot of people who will. Never ask people you don't know what they want it's stupid. Take the segway it's cool but it's clearly something people want in the abstract even if it's not useful 99% of the time which is the type of thing you build when you ask people what they want without having any idea what you want to build.


An example of the opposite as a datapoint: We've all eaten institutional food cooked by people who are following a recipe they may not particularly care a whole lot about and probably won't eat their own cooking.


We are developers so I think the question is the rate of adoption of new recipe's at McDonalds? They are spending money on new recipe's and advertising them etc but how many of there new ideas catch and are still in use in 5-10 years? And how many of the successes are based on what someone wants to eat vs. what they think other people might buy.


At a previous job, I was tasked with automating an industry that had not seen much automation at all. I was told that we had someone in-house who "knew the industry" and "could be used as a resource", but this person was only ever on one side of the transaction, and that side wasn't the majority of the process we were trying to automate (it was like trying to computerize a retail checkout process and your "expert" was someone who had only ever waited in line to pay).

When I said I'd like at least a month to actually go and do the jobs of the people and companies in the target demographic, I was told we didn't have time for that.


I think that Mr. Yegge missed the real question - but the rant was worth it. I particularly liked "The easiest way to build a product that kicks ass is to start with someone else's great idea (camcorders, for instance), and take stuff away."

I suspect what the "business correspondent" wanted to know was something more like:

"My customer wants me to build him a new billing system. Their top managers have some defined strategic objectives but no-one I have met seems to actually know what this system should do in any detail. However, they can all detail the bad things that would happen if it did not do (whatever it is) perfectly from day one. Now how do I find out what to build them?"

Now that question is the one that development teams face every day.


And would the answer then be, join the billing the team for while, learn their processes, and then build a system to make your job better and provide value to the project sponsor.


I'd like to point out that this article completely ignores most specialty or enterprise markets. As a maker of insurance software, we employ some people who were former insurance agents/adjusters, but none of our developers are, and our only real hope for understanding exactly what has to go into something like a policy administration system is to get out there and talk to customers and potential customers. Even within an insurance company, the developers still won't have a clue because it's not a product they themselves would ever use, and they'll have to rely on someone else communicating the requirements to them.

The same is probably true of just about any other business-focused software; most developers aren't hedge-fund traders, auto mechanics, laywers, hotel managers, etc. yet somehow people manage to build specialized software for those fields. You need people in the organization that understand those fields and what's involved, but the motto of "make something you yourself want" just doesn't apply when you're writing software to run an entirely different kind of business. Developers can be mountain bikers on the weekends, but they're generally not insurance agents or doctors in their spare time.


True enough. I deal with "enterprise" software all the time, and I found that it is all horrific. Terrible UIs, almost invariably terrible performance, chronic instability. I'm afraid that, if Steve is right and that to build something good it must be built for the builder, there will never be good "enterprise" software.

Also: requirement gathering in that market is just as frustrating as Steve says it is in the consumer market. I've dealt with lots of people who ask for features and then change their minds or realize they didn't really know what they wanted.


"most developers aren't hedge-fund traders, auto mechanics, laywers, hotel managers, etc. yet somehow people manage to build specialized software for those fields. "

But imagine how much better the software will be when the developers know as much as hedge-fund traders, auto mechanics, etc. If you look at a book like Martin Fowler's Analysis Patterns, you realize that a deep understanding of the domain is crucial to building a good model to support it.


He raises many good points in the course of the rant, but I think that "only build for yourself" goes a bit too far than most of us are willing to go. I'd suggest, in the spirit of compromise, that "gathering (and understanding) business problems" is a better practice than gathering requirements, as user-proposed solutions (and the requirements which make them up) are often doomed to failure.


Why is only building for yourself a bit too far? This seems like common sense to me. If you're not using your own product day in day out, you should be.


Because I may not be in the same line of business as my users. For example, my last start-up develops planning software for large agricultural firms. I don't happen to manage a large agricultural firm, nor am I likely to manage one in the near future.

Still think I should be using my own product day in day out?


Nope, but if you can, hang out with the actual users jockeying the software as often as you can. I know that I learn something new almost every time I go out on the trading floor and have a user walk me through the software I'm writing and fixing.


Absolutely! And that was my point-- you need to understand the user's problem-space very well, and there are better ways to do this than the traditional "business requirements gathering" process, which tends to focus on the (sub-optimal) solution the users have already imagined.


It shouldn't be "business requirements gathering." It should be "business requirements refinement."


No, but then I don't think that that was Steve's point. If you work really hard, and really listen to your customers, you'll probably be able to build a reasonable product.

But if you truly want to build a great product, one that does the things that your clients didn't even know they needed until you wrote it, well, there's only one way to find out about those sorts of requirements - do the job yourself. Your software will never fulfill these unrecognised needs, and will hence never be truly great.

It's back to the whole Mac circa 1982 thing again. No-one would tell you that they needed a graphical interface to their computer if you had asked in 1982.


That's a very good point. My company for instance builds project management software for (digital imaging|photography) companies who manage several clients at a time. I literally had to work and breath in one of these companies just to write the software for them.

Had I built that software for myself, it wouldn't had have any traction with the employees in that company.


Ideally yes. Go work for one for a year, then create the software...

Of course this isn't always possible, but it's the way to better products.


I'm not saying that on-the-job experience is a bad thing-- clearly it isn't-- but as you say, it isn't always possible, and it's still a long way from creating software for you yourself to use.

Put another way: I'm not the target user of any of the most valuable (or most lucrative) software I've created-- and I don't think that's a rare condition.


Because then PG wouldn't have built Viaweb. He certainly wasn't building it for himself.


Strange that you amongst all the people here touting his tautologies had just realized that.


One of the biggest, most consistent problems I saw as a Smalltalk consultant was simply poor communication between development and users. There were inevitably at least two groups or levels of management in the same group between the users and development. The result was always the game of "telephone" or "gossip" -- the one where you form a line and one person whispers a message to the next. Information, filtered through too many minds always gets distorted in the process.

I think you can do requirements gathering. But the right way to do it is to have smart actual users talking directly to smart actual devs. Even here, there is a chance for misunderstanding, but at least it's not compounded. (I suspect that the "telephone" game is an example of a nonlinear exponential process.)

Unfortunately, middle managers defending their personal fiefdom will sometimes actually tell you that it's specifically not going to happen. In large organizations, upper management generally wants their representative to be the filter between the devs and the users, because software is generally an instrument of control. (Through workflow, even if the app has no explicit workflow framework, but that's another story.)

Often in large organizations with a software project, devs and users will find some way to get together and talk face to face. It's a sign.


> But the right way to do it is to have smart actual users talking directly to smart actual devs.

I find in my own software that the best thing to do, if you're improving an existing process, is to watch (or participate in) the current process, with an eye toward the parts which waste time or irritate people.

In any case, after the initial study, it's crucial to back out of the details of the process and think about the overall goal to be accomplished. You don't want to waste effort evolving a process that's been badly distorted by existing software, when you could simplify the process immensely by writing something directly focused on the actual goal. This is an intensely creative/intuitive phase of the process, so it often takes several iterations (from a fresh state-of-mind each time).

Once you think have the perfect solution, go back and make sure that it solves all the problems noted in step 1. If it doesn't, try again.


By "talking directly" I mean going to the floor where the software is actually used and hanging out with the users. The bandwidth is so much higher. Talking to them in a meeting room with no computer is almost a complete waste of time.


Of course, that assumes you are actually permitted to change the process. The project I'm working on has the constraint that while we are allowed to write less-buggy software that catpures the existing process more effectively, we are not allowed to propose changes to the existing process (which evolved around the existing cruddy software-- 10 years of accumulated process and "feature" cruft, now cast in carbonite).

Corporations sometimes have a funny definition of "risk." Sometimes, Risk(changing to a sane process) < Risk(reproducing unnecessary complexity of existing process).


True story: A friend of mine wrote software for NASA. There was an old control system for something that had as its interface a 9 key keypad a numeric readout and something like an enter key. The system was modernized, and its software was ported to Unix workstations. However, to keep it compatible with the operations manuals, the new GUI interface just simulated the keypad and numeric readout.

(This is not software that my friend wrote. He ported the "numerical integrator" program used to track the Space Shuttle in orbit and calculate abort trajectories during launch. And yes, he showed me the program with the keypad! Another thing: as I was walking around at JSC, I saw a "Unix for Dummies" book back there!)


Good rant, but I want to talk about dog poop.

Surely there must be an enzyme cocktail that can evaporate poop! You would not use it indoors, only for outdoor use. But there must be something that will decompose dog poo super fast. Any organic chemists here?


Genetically engineered dogs that excrete sealed tubes will put you out of business.


Robot dogs will put you out of business.


Virtual Reality (plus an exercise pill) will put you out of business.

It doesn't mean that there isn't money to be made each step of the way.


Genetically modified flies?


I think what the article was saying is: Use common sense

And: People do not know what they want, or to be more precise, decisions of liking or not liking something are made seconds before the person becomes concious of their choice, so most of the people's desires are subconscious and what they say they like is simply a justification and not their true wants. (which has been proven through psychology research)

Of course both the advices are sound, but man what awful and utterly terrible writing.

The guy is patronising, his speech is in your face and he has no consideration whatsoever for my time. He babbles and rambles about useless stuff when I simply want to get to the point of what he is saying and move on.

So to give him a bit of his own medicine, was he actually writing for himself? Or was he writing for others?

The answer is rhetorical of course, he knows his stuff so there's no need to write what he knows unless it is aimed at others. So he is not writing about himself he is writing about others.

Now that he wrote for others was his writing mediocre?

Perhaps, I certainly think so, but was it how should I put it, popular? Well 64 comments from fellow hackers, loads more in his own blogg, probably loads of nutters linked to it.

So would he care to define mediocre?

I just do not know how anyone can read his blog to be honest.

Hello by the way, my very first comment, I'm Andrew, Nice to meet you all :)


Steve has obviously never had to develop software for the life science industry. My response to any such post is simple. It depends. It depends on the kind of application, for what kind of market, etc.

I've seen more than my share of applications done in the "this is how I would use it" fashion and the results have been disastrous. I am sure there are examples, perhaps a first take or prototype that reflects what your ideal it and then you whet it with people out in the market, but you have to ask yourself "what problem am I trying to solve?". You have to ask yourself (cause if you don't someone else will) the "so what" question.

It's not about the process, which is where a lot of requirements gather bogs down (IMO, every time you talk with a current or potential user, or even a hater you are collecting requirements). It's about really caring about the problems you are trying to solve and why someone would care about the way you want to solve it.


this (http://kerneltrap.org/node/5725) is soo much better.


Interesting link.

It's amusing that in the comments someone cites SCSI as proof that coding to a standard can be sufficient. The trade association holds "plugfests" ( e.g. http://www.scsita.org/news_events/plugfests/plugfests.html ) specifically because coding to standards isn't sufficient and sometimes you have to actually try the things out with other peoples' hardware to find out if things actually work properly.


More succinct, yes, interesting too, but I'd disagree with "better." It's like saying an apple is better than an orange.


Linus has an easier task. The hardware the kernel runs on and the software running on it act as an ironclad, rigorously defined spec. Dealing with human users is something else.


not really true. what would you say about git ? it has no kernel components, no spec (at least not that i am aware of).


Linus wrote git for himself.


Wow. I guess this is why Linux RAID sucked so badly for so long.


His post is bullshit, opensource software sucks for this reason ... its built by a bunch of hackers that don't know anything about interaction design or what customers want and need, don't know much about much of anything other than the technical.

Its great when the users are all techies ... but in my opinion most of the desktop apps suck ... openoffice is a piece of shit.

I totally agree with edw519 ... this guy just doesn't know what a product developer does or how to do it. Contrary to the elitist hacker opinion that these people don't know what they are doing ... effective, methodological product developer actually do contribute significantly to finding out what people want. A lot of programmers need to let go of their egos and realize that they are not know-it-alls.


Over complicated business requirements are bullshit. But starting a product without researching first is a recipe for disaster, particularly if you are entering a crowded market.


Over complicated business requirements are bullshit.

What if the requirements are complicated?

Go ahead and develop an arbitrage system, a medical claims processing system, or a repetitive shop floor control system without "complicated enough" requirements and see how far you get.


Over-complicated is the same thing as too complicated, which does not put a limit on how complicated a system can be.


Over-complicated is also a tough guideline to follow, because how do you when you have "too much" complexity?


My sense is that to someone outside the industry, such requirements would seem overly complicated.

A few years ago, I worked for a company that did patient management software (including billing). In the effort to get the product to market, they neglected documenting the requirements of the billing portion. Over time, because of the requirements of our each of customers were different (depending on what entity they billed, the rules for the billing were different), the application turned into a mess of stuff that was never well-documented (fortunately, I didn't work on the billing app). Had they done a bit business requirements gathering before building, they could have likely saved time and money by designing more flexible software.

It's also worth noting that this wasn't some big, lumbering corporation--it was a start-up.


We, the hoi polloi developers, work for industries (retail, transportation, insurance, etc.) we hopefully know some thing about, yet without having the same level of expertise (or even the same point of view) as our customers.

He should get himself familiar with the concept of division of labor...


Hmm, I'm not convinced about the "only build what you are going to use" argument. The best example I can think of is pace-makers (or any other form of life-saving equipment). A manufacturer of these devices cannot be a user, because they'd be dead...


"A manufacturer of these devices cannot be a user, because they'd be dead..."

Well, unless you're Tony Stark.


I'll bet that a pacemaker embedded software developer who personally knew patients with a pacemaker and hung out with them every day would be a whole lot more motivated.


Just to add to that: I imagine that the makers of the first pacemakers were doctors who were better in tune with the need than the patients. In fact, I'm pretty sure that doctor, not the patient, really counts as the target market. He's the one the diagnoses the problem (and understands the need); he's the one that actually orders the devices; he's the one that actually orders the devices. The patient generally only needs to know that he needs one, and that it's going to be installed.

In the same vein, I'll bet that if actual accountants were to design a piece of accounting software, it would probably rock pretty hard. (Assuming of course, that the accountants in question were also competent designers/developers.)


After reading the discussion, is anybody else wondering why does this have to be so hard?

There has _got_ to be a better way to find out what the user really wants. Tools like balsamiq are a start, but it seems like this is a HUGE area that needs improvement.


I'm gonna quote Bruce Lee and apply it to everything here.

"Take what's essential, discard the unnecessary, and make it your own."

That's the point I got from Steve's post.

And that's how I dealt with his rambling.

Meta-great post.


can someone provide a cliff's note version of what Yegge wrote? I tried reading what he wrote, but there is too much rambling.


Don't try to find out what potential customers might want, just build something where you are a potential customer - Build for yourself.

That's what I took from it anyway :/


"Eat your own cooking."




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: