Quali sono alcuni dei bug più divertenti del software che hai visto?

Quando ero un bambino, ho fatto casino con la programmazione in BASIC su un Commodore 128. Stavo cercando di creare uno di quei giochi molto semplici in cui due giocatori si sparano l’un l’altro (cercando di capire l’angolazione corretta). La grafica era in realtà personaggi di testo, come molti semplici giochi all’epoca.

Come primo passo, ho avuto un cannone che “lanciava” un proiettile trasformando i personaggi in una linea che lentamente saliva “verso l’alto e verso destra” con un angolo di 45 gradi. Non ho messo alcuna logica per farlo arrestare, poiché avrei semplicemente ucciso il programma dopo averlo testato.

Ho visto mentre il proiettile saliva lentamente, su, su, su … e poi colpiva il bordo dello schermo. Quindi lo schermo ha iniziato a riempirsi di tutti i tipi di pazzi rifiuti casuali. Non riuscivo a fermare il programma e ho dovuto riavviare il Commodore.

All’inizio questo mi fece arrabbiare, ma dopo mi resi conto di ciò che era accaduto e rimasi piuttosto divertito.

L’output dello schermo del Commodoro esisteva semplicemente come una regione speciale di memoria, e nulla impediva al mio proiettile di spostarsi oltre quella regione speciale. Quindi, avevo creato una palla di cannone virtuale che in realtà continuava oltre lo schermo e continuava a distruggere aree casuali della memoria del computer. So che gli errori di “overflow” sono piuttosto comuni, ma questa era una versione così letterale di un software che distrugge aree di memoria casuali, ho dovuto ridere.

Molto tempo fa, c’era un cambia carta da parati chiamato Panorama32, che aveva un bug che creava file denominati PRAMA $$ BMP in posizioni casuali sul proprio computer. Mio padre aveva installato questa applicazione su una delle sue macchine ed era affetto da questo errore.

E non ha semplicemente pop-up questo file in luoghi come cartelle o sul desktop o sulla barra delle applicazioni. Lo inseriva in cose come le playlist di Winamp, dove alla fine avrebbe provocato un errore in Winamp o il nome del file sarebbe saltato fuori in un blocco su un foglio di calcolo in Excel, causando l’arresto anomalo di Excel se si fosse tentato di salvare il foglio di calcolo.

Ma se fosse tutto ciò, sarebbe solo una serie di strani bug fastidiosi del mulino.

Sulla macchina di mio padre, tuttavia, questi file erano in realtà foto che aveva da tempo cancellato dalla sua macchina … foto principalmente della sua ex moglie, mia nonna morta e mio fratello morto.

Penso che questo possa essere stato un fattore che lo ha portato a darmi quella macchina apparentemente infestata. (“Ecco, tienilo … TU hai a che fare con i suoi fantasmi!”)

————

Ho appena sperimentato questo interessante fenomeno del viaggio nel tempo di Windows Explorer.

In Windows 7 (forse anche altre versioni), quando apri una cartella in una finestra di Explorer e la imposti per raggruppare per data di modifica, quindi inizia a riempire la cartella di file, se lasci la finestra aperta dopo mezzanotte, il gruppo in alto passare dall’essere etichettato “oggi” ad essere etichettato “domani”.

All’inizio di Amazon, i clienti potevano ordinare una quantità negativa di libri e ottenere le loro carte di credito con il prezzo del loro acquisto (o piuttosto un acquisto errato) !!

Sin dai primi tempi, Jeff Bezos credeva nella velocità di sviluppo e rilascio. Questo porta spesso a errori come sopra.

Le stesse parole di Bezos:

“Quando abbiamo lanciato il negozio, abbiamo commesso un errore iniziale. Era uno dei miei bug software preferiti di tutti i tempi. Abbiamo scoperto che i clienti potevano ordinare una quantità negativa di libri! E accreditavamo la loro carta di credito con il prezzo e, io supponi, aspetta che spediscano i libri “

Guarda questo video in cui condivide la sua esperienza e le preziose lezioni apprese sulla costruzione e la gestione di un’azienda di successo.

Parla del bug alle 0:45

Questo è il bug più glorioso che io abbia mai visto, oppure è il miglior esempio di gestione delle aspettative per lettera nella storia dell’uomo.

