Getting software-engineering insights by reading other people’s stuff has always been a delight. Though the browsable web (blogs, articles, tutorials) has tons of free valuable information, there are definitely many magazines and books worth to buy.
Magazines
Here an excerpt of magazines with current most hot topics on IT and software engineering.
- Java Magazin (german): Focuses development issues with java-background. Other interesting topics (design, architecture, processes) are always inside, too.
- Objekt Spektrum (german): General topics on software-engineering. Focused on concepts/methodologies.
- Informatik-Spektrum (german): Magazine on computer science (publisher Gesellschaft für Informatik (GI) ).
- c’t (german): About IT in general (hardware/software tests, research, law, society, etc.).
Books
Here an excerpt of my bookshelf. The books I like or which helped me the most:
- Code Complete 2 (Microsoft press): Book with many little hints and helpings regarding the whole software construction.
- Pragmatic Programmer (Addison-Wesley): This book shows that you can achieve a lot, even if you change little habits.
- Refactoring (Addison-Wesley): First book on refactoring topic. Easy reading and good examples.
- Refactoring to Patterns (Addison-Wesley): Refactorings on design patterns abstraction.
- Refactorings in Großprojekten (german, dpunkt.verlag): Shows larger scale refactorings.
- Working effectively with legacy code (Pearson): Explains how to handle the egg/hen problem with refactorings (no test -> no safety-net for refactorings, no refactorings -> no possibility to introduce tests). Here you also get big insights on design and architecture (-> well testable systems are also well designed ones).
- xUnit Test Patterns (Addison-Wesley): Superb introduction, why test automation is so important and many patterns, how to organize your test suites. It has ‘Unit’ in its book title, but it gives you a very good understanding on automatic integration tests also.
- Continous Integration: First and good book on the Continous Integration concept.
- Design Patterns, GoF (Addison-Wesley): Reference book on patterns.
- Head first Design Patterns (O’Reilly): Hillarious book, which explains patterns with pictures and daily-life examples. It shows, that you can both laugh and learn about software development at the same time. Very good explanations of design principles, too. If you haven’t got in touch with design and patterns yet and want to dig in, start with this book!
- Moderne Software-Architektur (german, dpunkt.verlag): Connects well the topics architecture, maintainability and quality.
- Enterprise Integration Patterns (Addison-Wesley): Reference work on patterns especially for message oriented architecture.
- Patterns of Enterprise Application Architecture (Addison-Wesley): Enterprise patterns focused on web and database tier.
- Domain Driven Design (Addison-Wesley): Shows how to map the requirements and business model more directly to the software structure and thus to create an overall better communication between developers and business people.
- Software-Architektur (german, Spektrum Akademischer Verlag): Good overview about software architecture as a discipline.
- Software Configuration Management Patterns (Addison-Wesley): Good introduction, why version control and its handling is so important for software development. Further shows patterns how to organize you version control the best way.
- Software Measurement, Establish-Extract-Evaluate-Execute (Springer-Verlag): Good hints and case studies how to handle and include metrics to your process.
- Code Quality Management (german, dpunkt.verlag): Tells, why technical quality of software is so important and gives a collection of senseful metrics.
- Why Programs fail (Addison-Wesley): Discusses the debugging-topic. Very helpful for daily (practical) development. Further gives ideas about debugging tools in future.
- Software-Qualitätsmanagement in der Praxis (german, Hanser): Good overall and process-oriented picture on software quality assurance.
- J2EE Design and Development (Wrox): Rod Johnson shows here why big-hammer technologies (like EJB 2.x) are often more hindering than helpful. The consequences of this book’s thoughts have by the way led to the great and lightweight Spring-Framework.
- Softwarewartung (german, dpunkt.verlage): The first book I know of which covers software maintenance from the practical side of view.
- Software Evolution and Feedback (Wiley&Sons): Collection of interesting scientific papers on software evolution/maintenance.
- Modellgetriebene Softwareentwicklung (german, dpunkt.verlag): Good introduction and not (like many other books on MDA) limited to special tools of MDSD.
- The Mythical Man-Month (Addison-Wesley): Observations about the nature of software-engineering. Because this book is already quite old (~30 years) and the mentioned points are still up-to-date with today’s systems this book shows that certain principles are stable.
- Soft Skills für Softwareentwickler (german, dpunkt.verlag): Explains how to tackle the often underestimated challenge of having a “good” communication in a organization. Focuses on the software engineering work and people who develop software.
- Groovy in Action (Manning): Very good introduction on dynamic concepts and Java language limits. The rest of the book has many good examples how groovy-scripting can help you.

