PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mindblow-Bücher


Monger
2016-02-16, 08:45:17
Eigentlich bin ich auf der Suche nach einem guten Buch über Softwarearchitektur, aber vielleicht ist ein Bücherthread ja allgemein nicht schlecht?

Um sich mal von den Dokumentationen und Referenzhandbüchern abzugrenzen: welche Bücher waren für euch eine Offenbarung, und warum? Natürlich ist das sehr individuell: was für den einen toll ist, ist für den anderen schnarchlangweilig.

Ich hab bis Ende des Studiums eher miese Erfahrung mit Softwareliteratur gemacht: entweder waren die Bücher schwafelig-unverständlich, zum gähnen langweilig, oder scheiterten aber am Praxiseinsatz. Dann kamen ein paar Bücher, die ich so spannend fand, dass es mir schwer fiel sie aus der Hand zu legen.

Joshua Bloch: Effective Java (http://www.amazon.de/Effective-Java-2nd-Programming-Language/dp/0321356683/ref=sr_1_1?ie=UTF8&qid=1455606156&sr=8-1&keywords=joshua+bloch+effective+java) (ISBN: 978-0321356680)
Worum geht es?
Um Programmiertechniken (vorwiegend, aber nicht ausschließlich für Java) die knapp oberhalb des elementaren Sprachverständnisses angesiedelt sind: von "wie überschreibe ich korrekterweise ToString?" bis hin zu komplexeren Design Mustern.
Warum ist das so toll?
Mich hat die Klarheit und Einfachheit seiner Sprache fasziniert. Kaum Fachausdrücke, kurze, prägnante Sätze. Selbst komplexe Sachverhalte sind oft runter auf eine halbe Seite destilliert. Für mich war dieses Buch der Beweis, dass programmieren nicht kompliziert sein muss, wenn man es nur richtig erklärt.

Roy Ocherove: the Art of Unit Testing (http://www.amazon.de/Art-Unit-Testing-Roy-Osherove/dp/1617290890/ref=sr_1_2?ie=UTF8&qid=1455606815&sr=8-2&keywords=the+art+of+unit+testing) (ISBN: 978-1617290893)
Worum geht es?
Was sind Unit Tests? Warum sind sie so wichtig? Wie schreibe ich sie richtig, und wie führe ich sie in meiner Organisation ein?
Warum ist das so toll?
Ich hab das Buch einmal kurz nach meinem Studium gelesen, und noch einmal vor einem Jahr. Jedes mal mit vollständig anderen Augen: das erste mal war es ein gutes Basiswerk, ein Einstieg in das umfangreiche Thema. Ich fand es damals ganz gut, aber ein wenig oberflächlich. Das zweite mal war eine völlig andere Erfahrung: plötzlich habe ich die vielen kleinen Referenzen und Hinweise auf andere Autoren und Ideen wahrgenommen, die mir durch die Arbeit der letzten Jahre präsenter waren. Ich konnte das plötzlich ganz anders verknüpfen was er da geschrieben hat. Das Kapitel darüber wie man eine neue Technik wie diese in eine Organisation einführt, schien mir beim ersten mal noch arg theoretisch. Beim zweiten mal wurde mir klar, wie präzise er da die Schwierigkeiten großer Organisationen anspricht.
Heute steht das Buch auf Arbeit im Bücherregal, und ist quasi Pflichtlektüre für jeden der irgendwas mit Softwarequalität zu tun hat.

Mark Seemann: Dependency Injection in .NET (http://www.amazon.de/Dependency-Injection-NET-Mark-Seemann/dp/1935182501/ref=pd_sim_14_1?ie=UTF8&dpID=41LsqcfxGbL&dpSrc=sims&preST=_AC_UL160_SR128%2C160_&refRID=0M18AZ6WF2PQASF04NVX) (ISBN: 978-1935182504)
Worum geht es?
Um ein bestimmtes Softwarearchitekturmuster, bzw. wie man dieses gestützt durch bestimmte Frameworks implementieren kann.
Warum ist das so toll?
Eigentlich ein mieses Buch: elends dick, furztrocken, viele Wiederholungen... der Autor schreibt selbst, die meisten Leser verstehen erst ab der Hälfte, worum es ihm konkret geht. Ich habe mich vor ca. 2 Jahren durch dieses Buch gequält... aber kaum ein Buch wirkte je bei mir so lange nach. Es beantwortet so viele Fragen die mir beim Entwickeln großer Software im Team unklar war: wie macht man Refactoring im großen Stil richtig? Wie gehe ich mit "Cross-Cutting Concerns" wie Logging und Rechteverwaltung um? Wie setze ich eine Software zusammen, wie mache ich sie konfigurierbar?
Und es hat radikal meinen Programmierstil verändert, hin zu etwas was in meinen Augen erstmal sehr kontraintuitiv ist, aber im Ergebnis deutlich strukturierter und verständlicher ist.

Baalzamon
2016-02-16, 10:40:23
Clean Code: A Handbook of Agile Software Craftsmanship (http://www.amazon.de/Clean-Code-Handbook-Software-Craftsmanship-ebook/dp/B001GSTOAM/ref=dp_kinw_strp_1/275-1240618-5942404) (ISBN: 978-0132350884)
Worum geht es?
Jeder Idiot kann Software schreiben die ein Computer versteht, aber die wahre Kunst besteht darin Software zu schreiben die ein anderer Mensch verstehen kann.
Warum ist das so toll?
Für mich war das Buch ein wahrer Augenöffner und hat meine Art zu Programmieren stark beeinflusst. Die hier vorgeschlagenen Techniken um Code strukturierter und für Menschen lesbarer zu machen sind meistens simpel und trotzdem genial wenn sie konsequent angewendet werden. Ausführliche Beispiele und machen das Buch zwar eher zu Arbeit als zu einem 'angenehmen Schmöker', was an dieser Stelle aber eher positiv zu bewerten ist. Außerdem schreibt 'Uncle Bob' sehr unterhaltsam ohne dabei das wesentliche aus den Augen zu verlieren.

hadez16
2016-02-16, 15:14:26
Der Thread vermittelt mir irgendwie, dass ich ein schlechter Mensch bin weil ich knapp 6 Jahre in der Softwareentwicklung tätig bin, aber noch kein Buch gelesen habe wo mir ein Autor erzählen will wie ich was besser machen kann und schon garkeins auf Englisch.

Am I doing anything wrong?

Oid
2016-02-16, 21:04:52
Für die Embedded Kollegen: Der MISRA-C Coding Standard (http://www.misra.org.uk/Buyonline/tabid/58/Default.aspx).

Klingt jetzt erstmal nicht spannend, aber man lernt viel über die dunklen Ecken der Programmiersprache C. Die Regeln sind alle mit Beispiel-Code und ausführlichen Begründungen versehen. Außerdem ist der Preis schon fast lächerlich günstig (15 Pfund), gemessen an dem was man alles daraus lernen kann.

Godmode
2016-02-16, 21:08:00
Der Thread vermittelt mir irgendwie, dass ich ein schlechter Mensch bin weil ich knapp 6 Jahre in der Softwareentwicklung tätig bin, aber noch kein Buch gelesen habe wo mir ein Autor erzählen will wie ich was besser machen kann und schon garkeins auf Englisch.

Am I doing anything wrong?

Die meisten Entwickler schreiben schlechten Code und da nehme ich mich selber auch nicht aus. Wenn man nur eines dieser Bücher gelesen hat, und das gelesene auch umsetzt, hat man schon sehr viel gewonnen.

Clean Code: A Handbook of Agile Software Craftsmanship (http://www.amazon.de/Clean-Code-Handbook-Software-Craftsmanship-ebook/dp/B001GSTOAM/ref=dp_kinw_strp_1/275-1240618-5942404) (ISBN: 978-0132350884)

Das ist ein Must-Read Buch! IIRC ist diese Buch lesen eine Hausaufgabe, wenn man sich bei Microsoft bewirbt.

Monger
2016-02-16, 21:09:43
Am I doing anything wrong?
Ich hab keine Ahnung wie du arbeitest, sag du mir ob du zufrieden bist oder nicht.

Aber ich hab ja schon geschrieben: so Mindblow-Bücher kommen eher sehr selten vor. Das meiste was man liest, liest man halt aus Notwendigkeit, aber echte Begeisterung oder ein deutlicher "Aha!" Effekt stellt sich selten ein.

Das finde ich schade, weil das führt zu dieser Außenwirkung, dass Softwareentwicklung eine sehr trockene und unkreative Angelegenheit ist.

z3ck3
2016-02-16, 22:29:39
Das Problem der Bücher die ich in den Händen gehalten habe war meist das sie schon beim Erscheinen veraltet waren. Und ich fand es dann immer sehr ermüdend wie sie geschrieben waren. Es fällt dann schwer das wirklich interessante aus dem Informationswust raus zu filtern. Noch schlimmer sind glaube ich nur noch YT Videos von bereits schlafenden Entwicklern oder bei Google nach einer Lösungshilfe zu suchen bei der man nur auf Antworten aus dem dritten Jahrhundert stößt.

Falls jemand ein gutes Buch über Javascript oder PHP kennt das sich mehr damit beschäftigt wie man schönen Code schreibt dann immer nur her damit. Ich bräuchte auch mal vernünftige klare Informationen zu Unittesting, Test-driven Development mit PHP (Symfony) und JS (AngularJS). Das ist etwas das ich zu meiner Schande bis heute nicht nur vernachlässigt habe, ich habe mich bisher regelrecht davor versteckt. Dabei schreibe ich meine Methoden und Klassen schon so das sie vermutlich gut testbar sind. ^^

Trap
2016-02-17, 00:09:23
Roy Ocherove: the Art of Unit Testing (http://www.amazon.de/Art-Unit-Testing-Roy-Osherove/dp/1617290890/ref=sr_1_2?ie=UTF8&qid=1455606815&sr=8-2&keywords=the+art+of+unit+testing) (ISBN: 978-1617290893)
Mark Seemann: Dependency Injection in .NET (http://www.amazon.de/Dependency-Injection-NET-Mark-Seemann/dp/1935182501/ref=pd_sim_14_1?ie=UTF8&dpID=41LsqcfxGbL&dpSrc=sims&preST=_AC_UL160_SR128%2C160_&refRID=0M18AZ6WF2PQASF04NVX) (ISBN: 978-1935182504)
Die 2 fand ich auch sehr gut. Das DI-Buch ist da besonders ungewöhnlich: Inhalt ist eigentlich nur "das ist DI, benutzt es!" - aber es hat über 500 Seiten und der Umfang ist verblüffenderweise tatsächlich nötig damit man es versteht.

Noch einen Tipp in der Art kann ich leider nicht anbieten. Michael Feathers: Working effectively with legacy code (http://www.amazon.com/Working-Effectively-Legacy-Michael-Feathers/dp/0131177052) fand ich nicht schlecht, aber für Mindblow ist es zu sehr Rezeptbuch.

Monger
2016-02-17, 04:27:11
Ich bräuchte auch mal vernünftige klare Informationen zu Unittesting, Test-driven Development mit PHP (Symfony) und JS (AngularJS).
Ist sicherlich ein schwacher Trost, aber bezüglich JS / AngularJS: du bist nicht der einzige der da sucht. Die Angular Entwickler wissen das wohl selber noch nicht so genau. Auf Arbeit machen wir Unit Tests in Angular mit Jasmine... das klappt ganz gut, aber der theoretische Unterbau dafür ist hauchdünn. Wir haben da auch kaum Literatur finden können.

littlejam
2016-02-17, 21:40:53
Baron Schwartz, Peter Zaitsev, Vadim Tkachenko: High Performance MySQL (http://www.amazon.de/gp/product/B007I8S1TY/ref=dp-kindle-redirect?ie=UTF8&btkr=1)
Worum geht es?
Nunja, der Titel sagt es schon. MySQL von wirklich allen Seiten beleuchtet.
Ein Must-Have für jeden MySQL-DBA und auch für Entwickler und andere DBA lesenswert.
Warum ist das so toll?
Es ist englisch, äußerst technisch, tief detailliert und trotzdem leicht verständlich.
Neben Tipps für alles Mögliche gibt es viele Fallbeispiele aus dem Leben der Autoren, die dem Ganzen einen Bezug zur Realität und Relevanz geben.
Teilweise find ich in dem Buch schneller und besser Infos als im Internet.

Grüße

maximAL
2016-02-27, 18:39:09
Test Driven Development (http://www.amazon.de/Driven-Development-Example-Addison-Wesley-Signature/dp/0321146530/ref=sr_1_1?s=books-intl-de&ie=UTF8&qid=1456593783&sr=1-1&keywords=Test+Driven+Development.+By+Example) von Kent Beck

Ich versuche schon eine Weile Unit Tests auf Arbeit umzusetzen, allerdings nur mit mäßigem Erfolg. Oft war das Problem, dass die Komponenten zu schwierig zu testen waren. Dabei bin ich sicher den gleichen Weg wie viele andere Entwickler gegangen - Anfangs erst die Komponenten, dann die Tests. Später erst die Tests, dann die Komponenten.
TDD geht noch einen Schritt weiter und verzahnt den Entwurf der Tests und Komponenten. Die Entwicklung läuft immer in Test-Fail-Implement-Succeed-Refactor Zyklen, bei denen das Design der Komponente parallel zum Test entsteht.
Gerade für typische Business-Logik Probleme funktioniert das bis jetzt ganz gut, denn dort dreht man sich bei Up-Front Designs häufig endlos im Kreis, weil es einfach keine gute, saubere Lösung sondern nur Kompromisse gibt. TDD hilft dann sehr gut dabei eben diesen Kompromiss zu finden. Keine zu abstrakten Lösungen, die nachher keiner mehr versteht, aber genug Abstraktion und Entkopplung um alles hübsch modular und testbar zu halten.

Monger
2016-02-27, 22:04:42
Test Driven Development (http://www.amazon.de/Driven-Development-Example-Addison-Wesley-Signature/dp/0321146530/ref=sr_1_1?s=books-intl-de&ie=UTF8&qid=1456593783&sr=1-1&keywords=Test+Driven+Development.+By+Example) von Kent Beck

Danke für den Tipp! TDD beschäftigt uns auch, aber irgendwie kommt es auch nicht in die Gänge. Hab auch noch kein wirklich gutes Buch zu dem Thema gefunden.