4 ms·
> It's no panacea, but it helps because it tries to prevent the business people dictating tech specifics, which the developers take too literally. > For examp
by wolfgke 10y ago
> It's no panacea, but it helps because it tries to prevent the business people dictating tech specifics, which the developers take too literally.
>
For example, a business person says "when I press the submit button the results must be stored in MySQL". What they really mean is that whatever they entered into a form must be accessible later, but the developers now believe they must use MySQL and have submit buttons.
So in other words business people are plain old lying about the requirements.
- blowski 10y agoNot lying, just not really understanding what they're talking about. For many BAs, 'MySQL' is interchangeable with 'database' so they don't realise that a different database might be a better solution. They're phrasing the requirement in terms of their best understanding of the implementation. The goal of BDD is to focus the language on the business domain instead.
- tonyedgecombe 10y agoYes, I've often seen business people pick up on technical terms without really understanding what they mean. It is our responsibility to coax users into giving non-technical requirements.
- wolfgke 10y ago> For many BAs, 'MySQL' is interchangeable with 'database' so they don't realise that a different database might be a better solution. One minute of googling can be expected from BAs, too. > They're phrasing the requirement in terms of their best understanding of the implementation. Then they should say "to my knowledge MySQL is a popular database that I know of and is to my knowledge used a lot in the company, but if you know of a better implementation (I don't know much about that - I'm no computer scientist) use it instead.".
- rahoulb 10y agoOr it's the developer's job to ask "why do you say that?" - the BA thinks they're being helpful and shortcutting a decision for you; the least you could do is try to be helpful back.
- wolfgke 10y ago> the BA thinks they're being helpful and shortcutting a decision for you; the least you could do is try to be helpful back. Giving an exact specification is a statement that you want it this way. It is a property of an executive position to give correct instructions to the subordinates. If they are not capable to do that they are simply not qualified for their job. On the other hand: If you want feedback for your specification, ask for it. Giving instructions means "you implement it this way and I am personally responsible with my honor that this is indeed what is needed".
- sanderjd 10y agoYou seem to have a very rigid view of the business world. That is fine, but you are very likely to find yourself to be more effective if you can adopt a more flexible outlook, where you see peoples' competency in their jobs as a continuum rather than black and white, and where you see instructions as conversations rather than rigid honor-bound orders (unless you're in the military). Many have tried to make the organizations around them reflect their rigid prescriptions for how things should be done, and they mostly just succeed in making people dislike working with them.
- rahoulb 10y agoMaybe it's like that where you work. But if I was the BA and was having to be personally responsible for something I would want to make sure that what I was specifying was actually correct by discussing it with the people who will be doing the work. Because that responsibility cuts both ways.
- RobertKerans 10y agoIt would make developers (or anyone doing a job for someone else) lives substantially easier if people behaved the way you think they should, but the reality is that 99% of the time they aren't doing something that most people would consider to be lying, they're just being people.
- notduncansmith 10y agoThis is an opportunity to exercise some social nuance. To them, "MySQL" and "database" are equivalent, and to point out the difference is to make the social faux-pas of overspecification (somewhat of a trope for nerds like us). By the time you're having this conversation with a BA, the DB is not going to be changed because they made some offhand reference to a different DB. They said something technically wrong, but in a way that doesn't have any meaningful effect on what they were trying to say: as such, to nitpick a detail like that may give the impression of trying to reinforce your superiority by pointing out tiny technical mistakes in their speech. So just let it go :)
- Terr_ 10y agoSometimes they are trying to deceive people though: Not about the spec, but about their own certitude and level of technical expertise.
- mcpherrinm 10y agoThe skill of going from potentially "wrong" requirements from non-experts into something engineers can deliver is one of the most important skills I've seen in technical sales people. Customers have a problem to solve, and try to ask for something to solve that problem. Understanding the problem and proposing a solution (and a price) is how you get happy customers. https://youtu.be/BKorP55Aqvg https://youtu.be/BKorP55Aqvg is a great example of how to fail at this. The "expert" totally fails to understand the customers needs, and instead gets hung up on bad definitions. He's supposed to be the expert in drawing lines, so he should be able to understand why they need them. You could say the customer is lying about their requirements, but they probably just don't understand them. This goes for any customer/provider relationship - internal services, it departments, platform enginners. Not just selling stuff to other companies.
- wolfgke 10y ago> You could say the customer is lying about their requirements, but they probably just don't understand them. To build on the example from https://news.ycombinator.com/item?id=12428337 https://news.ycombinator.com/item?id=12428337: If another person says "MySQL" it is MySQL and nothing else. If they meant something different, he would say "data store" or give some non-technical description from which a technology-minded person can reconstruct what the person really wants. The same holds for the "submit button". If the person talks about a "submit button", such a button is meant. If he means something else, he would give a description, say "a user interface element which allows to send the data that I have inputted to the central data store such that [...] Choose the technology which is best according the current UI/UX guidelines.". If I don't know what I want I give the information in a high-level way such that an expert can reconstruct/build the missing details. If I say some concrete technology that is an exact specification. If this is not what you want, it is lying. There is no in-between.
- sanderjd 10y agoLying is when you relate something you know to be untrue. What you're describing is more like "confusion".
- 10y ago