Beste antwoord
Iedereen heeft duidelijk zijn eigen voorkeuren. Ikzelf inbegrepen. Aangezien de overlap beperkt is, moet men zich afvragen hoe “gelezen” de boeken zijn. 🙂 Het is echter altijd leuk om een lijst te maken.
- The Mythical Man-Month
- Veilige codering in C en C ++, tweede editie (alleen van toepassing op C- en C ++ -ontwikkelaars, hoewel er een versie voor Java is – met Ada heb je over het algemeen alleen John nodig Barnes handleiding: Amazon.co.uk: John Barnes: 9781107424814: Boeken )
- Programmalogics 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, 3e editie: 9780201896831: Computer Science Books @ Amazon.com
- Art of Computer Programming, Volume 2: Seminumerical Algorithms (3e editie): Donald E. Knuth: 0785342896848: Amazon.com: Books
- The Art of Computer Programming: Volume 3: Sorting en zoeken (2e editie): Donald E. Knuth: 9780201896855: Amazon.com: Books
- Gekleurde petrischalen – modellering en validatie van Gelijktijdig | Kurt Jensen | Springer
- TCP / IP geïllustreerd, deel 1: de protocollen
- Unix Network Programming, Volume 1: The Sockets Networking API (3e editie): W. Richard Stevens, Bill Fenner, Andrew M. Rudoff: 9780131411555: Amazon.com: Books
- Programmeren met POSIX Threads: David R. Butenhof: 0785342633924: Amazon.com: Books
Uiteraard niet al deze boeken zijn van toepassing op alle mensen. Ik ben gek genoeg om het veld als geheel aan te pakken, dus ik heb deze allemaal en nog veel meer. Deze selectie is echter voldoende om een goed begrip te krijgen van robuuste programmering, algoritmen, netwerken, systeemmodellering en verschillende softwareontwikkelingsmodellen. Gebieden die zo belangrijk zijn dat software-ingenieurs er aandacht aan zouden moeten besteden.
Antwoord
Ik ga hier aannemen dat we het hebben over een software-engineer die technische vaardigheid heeft verworven door school, bootcamp of een andere leermogelijkheid.
Algoritmen zijn inderdaad belangrijk en het boek “ Inleiding tot algoritmen ” is een must-read. Ik geloof dat het hebben van een sterk begrip van softwareontwerp en objectgeoriënteerd ontwerp ook van cruciaal belang is, en mijn bijbel is nog steeds het boek “ Design Patterns: Elements of Herbruikbare Object-Oriented Software . ” De voorbeelden in Smalltalk maken het tegenwoordig niet het gemakkelijkste om te lezen, maar ik ken geen enkel ander boek met zon diepgang en breedte over het onderwerp.
Ik heb veel ingenieurs ontmoet die op de werkvloer zijn begonnen. , en ik merkte in de loop van de jaren een paar hiaten, dus ik zou graag boeken voorstellen voor elk van deze gebieden.
Nieuwe ingenieurs hebben de neiging om gelijktijdigheid niet te begrijpen, ongeacht de taal. Het concept om meerdere threads parallel te laten lopen en tegelijkertijd het juiste synchronisatieniveau tussen de threads te bieden, is niet gemakkelijk te begrijpen. Ik heb persoonlijk veel geleerd door “ Java Concurrency in Practice ” te lezen vanuit een Java-achtergrond. Er is ook een goede sectie over concurrency in “ Effectief Java ,” wat u moet lezen over hoe u op de juiste manier codeert in Java.
Cyber -beveiliging is tegenwoordig eindelijk een hot topic. Helaas zijn junior ingenieurs niet op de hoogte van beveiligingsconcepten die van toepassing zijn op hun code. Een goede plek om te beginnen is door OWASP top 10-lijst te lezen en de kwetsbaarheid van elke applicatie nader te bekijken. Ik ben een grote fan van “ 24 dodelijke zonden van softwarebeveiliging: programmeerfouten en hoe ze te verhelpen .”
Nieuwe technici hebben de neiging om focus op codering. Ze geloven dat codering het belangrijkste is, en ze willen snel goede code produceren, waarbij ze soms vertrouwen op moeilijk te lezen code omdat ze het beknopter kunnen typen. Er zijn maar twee problemen met dat denken: elke software-engineer veroorzaakt bugs en software-engineers werken beter in teams! Kwaliteit is belangrijk en onderhoudbaarheid is ook belangrijk. Persoonlijk vind ik de boeken “Effectief werken met oude code”, die gaan over testen en de noodzaak van testen om de code te verbeteren. “ Clean Code: A Handbook of Agile Software Craftsmanship ” benadert het onderwerp onderhoudbaarheid, soms met een extreem standpunt, waardoor het een geweldig boek is om te lezen en bespreken als een team.
Nieuwe ingenieurs, vooral niet-afgestudeerden, kunnen het moeilijk hebben om zich aan de werkplek en hun nieuwe baan aan te passen. Dit geldt eigenlijk voor elke ingenieur, eigenlijk voor iedereen, die ook aan een nieuwe baan begint. Er is dit geweldige boek “ De eerste 90 dagen: bewezen strategieën om sneller en slimmer aan de slag te gaan ” waarin ik verschillende concepten heb geleerd om aan de slag te gaan bij een nieuwe baan, en vooral de behoefte aan structuur. Structuur is geweldig. Het is geruststellend, vooral in een nieuwe omgeving. Ik krijg consistente resultaten door hetzelfde recept toe te passen, net als wanneer ik een cake bak met mijn dochter. Toen ik elf maanden geleden op Wayfair begon met het Native App Team, koos ik ervoor om bij aankomst vrij algemene maar consistente vragen te stellen om de lay-out van het land te achterhalen. Deze vragen gaven me niet alleen een idee van wat er aan de hand was, maar vertelden me ook veel over de mensen die ik ontmoette. Ik ben ongeveer een maand bezig geweest met mijn onderzoeksmissie met elke 1: 1 dezelfde vragenlijst en ben op de eerste dag begonnen met het opsommen van mijn aandachtsgebieden.
Ik ben al meer dan twintig jaar bezig met softwareontwikkeling jaren, heb ik de afgelopen tien jaar leiderschapsboeken gelezen, dus voel je vrij om me te vragen naar leiderschapsboeken als je de voorkeur geeft aan recentere boeken!