https://blog.plover.com/2022/12/04/#crap-warning-signs-2 The Universe of Discourse Mark Dominus (Tao Sun, 04 Dec 2022 Min Xiu ) mjd@pobox.com Software horror show: SAP Concur [TOP] This complaint is a little stale, but maybe it will still be interesting. A while back I was traveling About me to California on business several times a year, and the company I worked for required that I use SAP RSS Atom Concur expense management software to submit receipts for reimbursement. 12 recent entries At one time I would have had many, many complaints Software horror about Concur. But today I will make only one. Here show: SAP Concur I am trying to explain to the Concur phone app Whatever became where my expense occurred, maybe it was a cab ride of the Peanuts from the airport or something. kids? Wombat coprolites Screenshot of aphone app with the title "Location Addenda to recent Search". In the input box I havetyped 'los a'. The articles 202210 list of results, in order, is: None; Los A map of Andes,CHILE; Los Angeles, CHILE; Los Alcazares, Haskell's numeric SPAIN; Los Altos Hills,California; Los Alamos, New types Mexico; Los Alamitos, Californoia, LosAngles, Emoji for U.S. California; Los Altos, California; Los Alamos, presidents California; Los Alcarrizos, Trollopes DOMINICaliforniaNREPUBLIC; Loc Arcos, SPAIN; Los This search Anauicos, VENEZUELA algorithm is usually called I had to interact with this control every time "group testing" there was another expense to report, so this is More notes on part of the app's core functionality. deriving Applicative from There are a lot of good choices about how to order Monad this list. The best ones require some work. The app A linguistic might use the phone's location feature to figure oddity out where it is and make an educated guess about What's this how to order the place names. ("I'm in California, search algorithm so I'll put those first.") It could keep a count of usually called? how often this user has chosen each location Tree search in before, and put most commonly chosen ones first. It Haskell could store a list of the locations the user has selected before and put the previously-selected Archive: ones before the ones that had never been selected. It could have asked, when the expense report was 2022: JFMAMJ first created, if there was an associated location, JASOND say "California", and then and then used that to 2021: JFMAMJ put California places first, then United States JASOND places, then the rest. It could have a hardwired 2020: JFMAMJ list of the importance of each place (or some proxy JASOND for that, like population) and put the most 2019: JFMAMJ important places at the top. JASOND 2018: JFMAMJ The actual authors of SAP Concur's phone app did JASOND none of these things. I understand. Budgets are 2017: JFMAMJ small, deadlines are tight, product managers can be JASOND pigheaded. Sometimes the programmer doesn't have 2016: JFMAMJ the resources to do the best solution. JASOND 2015: JFMAMJ But this list isn't even alphabetized. JASOND 2014: JFMAMJ There are two places named Los Alamos; they are not JASOND adjacent. There are two places in Spain; they are 2013: JFMAMJ also not adjacent. This is inexcusable. There is no JASOND resource constraint that is so stringent that it 2012: JFMAMJ would prevent the programmers from replacing JASOND 2011: JFMAMJ displaySelectionList(matches) JASOND 2010: JFMAMJ with JASOND 2009: JFMAMJ displaySelectionList(matches.sorted()) JASOND 2008: JFMAMJ They just didn't. JASOND 2007: JFMAMJ And then whoever reviewed the code, if there was a JASOND code review, didn't say "hey, why didn't you use 2006: JFMAMJ displaySortedSelectionList here?" JASOND 2005: OND And then the product manager didn't point at the screen and say "wouldn't it be better to alphabetize these?" ----------------- Subtopics: And the UX person, if there was one, didn't raise any red flag, or if they did nothing was done. Mathematics 219 Programming 95 I don't know what Concur's software development and Language 82 release process is like, but somehow it had a Miscellaneous 59 complete top-to-bottom failure of quality control Book 48 and let this shit out the door. Tech 42 Haskell 33 I would love to know how this happened. I said a Oops 29 while back: Unix 26 Etymology 26 Assume that bad technical decisions are made Cosmic Call 25 rationally, for reasons that are not apparent. Physics 21 Law 17 I think this might be a useful counterexample. And Perl 17 if it isn't, if the individual decision-makers all Math SE 15 made choices that were locally rational, it might be an instructive example on how an organization [mjd-univer] can be so dysfunctional and so filled with perverse Higher-Order Perl incentives that it produces a stack of separately Blosxom rational decisions that somehow add up to a failure to alphabetize a pick list. Comments disabled [Other articles in category /prog] permanent link