Bästa svaret
Alla har uppenbarligen sina egna preferenser. Jag själv ingår. Eftersom överlappningen är begränsad måste man undra hur ”måste läsa” böckerna är. 🙂 Det är dock alltid kul att skapa en lista.
- Den mytiska månaden
- Säker kodning i C och C ++, andra upplagan (gäller endast C- och C ++ -utvecklare, men det finns en version för Java – med Ada behöver du i allmänhet bara John Barnes manual: Amazon.co.uk: John Barnes: 9781107424814: Books )
- Programlogics for Certified Compilers: Andrew W. Appel, Robert Dockins, Aquinas Hobor, Lennart Beringer, Josiah Dodds, Gordon Stewart, Sandrine Blazy, Xavier Leroy: 9781107048010: Amazon.com: Books
- The Art of Computer Programming, Vol. 1: Fundamental Algorithms, 3rd Edition: 9780201896831: Computer Science Books @ Amazon.com
- Art of Computer Programming, Volym 2: Seminumerical Algorithms (3: e upplagan): Donald E. Knuth: 0785342896848: Amazon.com: Books
- The Art of Computer Programming: Volume 3: Sorting and Searching (2: a upplagan): Donald E. Knuth: 9780201896855: Amazon.com: Books
- Colored Petri Nets – Modeling and Validation of Samtidig | Kurt Jensen | Springer
- TCP / IP Illustrated, Volym 1: Protokollen
- Unix Network Programming, Volume 1: The Sockets Networking API (3rd Edition): W. Richard Stevens, Bill Fenner, Andrew M. Rudoff: 9780131411555: Amazon.com: Books
- Programmering med POSIX-trådar: David R. Butenhof: 0785342633924: Amazon.com: Böcker
Uppenbarligen, inte alla dessa böcker gäller alla människor. Jag är tillräckligt galen för att ta itu med fältet som helhet, så jag har alla dessa och en hel del fler. Det här valet räcker dock för att få ett fast grepp om robust programmering, algoritmer, nätverk, systemmodellering och olika programvaruutvecklingsmodeller. Områden som är tillräckligt viktiga för att programvarutekniker ska vara uppmärksamma på dem.
Svar
Jag antar här att vi talar om en programvarutekniker som uppnått teknisk skicklighet genom skolan, bootcamp eller någon annan inlärningsmöjlighet.
Algoritmer är verkligen viktiga och boken ” Introduktion till algoritmer ” är en måste läsas. Jag tror att det är viktigt att ha en stark förståelse för programvarudesign och objektorienterad design, och min bibel är fortfarande boken ” Designmönster: Elements of Reusable Object-Oriented Software . ” Dess exempel i Smalltalk gör det inte det enklaste att läsa nuförtiden, men jag känner inte till någon annan bok med så djup och bredd om ämnet.
Jag har träffat många ingenjörer som börjar på arbetsplatsen. , och jag märkte några luckor genom åren, så jag skulle vilja föreslå böcker för vart och ett av dessa områden.
Nya ingenjörer brukar inte förstå samtidighet oavsett språk. Konceptet att köra flera trådar parallellt samtidigt som man ger rätt synkroniseringsnivå mellan dem är inte lätt att förstå. Jag lärde mig personligen mycket genom att läsa “ Java Concurrency in Practice ” från en Java-bakgrund. Det finns också ett bra avsnitt om samtidighet i “ Effektiv Java ”, det måste du läsa om hur du kodar korrekt i Java.
Cyber -säkerhet är äntligen ett hett ämne nuförtiden. Tyvärr tenderar junioringenjörer inte att vara medvetna om säkerhetskoncept som är tillämpliga på deras kod. Ett bra ställe att börja är att läsa OWASP topp 10-lista och gå igenom varje applikationssårbarhet. Jag är ett stort fan av “ 24 Deadly Sins of Software Security: Programming Flaws and How to Fix Them .”
Nya ingenjörer tenderar att fokusera på kodning. De tror att kodning är det som betyder något, och de vill producera bra kod snabbt och ibland förlita sig på svårläst kod eftersom de kan skriva den mer kortfattat. Det finns bara två problem med det tänkandet: varje programvarutekniker skapar buggar och mjukvaruutvecklare fungerar bättre i team! Kvalitet är viktigt, och hållbarhet är också viktigt. Personligen gillar jag böckerna ”Working Effectively with Legacy Code” som talar om testning och behovet av testning för att göra koden bättre. “ Clean Code: A Handbook of Agile Software Craftsmanship ” tar upp ämnet hållbarhet, ibland med en extrem synvinkel, vilket gör det till en fantastisk bok att läsa och diskutera som ett team.
Nya ingenjörer speciellt utanför college kan ha svårt att anpassa sig till arbetsplatsen och deras nya jobb. Detta är faktiskt sant för alla ingenjörer, egentligen vem som helst som börjar ett nytt jobb också. Det finns den här fantastiska boken “ De första 90 dagarna: beprövade strategier för snabbare och smartare ” som lärde mig flera begrepp om hur jag kommer igång på en nytt jobb och särskilt behovet av struktur. Strukturen är fantastisk. Det är tröstande, särskilt i en ny miljö. Jag får konsekventa resultat genom att tillämpa samma recept precis som när jag bakar en tårta med min dotter. När jag började på Wayfair för elva månader sedan på Native App Team valde jag att ställa ganska generiska men ändå konsekventa frågor vid min ankomst för att få marken. Dessa frågor gav mig inte bara en uppfattning om vad som pågick, utan berättade mycket om de människor jag träffade. Jag genomförde mitt faktauppdrag i ungefär en månad med samma frågeformulär vid varje 1: 1 och började lista mina fokusområden på dag ett.
Jag har varit i programvaruutveckling i mer än tjugo år, läst ledarskapsböcker under de senaste tio åren, så gärna fråga mig om ledarskapsböcker om du föredrar nyare läsningar!