Quasi un milione di anni fa, alla fine degli anni ’90, un normale del nostro gruppo di utenti Linux ha portato il suo nuovo brillante BeBox per fare un breve show-and-tell. Questa era, all’epoca, l’ultima e più grande cosa in circolazione, in quanto era un personal computer multi-CPU piuttosto accessibile.

Una delle caratteristiche di BeOS era che, se lo si desidera, si poteva disabilitare una CPU tramite l’app di monitoraggio della CPU. Immagino che questo fosse per situazioni in cui si voleva semplicemente controllare la posta elettronica o cosa hai, risparmiando un po ‘di energia lungo la strada.

Come accade nelle situazioni demo, questo normale ha dimostrato che poteva spegnere una delle CPU e tutti abbiamo visto il carico salire immediatamente sulla CPU rimanente. Per scherzo, decise che avrebbe visto cosa sarebbe successo se avesse provato a disabilitare anche la CPU rimanente …

E così, la dimostrazione di BeBox è stata interrotta piuttosto bruscamente.

In Skyrim esiste un meccanismo in cui se un NPC ti vede commettere un crimine, ti segnalerà alla guardia della città. Poco prima del rilascio, il team di progettazione ha notato che venivano catturati per reati molto più spesso di quanto avrebbero dovuto essere.

Dopo alcuni scavi, hanno finalmente capito che venivano segnalati dai polli. Il bug era stato risolto prima del rilascio, ma ho sempre pensato che sarebbe stata una buona storia secondaria, qualcuno ha capito come costruire un esercito di spie di pollo e devi andare a uccidere tutti i polli senza essere segnalato dagli altri polli e alla fine prenderlo giù.

Immagini casuali di carne

Abbiamo trovato un caso di immagini casuali di carne cruda che appaiono su una piattaforma di web store di terze parti che abbiamo mantenuto. Le immagini prendevano il posto dell’immagine reale del prodotto. Quindi l’acquirente dovrebbe elencare come:

Scarpa, scarpa, scarpa, STEAK. Abito, abito, cardigan, salsiccia …

Si scopre che su questo software, se un’immagine manca dal server, la piattaforma sostituisce l’immagine del prodotto reale con un’immagine dalla skin demo del negozio, che in questo caso era una macelleria online demo.

Quando stavo lavorando su Windows 7, mi sono imbattuto in un bug che si verificava solo nelle versioni ebraica e araba, lingue in cui il testo scorre da destra a sinistra.

Facendo clic e trascinando il bordo sinistro della finestra di Paint o WordPad, per ridimensionarlo, il bordo destro si sposterà! Se trascini il bordo destro, il bordo sinistro si sposterà!

Leggi questo articolo: Il dispositivo è esploso in faccia al bombardiere dopo aver “dimenticato il cambio degli orologi” – Telegraph

Pur non essendo un bug di programmazione di basso livello, credo che il rigging di una bomba esploda in un determinato momento e non la regolazione del timer per il conteggio dell’ora legale!

Leggi @http: //stackoverflow.com/questio…

Un parser jpeg, che gira su una telecamera di sorveglianza, che si schianta ogni volta che il CEO dell’azienda entra nella stanza. Errore riproducibile al 100%.

Il motivo era: il parser JPEG soffocava quando il CEO entrava nella stanza, perché aveva sempre una maglietta con un motivo quadrato su di esso, che innescava alcuni casi speciali di algoritmi di contrasto e di confine del blocco. 🙂

Non proprio un bug, ma …

Tempo fa un amico lavorava su un nuovo “mini computer” e si lamentava che il compilatore fosse incredibilmente lento. Le persone che lavoravano lì dicevano solo che era stato viziato per aver lavorato così a lungo sui giganteschi mainframe e che avrebbe dovuto abituarsi alle macchine più piccole che impiegavano più tempo.

Beh, era MODO troppo lento, quindi ha fatto qualche ricerca e ha scoperto che quando il compilatore era stato portato su mini la persona che eseguiva il debug della porta aveva impostato le dimensioni del buffer di lettura e scrittura del disco su un carattere. Quindi in pratica, per ogni personaggio che il compilatore voleva leggere o scrivere, doveva attendere una rotazione completa del disco.

Anche questa risposta di un’altra domanda sembra adattarsi 🙂


