|
| ipaddr wrote:
| People will buy products because if features they will never use.
| Not building costs money.
| 542458 wrote:
| This is particularly true if the "users" aren't the ones who
| are signing the cheques. Sometimes shiny stuff that looks good
| in a product demo or on the trade show floor is what it takes
| to actually move units.
| adamm255 wrote:
| Nice post. I liked this take away. "Users say things for a
| reason, but there may be more to it than face value."
|
| Theres often more to what a human says than face value. The key
| is to always be asking questions, always ask why, multiple times.
| Ask questions until you feel like you're on the edge of pissing
| someone off.
|
| Often, a good bit of time up front can get to a few outcomes
| which save you a massive headache.
|
| 1) You understand the feature so well, you're ready to go and
| know it will be used. 2) The REAL ask was something totally
| different, and now you know what you need to do (nor not in some
| cases, sometimes its training, using the product properly/as
| intended etc).
|
| You're also going to be giving the requester the space to fully
| explain themselves, and sometimes they can talk themselves round
| as well. At the end of the day everyones a winner when we ask
| more questions and listen.
| new_guy wrote:
| The 5 whys https://en.wikipedia.org/wiki/Five_whys
| strict9 wrote:
| A metaphor for this situation (building exactly what customers
| ask for) could be the car Homer Simpson designed ("The Homer").
|
| https://simpsons.fandom.com/wiki/The_Homer
|
| Not that all users are equal to Homer, but what they think they
| want and what they actually need are very different.
|
| It's better to get more detail on the problem, then present a
| series of possible solutions to evaluate and iterate on.
| smusamashah wrote:
| Not just that. If the feature is given in an usable or other
| poor form. They won't use it even when they have it right
| there. May be its not very obvious, or complicated, or too time
| consuming. Design makes all the difference.
|
| If you give them something they never needed or asked for, but
| it's so obvious and simple to use, they will use the hell out
| if it.
| KirillPanov wrote:
| ... and this is how we got WebUSB.
| everdrive wrote:
| Sometimes I wonder if software is becoming worse because logging
| is coming better. We have so much data about problems that users
| are having, feedback they're providing, etc. Perhaps following
| the mass of people is the root cause of software's constant and
| worse UI changes.
| quickthrower2 wrote:
| Jira takes the biscuit with their text editor. Always changing
| and hard to make sense of. Recently ctrl-enter and enter
| actions were swapped!
| Minor49er wrote:
| My favorite thing about their text editor is that it will
| delete all of your changes with no option for recovery if you
| accidentally hit the escape key. I also like how this has
| been an open issue for many years on Jira, but they refuse to
| change it for some reason (or at least that's the state of it
| the last I checked about a year ago. Thankfully, I don't have
| to use any Atlassian products anymore.)
| valparaiso wrote:
| Ha. Title is right about Android fanatics and Apple.
| [deleted]
| protomyth wrote:
| The funner one is unique to enterprise developers. Begged to
| implement a feature to the enterprise software, the development
| team puts in a hell of a lot of hours to get this time sensitive
| feature into the production. Then, out of nowhere, a manager of
| some import informs everyone that they cannot use that feature as
| its "against best practices" or some other language to that
| effect. Bonus points if said manager was on the email chain about
| the feature and its progress.
| datavirtue wrote:
| I was hoping for a good old fashioned, negative developer rant.
| rightbyte wrote:
| The author is atleast referring to those rants as "angry mails"
| he got.
|
| I think these automated CI systems is a losing battle. It makes
| the build chain to complex. There is too much corner cases that
| gives false positives unless you keep it dead simple, like eg.
| enabling all warnings are errors or something in gcc.
| macando wrote:
| > _Turns out there were a few hiccups: everyone involved in that
| project we wanted to use had left the company, we had no idea how
| to build the source code, it had something like 500,000 lines of
| code, and the one person we found that knew anything about the
| project was 13 hours ahead and stopped replying to our emails._
|
| When you don't talk to users this is what you end up with.
| [deleted]
| [deleted]
| commandlinefan wrote:
| I once spent a week working on a fairly complex feature for a
| product that the users were demanding almost daily updates on. I
| delivered it and, by coincidence, happened to be where the users
| were a couple of weeks later and I stopped by to say hello and
| saw that the user who had been asking for the feature every day
| was still using the product the "old way". I asked why and he
| didn't seem to follow what I meant, so I reached over and showed
| him the _feature that he had been demanding I add_ and he said,
| "oh, wow, that's awesome, that's going to be such a huge
| timesaver for us!"
| jsemrau wrote:
| The wonders of digital transformation. One of my biggest
| insights here was that digital transformation is not only the
| technical upgrade or simplicity of implementation but rather
| the cultural implementation i.e., process re-development and
| re-training.
| quickthrower2 wrote:
| You did the customer success role.
| DrammBA wrote:
| How subtle was the update message letting the users know about
| the new feature?
| garmaine wrote:
| Yeah sounds like the lesson here is that nobody reads the
| update messages.
| Semiapies wrote:
| Couldn't have anything to do with how app update screens
| share the exact ergonomics that subscribe-to-the-newsletter
| nags and other ad popups have.
| Aeolun wrote:
| I mean, they stopped demanding the feature every day. Clearly
| they were aware that _something_ changed.
| oceanghost wrote:
| Before the launch of the XBOX 360, the company I worked for was
| one of their suppliers, and without going into enough detail to
| make me identifiable, the management of our two companies had
| arrived at sort of a stalemate: We didn't want to tell them
| exactly how our algorithms worked, and they didn't want to tell
| us exactly what they were doing with them-- think of it like a
| data compressor where, we don't want them to know the exact
| compression algo, and they don't want us to have their data.
|
| So, somehow, It is arrived at that a website will be created that
| encodes MS's proprietary data, but doesn't store it, but also our
| algorithm is implemented server side, so there's no leakage of
| proprietary stuff.
|
| A month later, the app is done and tested and I'm decoding data
| from the website on real hardware. I move on to the next project.
|
| Three years later, the Xbox 360 is out, I decide I'm tired of
| filling out reimbursement forms for Heroku and its got to be a
| security risk with no updates in 3 years... so I take a look at
| the apps stats to see if its feasible to shut it down--exactly
| zero users. Nobody ever attempted to use it, not even once.
|
| Ironically and unknown to me, the source code had been lost in a
| freak accident and when I deleted the Heroku account that was the
| only copy of the source left.
|
| Even worse, a year later someone claimed to have a use for the
| app and where was it please? And I had to explain we no longer
| had the source. I remember a very long e-mail about how
| irresponsible we were.
| arthurcolle wrote:
| Cool story thanks for sharing - so how did they get around the
| issue for three years without the app?
| AmericanChopper wrote:
| The worst programming experience of my life related to lost
| source code.
|
| I was working for a place that had a service running from a
| Java app that was customized for each customer, about 200
| copies of roughly the same app. There was source control at
| some point, and when a new customer was being on boarded they'd
| just make the customizations they required, compile the app,
| and deploy it.
|
| By the time I worked there (years later), all source code had
| been lost, and I was tasked with creating a CI/CD system that
| included managing these apps (they'd now decided they needed to
| be maintained).
|
| For each one I had to decompile the whole thing, rewrite the
| code into a human readable format, redeploy and test it. They
| were filled with all sorts of horrible anti-patterns too, like
| hard coded file paths, and some of them were only used once a
| year (but for an absolutely business critical process).
|
| About half way through we had a major data center failure that
| meant we had to do a failover, which of course broke most of
| these apps with all their hard coded configuration. So instead
| of having months to work through all of this garbage, I was
| asked to get them all working immediately.
|
| I got them all working in 3 days, which I thought was quite a
| monumental accomplishment. But my CEO was very dissatisfied
| that it took so long. I quit a couple weeks later, and still
| almost regret putting so much effort in to saving them. A
| friend of mine still works there and apparently all of these
| applications are in exactly the same state as I left them.
| karaterobot wrote:
| Slightly frustrated to read this, because this is user research
| 101! It's really impressive when someone independently discovers
| practices from an outside discipline, just by observation and
| inference. However, somebody could have saved this poor guy a lot
| of frustration by not forcing him to develop a product design
| methodology from first principles.
| huang47 wrote:
| thanks for this great write up and I wish I could read this 10
| years ago :).
| kerblang wrote:
| One of many things I learned from writing software just for
| myself is that I'm just about as bad as anybody at figuring out
| what I really want, even when I'm talking to myself. I've even
| had one or two cases where I ignored a feature I asked myself
| for, and much later realized: Hey, I could actually use that. The
| worst is asking myself, "How many times do I have to ask for this
| before you quit procrastinating and just get it done???" I'm not
| sure which of me is the bigger jerk.
| Arrath wrote:
| Oh hey its me. I've done some painstaking work to add a feature
| (hell, even just an excel macro that at the time seemed useful)
| and realize like 9 months later I've used the feature a
| whopping 3 times.
| austincheney wrote:
| The challenge there is when people start using your personal
| project. Yes, you remain in control and you remain the primary
| user. But... now regression and features become a much greater
| concern because the last thing you want to do is harm other
| people even if they are only a secondary audience. As the
| project grows this becomes the most pressing concern regardless
| of who is the primary user.
|
| That begs the question: Why bother growing the application
| beyond the smallest set of explicit use cases? When you are the
| primary user AND the only use environment or input samples are
| written by you life is simple. The moment you must analyze
| something not written by you, even if this usage is only for
| you, the problem cases blossom. If your application refuses to
| solve for those cases then you need to add more features or use
| a different application.
|
| Those two scenarios seem to feed each other which becomes
| evident by traffic or usage numbers as you pull your hair out
| keeping up with some hobby application.
| yupper32 wrote:
| A fine post and I'm sure a fine tool, but why is an internal
| linter tool the subject of a proper academic paper?
|
| I can't imagine writing an academic paper for any of the projects
| of similar complexity and general interest that I've worked on.
| endisneigh wrote:
| This was a nice article, but I'm not sure the title is
| representative of its contents. I think the first (Keep your
| users in the loop, always. Do not go build in isolation) or
| second to last (A user's workflow is everything ) bullet the
| author uses for their summary is findings to be more enlightening
| and representative.
|
| Internal tools definitely require a close relationship with some
| set of users to really validate what's being worked on. It's just
| too easy for teams to make unused internal tools. The feedback
| loop is generally just not there initially. You really have to go
| and find some users. In this way it's similar to pre-seed stage
| startup life.
| david_allison wrote:
| Great article, but I disagree with the premise.
|
| Code review is too late for most automated analysis (at the level
| of: "parameter isn't validated" as seen in the screenshot), it
| should ideally be done as a compiler/lint check in the IDE, and
| at worst as a git pre-commit hook.
|
| In most cases it's not worth sending a code review if there is
| automated feedback which can and should be addressed before a
| human sees it. It streamlines the reviews for reviewers, and
| gives new contributors a much better experience as they have less
| feedback to address, and more confidence that their code is
| correct.
| Quarrelsome wrote:
| There's nothing more frustrating than a stupid machine telling
| me it knows better when it doesn't. I used to work on a team
| where the build defaulted to fail if something wasn't used and
| debugging was a fucking nightmare because the moment you
| comment out a block of code there's a cascade of warnings into
| errors that is just never ending (it was typescript so it
| leaked all the way back to module definition). I had to piss
| away some time to write a script to turn a bunch of the rules
| off and then remember to re-enable them later or I'd break the
| build by breaking someone's OCD.
| macando wrote:
| Had an issue like that. The workaround snippet that fixed it
| was aptly named stfu.js by the author.
| marcosdumay wrote:
| Well, don't turn warnings into errors. Doubly so on your
| development environment. That's not a good reason for not
| running a linter while developing.
|
| But, of course, if the decision was out of your hands, people
| that do that are usually the same that enable all linter
| rules. Neither decision makes for a good development
| practice.
| 3pt14159 wrote:
| Your comment is more true today than it was back then, not that
| I disagree with you posting it. Back then linters were a
| twinkle in the hopeful eye of software devs. Now they're battle
| hardened.
| buescher wrote:
| Back then was 2018. Lint dates from the seventies. I doubt it
| was the first static analysis tool, either.
| 3pt14159 wrote:
| You're right. I read 2008 in the post and thought the
| writer was talking about a time shortly after then. By the
| late 2010s linters were prevalent.
| caseyross wrote:
| When you ask people to imagine a feature, they're going to
| imagine the absolute perfect version of the feature, for them
| personally. A feature that requires no effort to set up or use,
| provides exactly the information or functionality they want, and
| never gets in the way of anything else.
|
| Everyone takes for granted how smooth their own workflow is to
| them, both because they're already used to it, and because they
| sunk effort into it to make it smooth (via learning or planning),
| which has probably been forgotten. So, people just take for
| granted that new features will maintain that acquired smoothness
| --- unfortunately, they usually don't.
|
| As the author found out, most of the work in building features is
| often not in the "raw functionality" of the feature, but rather
| in making something that performs its functions while _also_ not
| costing the user significant extra mental or physical effort to
| use.
___________________________________________________________________
(page generated 2021-09-29 23:00 UTC) |