La migliore risposta
Ognuno ha ovviamente le proprie preferenze. Me stesso incluso. Poiché la sovrapposizione è limitata, ci si deve chiedere quanto siano “obbligati a leggere” i libri. 🙂 Tuttavia, è sempre divertente produrre un elenco.
- The Mythical Man-Month
- Codifica sicura in C e C ++, seconda edizione (applicabile solo agli sviluppatori C e C ++, sebbene esista una versione per Java – con Ada, generalmente hai solo bisogno di John Manuale di Barnes: Amazon.co.uk: John Barnes: 9781107424814: Libri )
- Logiche di programma per compilatori certificati: Andrew W. Appel, Robert Dockins, Aquinas Hobor, Lennart Beringer, Josiah Dodds, Gordon Stewart, Sandrine Blazy, Xavier Leroy: 9781107048010: Amazon.com: Libri
- The Art of Computer Programming, vol. 1: Fundamental Algorithms, 3a edizione: 9780201896831: Computer Science Books @ Amazon.com
- Art of Computer Programming, Volume 2: Seminumerical Algorithms (3a edizione): Donald E. Knuth: 0785342896848: Amazon.com: Libri
- The Art of Computer Programming: Volume 3: Sorting and Searching (2nd Edition): Donald E. Knuth: 9780201896855: Amazon.com: Books
- Reti di Petri colorate – Modellazione e convalida di Concorrente | Kurt Jensen | Springer
- TCP / IP illustrato, volume 1: i protocolli
- Unix Network Programming, Volume 1: The Sockets Networking API (3a edizione): W. Richard Stevens, Bill Fenner, Andrew M. Rudoff: 9780131411555: Amazon.com: Libri
- Programmazione con thread POSIX: David R. Butenhof: 0785342633924: Amazon.com: Libri
Ovviamente, non tutti questi libri si applicano a tutte le persone. Sono abbastanza pazzo da affrontare il campo nel suo insieme, quindi ho tutto questo e molti altri. Tuttavia, questa selezione è sufficiente per ottenere una solida conoscenza di programmazione, algoritmi, networking, modellazione di sistemi e vari modelli di sviluppo software affidabili. Aree che sono sufficientemente significative da consentire agli ingegneri del software di prestarvi attenzione.
Risposta
Qui presumo che stiamo parlando di un ingegnere del software che ha conseguito competenze tecniche durante la scuola, bootcamp o qualsiasi altra opportunità di apprendimento.
Gli algoritmi sono davvero importanti e il libro “ Introduzione agli algoritmi ” è una lettura obbligata. Credo che anche avere una profonda conoscenza della progettazione del software e della progettazione orientata agli oggetti sia fondamentale, e la mia bibbia è ancora il libro “ Design Patterns: Elements of Reusable Object-Oriented Software . ” I suoi esempi in Smalltalk non lo rendono il più facile da leggere al giorno doggi, eppure non sono a conoscenza di nessun altro libro con una tale profondità e ampiezza sullargomento.
Ho incontrato molti ingegneri che hanno iniziato sul posto di lavoro e ho notato alcune lacune nel corso degli anni, quindi vorrei suggerire libri per ciascuna di queste aree.
I nuovi ingegneri tendono a non capire la concorrenza indipendentemente dalla lingua. Il concetto di eseguire più thread in parallelo fornendo il giusto livello di sincronizzazione tra di loro non è facile da comprendere. Personalmente ho imparato molto leggendo “ Java Concurrency in Practice ” proveniente da un background Java. Cè anche una buona sezione sulla concorrenza in “ Effective Java “, la lettura obbligata su come codificare in modo appropriato in Java.
Cyber -la sicurezza è finalmente un tema caldo al giorno doggi. Purtroppo, i giovani ingegneri tendono a non essere a conoscenza dei concetti di sicurezza applicabili al loro codice. Un buon punto di partenza è leggere la lista dei primi 10 di OWASP e analizzare in dettaglio ogni vulnerabilità dellapplicazione. Sono un grande fan di “ 24 peccati capitali della sicurezza del software: difetti di programmazione e come risolverli “.
I nuovi ingegneri tendono a concentrarsi sulla codifica. Credono che la codifica sia ciò che conta e vogliono produrre un buon codice velocemente, a volte affidandosi a codice difficile da leggere perché possono digitarlo in modo più conciso. Ci sono solo due problemi con questo modo di pensare: ogni ingegnere del software crea bug e gli ingegneri del software lavorano meglio in team! La qualità è importante e anche la manutenibilità è importante. Personalmente, mi piacciono i libri “Working Effectively with Legacy Code” che parlano di test e della necessità di test per migliorare il codice. “ Clean Code: A Handbook of Agile Software Craftsmanship ” affronta largomento della manutenibilità, a volte con un punto di vista estremo, che lo rende un ottimo libro da leggere e discutere come una squadra.
I nuovi ingegneri, soprattutto dopo il college, possono avere difficoltà ad adattarsi al posto di lavoro e al loro nuovo lavoro. Questo in realtà è vero per qualsiasi ingegnere, in realtà chiunque, che inizia un nuovo lavoro. Cè questo fantastico libro “ I primi 90 giorni: strategie comprovate per diventare più veloce e intelligente ” che mi ha insegnato diversi concetti su come iniziare a nuovo lavoro, e in particolare la necessità di struttura. La struttura è ottima. È confortante, soprattutto in un ambiente nuovo. Ottengo risultati costanti applicando la stessa ricetta proprio come quando preparo una torta con mia figlia. Quando ho iniziato a Wayfair undici mesi fa nel Native App Team, ho scelto di porre domande abbastanza generiche ma coerenti al mio arrivo per ottenere la disposizione del terreno. Queste domande non solo mi hanno dato unidea di cosa stava succedendo, ma mi hanno detto molto sulle persone con cui stavo incontrando. Ho svolto la mia missione conoscitiva per circa un mese utilizzando lo stesso questionario ogni 1: 1 e ho iniziato a elencare le mie aree di interesse il primo giorno.
Sono stato nello sviluppo di software per più di venti anni, leggendo libri di leadership negli ultimi dieci anni, quindi sentiti libero di chiedermi informazioni sui libri di leadership se preferisci letture più recenti!