Negli Space Invaders originali il livello è diventato più veloce quando hai ucciso più alieni. In realtà, ciò non avveniva in base alla progettazione, ma a un sottoprodotto del rendering grafico limitato dal processore. Man mano che venivano visualizzati meno elementi sullo schermo, il rendering diventava più veloce.

Credito: Bowen Li

Intorno al 30/01/2012, ho iniziato a riscontrare un errore in cui la partizione radice della mia workstation scompariva, rendendo la macchina inutile. Il riavvio della macchina ha sempre risolto il problema. Ho iniziato a eseguire tutti i tipi di diagnostica, osservando l’output di debug per il filesystem, ecc. Non sono riuscito a capirlo. In completa perdita, alla fine ho eseguito un aggiornamento del BIOS sperando che potesse risolvere magicamente il problema, ma senza dadi. Ho iniziato a cercare sul Web cose come “SSD cruciale scomparso”. e ho trovato questo: perché il mio SSD “è scomparso” dal mio sistema? Sostanzialmente stavano dicendo che questo poteva accadere dopo una perdita di potenza, ma non vi era alcuna perdita di potenza e avveniva ripetutamente dopo che la macchina funzionava per un po ‘. Quindi, ho preso il consiglio del loro ultimo punto elenco, che era quello di aggiornare il firmware dell’unità. Quando ho letto il log delle modifiche del firmware, ho trovato questo:

“Correggere una condizione in cui una risposta errata a un contatore SMART
causerà la mancata risposta dell’unità m4 dopo 5184 ore da
Tempo di accensione. L’unità verrà ripristinata dopo un ciclo di accensione, tuttavia,
questo errore si ripeterà una volta all’ora dopo aver raggiunto questo punto. Il
condizione consentirà all’utente finale di aggiornare correttamente il firmware e
non rappresenta alcun rischio per i dati dell’utente o del sistema memorizzati sull’unità. ”

Quindi, 5184 ore / 24 ore è 216 giorni. 216 giorni prima che iniziassi a vedere questo errore era il 27/06/2011. Ho guardato indietro anche se le mie e-mail da Newegg e ho scoperto che ho acquistato l’unità il 21/06/2011. Coincidenza? Penso di no.

L’aggiornamento del firmware, infatti, ha risolto il problema e, naturalmente, la matematica ha funzionato solo perché non ho quasi mai spento la mia macchina.

Il sistema interno di registrazione del tempo si arresterebbe in modo anomalo in tutti i modi piccoli e strani, ma solo dopo aver funzionato (più o meno) senza errori per diversi mesi. Verso la fine dell’anno ha iniziato a schiantarsi. Un superiore disse: “Scommetto che qualunque cosa sia un problema dell’anno bisestile”. Ho pensato ehi, forte possibilità che abbia ragione, ma vediamo.

Un altro collega ha scoperto che era causato da una strana … astrazione utilizzata dallo sviluppatore originale. Ha creato una mappa di stringhe per le classi che rappresentano i mesi e ha impostato le chiavi su quelle mappe su “1-Jan”, “2-Feb”, ecc., Ai fini dell’ordinamento.

I problemi sono iniziati quando questo codice non sapeva di inserire “1-gen” dopo “12-dic” quando si avvicinava la fine dell’anno. Il tutto era strano considerando che non avrebbe dovuto avere bisogno di ordinare comunque ciò che è già cronologico. Abbiamo corretto quel bug.

Le cose non funzionavano ancora. Risulta ancora lì -was- un bug anno bisestile oltre a quello. Bene, oltre all’altra dozzina davvero.

Bug più divertente o bug più hacker …

Stavo conducendo un progetto C ++ open-source di circa 15 persone con 400k linee di codice e stavamo hackerando la nostra base di codice piuttosto difficile senza fare abbastanza test. Quindi, abbastanza sicuro, abbiamo iniziato a vedere un sacco di misteriosi errori di runtime e segfault.

Nessuna soluzione era immediatamente disponibile, quindi ho avuto la brillante idea di aggiungere un semplice gestore di errori a main (), qualcosa del tipo:

void catch_function statico (segnale int) {
put (“È successo qualcosa di brutto.”);
vai a RIAVVIA;
}

int main (void) {
puts ( “Helloworld.”);
segnale (SIGINT, catch_function);

RICOMINCIA:
acceptSomeConnectionsAndDoSomeStuffForever ();

puts ( “Uscita”.);
ritorna 0;
}

