Cel mai bun răspuns
Fiecare are, evident, preferințele sale. Eu inclus. Deoarece suprapunerea este limitată, trebuie să ne întrebăm cât de „trebuie să citim” cărțile. 🙂 Cu toate acestea, este întotdeauna distractiv să produci o listă.
- The Mythical Man-Month
- Codificare securizată în C și C ++, ediția a doua (aplicabilă numai dezvoltatorilor C și C ++, deși există o versiune pentru Java – cu Ada, în general aveți nevoie doar de John Manualul lui Barnes: Amazon.co.uk: John Barnes: 9781107424814: Cărți )
- Logici ale programului pentru compilatoare certificate: Andrew W. Appel, Robert Dockins, Aquinas Hobor, Lennart Beringer, Josiah Dodds, Gordon Stewart, Sandrine Blazy, Xavier Leroy: 9781107048010: Amazon.com: Cărți
- The Art of Computer Programming, Vol. 1: Fundamental Algorithms, 3rd Edition: 9780201896831: Computer Science Books @ Amazon.com
- Art of Computer Programming, Volumul 2: Seminumerical Algorithms (Ediția a 3-a): Donald E. Knuth: 0785342896848: Amazon.com: Cărți
- The Art of Computer Programming: Volume 3: Sorting and Searching (2nd Edition): Donald E. Knuth: 9780201896855: Amazon.com: Books
- Plase Petri colorate – Modelare și validare a Simultan | Kurt Jensen | Springer
- TCP / IP ilustrat, volumul 1: protocoalele
- Unix Network Programming, Volume 1: The Sockets Networking API (3rd Edition): W. Richard Stevens, Bill Fenner, Andrew M. Rudoff: 9780131411555: Amazon.com: Books
- Programare cu fire POSIX: David R. Butenhof: 0785342633924: Amazon.com: Cărți
Evident, nu toate aceste cărți se aplică tuturor oamenilor. Sunt destul de nebun să abordez câmpul în ansamblu, așa că am toate acestea și multe altele. Cu toate acestea, această selecție este suficientă pentru a obține o înțelegere fermă a programării robuste, a algoritmilor, a rețelelor, a modelării sistemelor și a diferitelor modele de dezvoltare software. Domenii suficient de semnificative pentru ca inginerii software să le acorde atenție.
Răspuns
Voi presupune aici că vorbim despre un inginer software care a obținut competențe tehnice prin școală, bootcamp sau orice altă oportunitate de învățare.
Algoritmii sunt într-adevăr importanți și cartea „ Introducere în algoritmi ” este o lectură obligatorie. Cred că o înțelegere puternică a proiectării software și a proiectării orientate pe obiecte este, de asemenea, esențială, iar Biblia mea este încă cartea „ Modele de proiectare: elemente ale software-urilor reutilizabile orientate către obiecte . ” Exemplele sale din Smalltalk nu o fac cea mai ușor de citit în zilele noastre, totuși nu știu de nicio altă carte cu o asemenea profunzime și amploare pe această temă.
Am întâlnit mulți ingineri care încep la locul de muncă. și am observat câteva lacune de-a lungul anilor, așa că aș dori să sugerez cărți pentru fiecare dintre aceste domenii.
Inginerii noi tind să nu înțeleagă concurența indiferent de limbă. Conceptul de a rula mai multe fire în paralel oferind în același timp nivelul corect de sincronizare între ele nu este ușor de înțeles. Personal am învățat multe citind „ Java simultaneitate în practică ” provenind dintr-un fundal Java. Există, de asemenea, o secțiune bună despre concurență în „ Java efectiv ,” trebuie să citiți despre cum să codificați corespunzător în Java.
Cyber -siguranța este în cele din urmă un subiect fierbinte în zilele noastre. Din păcate, inginerii juniori tind să nu fie conștienți de conceptele de securitate aplicabile codului lor. Un loc bun pentru a începe este citirea OWASP top 10 listă și detalierea vulnerabilității fiecărei aplicații. Sunt un mare fan al „ 24 Păcate capitale ale securității software-ului: defecte de programare și cum să le remediem .”
Noii ingineri tind să se concentreze pe codare. Ei cred că codarea este ceea ce contează și vor să producă un cod bun rapid, uneori bazându-se pe cod greu de citit, deoarece îl pot tasta mai concis. Există doar două probleme cu această gândire: fiecare inginer software creează bug-uri, iar inginerii software lucrează mai bine în echipe! Calitatea este importantă și mentenabilitatea este importantă și ea. Personal, îmi plac cărțile „Working Effectively with Legacy Code” care vorbesc despre testare și necesitatea testării pentru a îmbunătăți codul. „ Clean Code: A Handbook of Agile Software Craftsmanship ” abordează subiectul mentenabilității, uneori cu un punct de vedere extrem, ceea ce îl face o carte excelentă de citit și discutați în echipă.
Noilor ingineri, în special în afara facultății, le poate fi greu să se adapteze la locul de muncă și la noul lor loc de muncă. Acest lucru este adevărat pentru orice inginer, de fapt pentru oricine, care începe și un nou loc de muncă. Există această carte grozavă „ Primele 90 de zile: strategii dovedite pentru a ajunge mai repede și mai inteligent ” care m-a învățat mai multe concepte despre cum să încep la un nou loc de muncă și în special nevoia de structură. Structura este grozavă. Este reconfortant, mai ales într-un mediu nou. Obțin rezultate consistente aplicând aceeași rețetă la fel ca atunci când coc un tort cu fiica mea. Când am început la Wayfair în urmă cu unsprezece luni în echipa de aplicații native, am ales să pun întrebări destul de generice, dar consistente la sosirea mea pentru a obține întinderea terenului. Aceste întrebări nu numai că mi-au dat o idee despre ceea ce se întâmpla, dar mi-au spus multe despre oamenii cu care mă întâlneam. Mi-am îndeplinit misiunea de cercetare a faptelor timp de aproximativ o lună folosind același chestionar la fiecare 1: 1 și am început să îmi listez domeniile de concentrare în prima zi.
Sunt în dezvoltare software de peste douăzeci ani, citind cărți de conducere din ultimii zece ani, așa că nu ezitați să mă întrebați despre cărțile de conducere dacă preferați lecturi mai recente!