[HN Gopher] An algorithm that blew up Italy's school system
       ___________________________________________________________________
        
       An algorithm that blew up Italy's school system
        
       Author : throwaway751
       Score  : 48 points
       Date   : 2023-09-01 14:59 UTC (8 hours ago)
        
 (HTM) web link (algorithmwatch.org)
 (TXT) w3m dump (algorithmwatch.org)
        
       | st-keller wrote:
       | Why do i read such stories at all? Now i can't tell, if it's the
       | algorithm or the implementation or both and i'm left with more
       | questions than before!
       | 
       | Edit: typo
        
         | jaclaz wrote:
         | Seemingly it is implementation:
         | 
         | >Why did such errors occur?
         | 
         | >When the algorithm finds an ideal candidate for a position, it
         | does not reset the list of remaining candidates before
         | commencing the search to fill the next vacancy. Thus, those
         | candidates who missed out on the first role that matched their
         | preferences are definitively discarded from the pool of
         | available teachers, with no possibility of employment. The
         | algorithm classes those discarded teachers as "drop-outs",
         | ignoring the possibility of matching them with new vacancies.
         | 
         | And (possibly) also incorrect data:
         | 
         | >Often teachers input the wrong data on the system because of
         | an interface that is not very transparent, complex and
         | difficult to access. The scores can therefore already be
         | distorted upstream, without taking into account human errors by
         | the school offices." Aspiring teachers often find themselves
         | alone in facing complex procedures and error is often
         | inevitable and sometimes irreparable.
        
           | satellite2 wrote:
           | Yes that's the explanation according to the article. But that
           | seems sketchy. With such an algorithm the pool of potential
           | candidates would quickly converge to 0. So I doubt the
           | algorithm exactly does this.
        
             | duskwuff wrote:
             | > With such an algorithm the pool of potential candidates
             | would quickly converge to 0.
             | 
             | From the sound of things, that may have been happening:
             | 
             | > Moreover, recruitment is not keeping pace with schools'
             | need for teachers, thus leaving hundreds of classroom
             | positions vacant which is affecting the educational
             | progress of students all over Italy.
        
           | basseq wrote:
           | That "drop out" concept just seems _entirely_ wrong. Not only
           | because its erroneously constricting the applicant pool, but
           | because it strongly biases the earlier roles in the queue.
           | 
           | For example, consider two roles and two applicants, with fit
           | scores as below:                              Role 1    Role
           | 2       -----        -----     -----       Applicant A    96%
           | 95%       Applicant B    95%       50%
           | 
           | Ignoring the "drop out" bug, under the algorithm described
           | the system would evaluate all candidates for Role 1,
           | determine Applicant A is the best, then move on. At that
           | point, Applicant B is the best candidate for Role 2... even
           | though they're not a very good one. Overall, not a great
           | outcome (73% avg.).
           | 
           | You'd think the algorithm would want to maximize outcomes
           | across all roles: the more optimal "best fit" solution would
           | be Applicant B in Role 1 and Applicant A in Role 2 (95% avg).
           | 
           | (I'm assuming the reality here is that Role B _isn 't
           | available_ at time of evaluation, so there's no way to
           | evaluate the universe without waiting, which may be sub-
           | optimal.)
        
             | mistrial9 wrote:
             | at first glance the algorithm seems to reward compliance
             | ("take whatever is offered") and severely penalize any
             | teacher who insists on some placement (by refusing the
             | first placement you are knocked out of the applicants,
             | maybe for a long time)
        
         | morkalork wrote:
         | It could serve as a parable you'd tell a junior engineer
         | interested writing algorithms that get applied to people's
         | livelihood. Beware your own hubris, demonstrate or simulate
         | results and show them to all stakeholders like the union, do
         | controlled rollouts (why not start with 1 region in the
         | country?), verify inputs that could be untrustworthy. Basically
         | all the usual lessons one learns the first time they write an
         | algo for people and it blows up in their face embarrassingly.
        
           | ghaff wrote:
           | >demonstrate or simulate results and show them to all
           | stakeholders
           | 
           | This is a very important point. Especially for any
           | algorithm/policy change that affects people's pay, time off,
           | scheduling, etc., it may _seem_ like a reasonable change to
           | you and to management but a lot of people will have a
           | visceral reaction anyway. Not everyone may be happy at the
           | end but it 's important they're at least part of the process.
        
           | gopher_space wrote:
           | But leetcode hiring implies we're looking for juniors to roll
           | their own algos and call them recursively as part of the job.
           | People hired this way could be walking time-bombs.
        
           | ip26 wrote:
           | Define your expected optimization outcomes in plain human
           | language, and verify them extensively in trials.
           | 
           | I can write some useful formal properties right here:
           | - there are n openings and m qualified applicants. At the end
           | of assignment, there should be (m-n) applicants without a
           | role.             - if (m>n), all roles should be filled
           | - if there are n identical average candidates and m identical
           | ideal candidates, if there are p roles where (p>m), all ideal
           | candidates should get a role             - every candidate
           | not selected should be worse than every candidate selected
           | - every candidate not selected should have participated in n
           | trials where n is the number of openings             - etc
        
       | pipes wrote:
       | Deleted, risk of being identified by work mates!
        
         | rileymat2 wrote:
         | "Obviously the sales team told the customers that it provided
         | the optimal seating arrangements, which is impossible to know."
         | 
         | At resturant sizes and constraints, I am surprised it grows
         | prohibitive to generate a optimal or near optimal. Can you say
         | more about the sizes or growth or problem?
        
       | b800h wrote:
       | What is infuriating about this is that this should be a solved
       | optimisation problem, but it has probably been outsourced on the
       | cheap to some bog-standard web dev team who have tried to figure
       | it out from first principles. It's a bit like trying to roll your
       | own security.
        
         | lordnacho wrote:
         | What I don't get is why it would be outsourced at all. Run a
         | team that manages the entire SDLC. If they mess it up, they are
         | maintaining it and have a reason to solve the problem.
         | 
         | How did people manage to convince government that software is
         | this one-time thing you just pay for and then it works forever?
        
           | bezout wrote:
           | To be fair some nations do have their software development
           | teams. Italy has Sogei which is fully controlled by the
           | Ministry of Economics. They had a reputation for developing
           | crappy software but I heard they are getting better
           | 
           | PS: they were not involved in the development of this
           | algorithm
        
             | sam_lowry_ wrote:
             | Smals to Belgium is pretty much what Sogei is to Italy. A
             | government-controlled IT sweatshop.
        
           | b800h wrote:
           | It's a lot easier to clear capital expenditure than revenue
           | expense.
        
         | ip26 wrote:
         | Optimization is solved in the sense we have engines for it, but
         | precisely defining the problem to be solved is not trivial, and
         | the error described here could have been made within an
         | established solver with the wrong specification.
        
         | rapsey wrote:
         | Nah this is a government contract. It was definitely done by a
         | consultancy for big money and zero effort and no
         | accountability.
        
           | [deleted]
        
       | ghaff wrote:
       | I suspect that anything which jiggers school times is going to
       | attract a fairly large constituency that vocally hates the
       | change. Boston went through this about 5 years ago.
       | https://www.media.mit.edu/articles/what-the-boston-school-bu...
       | 
       | Which pretty much happens whenever you have self-perceived
       | winners and losers with a policy change.
       | 
       | Not sure what the eventual outcome of that proposed change was.
       | 
       | [Oops. Meant to reply to another comment. But there are some
       | similarities across algorithmic optimizations though it's not
       | clear how much of the problem here was the algorithm vs. the
       | implementation.]
        
         | duskwuff wrote:
         | > I suspect that anything which jiggers school times
         | 
         | That isn't what the article is about.
        
       | escanor wrote:
       | Who does that algorithm really serve?
        
         | duskwuff wrote:
         | From the sounds of it: no one, it's just bad. Teachers are
         | passed over for jobs that they should be getting, schools are
         | having difficulty filling teaching roles (and are probably
         | paying extra for temporary teachers), and students are being
         | instructed poorly by a revolving door of poorly qualified
         | teachers. This isn't a zero-sum scenario; getting the right
         | teachers into the right jobs makes everyone happier.
        
       | game_the0ry wrote:
       | Recently, Kentucky had similar problems with algos and tech, but
       | with bus routes. [1] And here I was thinking it was just an
       | American problem.
       | 
       | Infuriating that children and education are being used as cash
       | cows for the corrupt and incompetent - promise efficiency for the
       | kids and system, deliver absolute shit for everyone, except the
       | execs who got paid. Fucking evil.
       | 
       | [1] https://news.ycombinator.com/item?id=37121138
        
         | mavamaarten wrote:
         | You see it everywhere indeed.
         | 
         | Where I live, schools are starting to force everyone to buy or
         | rent specific laptops from specific companies. The less
         | financially-abled can't buy a good second hand laptop for
         | cheap, the ones who can pay for them are scammed by high prices
         | and shitty hardware. The company running the show is happy
         | though, of course.
        
           | SenAnder wrote:
           | Find the _individuals_ who signed that contract, organize
           | parent protests at their private homes.
        
       | b800h wrote:
       | Interesting. My brother-in-law teaches in Bologna and has just
       | been affected by this. He was literally just telling me about it
       | 30 mins before I saw this here! The algo didn't match his first
       | preference, then ditched him for subsequent matches.
       | 
       | The real kicker is that this article is from April and refers to
       | the mess _last_ year. Despite all the havoc, they proceeded to
       | use it again, with predictable results.
        
         | abracadaniel wrote:
         | That's the outrageous part of it. They didn't test it against
         | historical data to find it performed worse. They deployed it at
         | scale, rather than trial it in a small sample. They didn't
         | notice it leaving large numbers of teachers as "drop-outs"
         | despite only being considered for one position. They didn't
         | move to correct it, when the problem was noticed. Then to top
         | it all off, they did it again, knowing it does this. Absolutely
         | absurd.
        
       | bezout wrote:
       | The way it works in Italy: the design and implementation of the
       | algorithm in Java 8 or an even older version of C# was probably
       | outsourced to one of the Big 4 consultancy companies.
       | 
       | A group of underpaid graduates was put together to crack the
       | problem. All of them crammed for their algo & ds exam since
       | that's what the Italian university system incentivises so none of
       | them did actually remember a thing about algorithm design. They
       | googled a bunch of words and forked the first PoC they found on
       | GitHub.
       | 
       | Everything was wrapped into a nice PowerPoint full of corporate
       | BS and delivered to the government.
       | 
       | Edit: As expected, the algorithm was developed by a company owned
       | by Dxc Technology [1] and Leonardo which is the Italian defence
       | company. The contract was worth 5 million of euros.
       | 
       | [1]: https://www.wired.it/article/algoritmo-scuola-supplenze-
       | mini...
        
         | ip26 wrote:
         | 5 million, at 100,000 euro comp per engineer and a 2x
         | multiplier for total cost per head, that's only a team of 8 for
         | three years.
         | 
         | Not that more money would have fixed it, but good software is
         | not some $200k affair.
         | 
         | This program really could have used a small software
         | verification team.
        
         | layer8 wrote:
         | I don't see what "Java 8 or an even older version of C#" has to
         | to with the correctness of the algorithm or its implementation.
        
           | bezout wrote:
           | It doesn't. It's not an attack on the programming languages.
           | It's just that they have a sweet spot for using old ass
           | versions which might or might not have known vulnerabilities
           | and they don't care about updating it.
        
             | layer8 wrote:
             | FYI, OpenJDK 8 still receives regular security updates and
             | will continue to do so for at least three more years
             | (Temurin, RedHat) (or, according to Oracle, until end of
             | 2030). It's still in production in a lot of places.
        
       ___________________________________________________________________
       (page generated 2023-09-01 23:01 UTC)