Problema risolto!

Tranne ora, invece di bloccare l’app ogni 15 minuti, si è arrestato in modo anomalo sull’intera macchina più volte al giorno .

80% di soluzioni…

Durante i miei primi giorni di carriera, facevo parte del team di progetto, che doveva affrontare un bug molto interessante (divertente). Il nostro team ha consegnato una soluzione per l’applicazione della conformità finanziaria a uno dei maggiori istituti finanziari al mondo.

Il progetto è stato consegnato con alcuni ritardi e alla fine il cliente ha iniziato a usarlo. Tutto stava andando bene e una sera tardi abbiamo ricevuto un biglietto di “assistenza clienti” dal cliente. Uno degli utenti aziendali ha rilevato ed emesso e inviato un’e-mail con i contenuti simili di seguito:

Gentile team di supporto del prodotto,

L’applicazione si è bloccata ogni volta che bevo coca cola. E ogni volta che succede, ho riavviato il browser e ho inserito tutti i dettagli dall’inizio. Esamina il problema e risolvi il più presto possibile.

Grazie,

Cliente.

Nota: hai letto bene, il cliente ha riferito che la sua applicazione si arresta in modo anomalo quando beve coca cola.

Inizialmente pensavamo che fosse uno scherzo e abbiamo inviato una mail di cortesia dicendo che il problema è stato assegnato a un ingegnere e ti aggiorneremo presto. Abbiamo pensato che fosse finita e ce ne siamo dimenticati.

Una settimana dopo, il cliente ha risposto con una mail aspra, dicendo che non abbiamo risposto correttamente al problema. All’improvviso tutti parlavano del problema.

“L’ applicazione andava in crash quando beviamo coca cola”

Ciò che il team addetto al controllo qualità ha fatto, per una lattina di coca cola, si è seduto davanti al sistema e ha iniziato a bere coca cola, per vedere se l’applicazione stava andando in crash (sto solo scherzando qui). Il team QA non può crederci, né il team di sviluppo. Alla fine abbiamo impostato una chiamata con il cliente e la chiamata è andata avanti in questo modo

Cliente C, Team di progetto P.

C: Ciao

P: Ciao, possiamo avere qualche dettaglio in più sul problema.

C: La compilazione di questo modulo di conformità richiede molto tempo. Quindi nel mezzo, prendo una coca e continuo a compilare il modulo. Quando lo faccio, l’applicazione si arresta in modo anomalo.

P: Sei sicuro? Non possiamo crederci.

C: Yaaa .. Lo so. Ma ho provato a bere caffè e funziona perfettamente.

Non ci possiamo credere. Non abbiamo codificato nulla del genere, non possiamo codificare così. Quindi abbiamo posto alcune domande casuali per mantenere attiva la finestra di dialogo. Alla fine gli abbiamo detto che “avremo qualche discussione tecnica e ti risponderemo su questo”.

Abbiamo disconnesso la chiamata e ci siamo seduti increduli.

Il team ha continuato a discutere di tutto. Ero un giovane e lo stavo solo ascoltando (No, non è Bollywood. Non ho risolto il problema. Non li ho nemmeno aiutati a risolvere il problema. Ero solo uno spettatore).

Passarono ore, molte discussioni accese, discussioni.

Finalmente qualcuno (un ragazzo dev) ha capito.

Qualche supposizione …

… ..

… ..

Il ragazzo dev ha impostato una chiamata con il cliente e ha posto la seguente domanda

C: Cliente, D: Dev guy

C: Ciao

D: Ciao (tono audace ed elettrizzato)

D: Posso chiederti dove ti siedi? Voglio dire a che piano

C: 4 ° piano.

D: Da dove prendi il caffè?

C: Abbiamo dispensa per ogni piano. Quindi è a soli 5 cubicoli di distanza.

D: E da dove prendi la coca? (Con un tono eccitato, che ha già risolto il problema)

C: 11 ° piano. Ecco dove si trova il distributore automatico.

D: Quindi potrebbe volerci del tempo prima che tu lo ottenga, diciamo 15 minuetti,

C: Ya, ancora di più, la caffetteria è molto affollata.

Questo è tutto. L’ha inchiodato. Il problema è stato risolto e non il cliente può tranquillamente bere coca cola mentre lavora.

Mi chiedo ancora …

C’era una procedura di timeout dell’applicazione nella nostra applicazione. Quando non si utilizza l’applicazione per più di 15 minuti, si disconnette automaticamente. Non è mai stato testato e c’era un bug.

Quando si verifica il timeout della sessione, tenta di salvare il modulo, ma poiché alcuni dei campi obbligatori non sono stati compilati, si verifica un’eccezione e si verifica un arresto anomalo del browser.

Quindi non lasciare mai nulla di non testato, anche se è meno usato.

Anni fa, stavo partecipando a una piccola conferenza presso IBM in cui stavano dimostrando nuove funzionalità in WebSphere (all’epoca stavo facendo il software Enterprise.) Una delle dimostrazioni riguardava la dimostrazione dell’integrazione di Eclipse che avrebbe dovuto facilitare lo sviluppo di WebSphere. Durante la demo, il presentatore si è lanciato e ha seguito una procedura guidata che prevedeva numerosi passaggi. Mezz’ora dopo, ha finalmente raggiunto l’ultimo passaggio del mago. Sfortunatamente, il pulsante Fine nell’ultimo passaggio è stato disabilitato, senza alcuna indicazione visiva del perché. Lo sfortunato presentatore ha iniziato a eseguire il backup nella procedura guidata, cercando alcuni input mancanti. Dopo un’altra mezz’ora fece il backup fino all’inizio della procedura guidata, ma non riuscì a trovare il problema. E così la sessione si è conclusa con una nota bassa. Oh bene, queste cose accadono …

Stavo lavorando al mio primo videogioco, che doveva essere un remake platform per PS2 di Joust. Avevamo aggiunto un’arma balestra, ma per qualche motivo le frecce rese sempre puntate direttamente verso la telecamera. Non importa quello che ho fatto, non sono riuscito a farli ruotare.

Qualcuno ha infine suggerito che forse il modello di freccia era corrotto in qualche modo … si è scoperto che si trattava di un bene che era stato preso in prestito da un altro progetto. Quindi ho cercato un asset di gioco da utilizzare come sostituto del debug. La mucca sembrava abbastanza diversa e abbastanza grande da determinare ovviamente da che parte stava affrontando.

Presto le mucche volarono dappertutto, dimostrando che il problema era proprio la risorsa freccia. Quando il mio produttore lo vide, pensò che fosse la cosa migliore che avesse mai visto; se avessimo spedito, il fucile da mucca ce l’avrebbe fatta sicuramente con l’uovo di Pasqua.

Ha lavorato per un sito Web che ha estratto i dati da un CMS. Durante l’esportazione dei dati, il CMS ha aggiunto markup al contenuto che ha incasinato l’allineamento sul sito Web. Per correggere ciò, qualcuno ha aggiunto il codice per sostituire “da destra” a “sinistra” per ottenere l’aspetto corretto sul sito Web. Sfortunatamente, questo ha sostituito tutte le istanze di “right” con “left” nel contenuto e ha portato a frasi come:

– sinistre umane
– assumere persone sinistre per lavori di sinistra
– Tutti i sinistri riservati

Molto tempo fa c’era un computer che utilizzava numeri a 18 bit per tenere traccia dei conteggi dell’accesso ai file. Ciò ha permesso di risparmiare 100 nanosecondi, il che era un grosso problema su un computer da $ 7 milioni di dollari.

Ciò ha interagito male con uno schema di memorizzazione nella cache dei file creato con il nostro programmatore più intelligente. Il suo programma avrebbe esaminato i conteggi dell’accesso ai file e spostato i programmi usati di frequente sui dischi più veloci, e di rado li usava per rallentare i dischi, e raramente li usava per il nastro magnetico.

Ma a causa delle circostanze, gli studenti usavano molto il compilatore FORTRAN. (Ironia della sorte, il programmatore puzzolente aveva scritto quasi tutto lo stesso compilatore FORTRAN). Dopo circa tre mesi il conteggio degli accessi per l’eseguibile del compilatore è stato superiore a 131.071, quindi in notazione con segno a 18 bit è diventato un numero negativo. Il programma di spostamento dei file ha deciso che il compilatore era stato usato molto raramente, come un numero negativo di volte, quindi doveva essere spostato su nastro. Con vari trucchi difficili il suo programma ha messo un messaggio sulla console per l’operatore di montare un nastro di archivio per l’operazione di scrittura. Ci è voluto un po ‘di tempo, dato che i nastri dell’archivio erano a una notevole distanza dall’altra parte della sala computer. Dopo il montaggio e il threading del nastro, il programma scrive il compilatore su nastro, elimina il file del disco e inserisce un messaggio operatore per smontare e riporre il nastro. Ma il compilatore era di così alto utilizzo che probabilmente era già necessario che il compilatore venisse eseguito, quindi è stato messo in coda un altro messaggio che richiede il montaggio del nastro. Sfortunatamente gli operatori hanno appena fatto il loro lavoro e non hanno pensato troppo a quello che stava succedendo. Sono diventati sempre più affaticati e hanno iniziato a smettere di sinistra e di destra. Solo allora i dirigenti pensarono di chiedere perché stavano per smettere, e solo più tardi chiesero alla gente del sistema di capire perché fossero stati richiesti così tanti nastri.

Quindi ore, ore e miglia e miglia di operatori camminano, a causa di una minuscola svista di programmazione.

SR71 in Flight Simulator raggiunge lo spazio

Molto tempo fa ho avuto la versione originale del simulatore di volo di Chuck Yeager. Incluso era un modello per la SR71. Il mio unico interesse per l’intero programma era vedere come il modello SR71 poteva volare.

Dopo aver tentato di volare direttamente da un decollo e di non superare i 60 K ft, ho provato a decollare più convenzionalmente e a guadagnare gradualmente quota. Quindi da circa 60K ft, tuffati a terra il più velocemente possibile senza strappare le ali, tirare molte forze G e toccare il fondo di circa 10K ft, quindi puntare il naso verso l’alto e colpire i postbruciatori. Quando le stelle sono venute fuori, prendi una stella come punto centrale e tienila lì finché l’atmosfera non si è esaurita, i motori sono morti e tutti i controlli sono stati inutili.

Alcune volte ho colpito 160K ft, prima di ricadere sulla Terra. 30 miglia non sono del tutto considerate spazio, ma le stelle erano sicuramente carine.

[Modifica: procedura chiarita … dopotutto, che era molte versioni del sistema operativo fa.]

More Interesting

In quali linguaggi di programmazione sono implementati il ​​frontend e il backend di WhatsApp?

In cosa consiste veramente lo sviluppo del software?

È vero che Infosys assegna le tecnologie in modo casuale in base ai requisiti aziendali? Cosa succede se qualcuno rimane bloccato in una tecnologia che non ha scopi futuri? Come si possono cambiare le tecnologie, quando tutte le aziende richiedono esperienza anziché competenza?

Quali sono alcuni suggerimenti per garantire uno stage di ingegneria del software con IBM come studente universitario CS?

Ne vale la pena passare allo sviluppo del software dai test di automazione in questa fase della mia carriera, se ho conoscenza del core Java, le basi di Spring e JDBC?

Quali metodologie vengono utilizzate per lo sviluppo di software commerciale?

Perché CocoaPods è meglio dei sottomoduli Git per lo sviluppo di iOS?

Dopo 2 anni di esperienza, ora ho ricevuto una buona offerta di SDE da Amazon. Quale dovrebbe essere il mio prossimo obiettivo?

Qual è stato il primo riverbero basato su software disponibile? So che i VST non sono stati sviluppati fino alla metà degli anni Novanta, ma quale riverbero del software digitale non hardware potresti usare negli anni Ottanta, presumibilmente da un pubblico incredibilmente minimale?

Quali concetti tecnici dovrebbero comprendere tutti i non programmatori (cioè un manager) quando lavorano con i programmatori?

In che modo le persone senza background di programmazione / programmazione creano società basate su software?

A quali informazioni è interessato un architetto durante l'analisi delle viste dinamiche dell'architettura software? Quali strumenti hai sperimentato durante la tua carriera?

Quali sono i vantaggi dell'utilizzo di contenitori software (come Docker) rispetto al vecchio approccio della gestione di più macchine virtuali (utilizzando strumenti come Puppet) e viceversa?

Quando si sviluppa un'applicazione interna, quale metodo Agile è migliore in termini di flusso di lavoro di sviluppo, sviluppo software Lean o Scrum?

Quali sfide di programmazione uccideresti per avere la possibilità di risolvere?