How we did it:
For any feedback, any questions, any notes or just for chat - feel free to follow us on social networks
Michael C. Feathers
The average book on Agile software development describes a fairyland of greenfield projects, with wall-to-wall tests that run after every few edits, and clean & simple source code.
The average software project, in our industry, was written under some aspect of code-and-fix, and without automated unit tests. And we can't just throw this code away; it represents a significant effort debugging and maintaining. It contains many latent requirements decisions. Just as Agile processes are incremental, Agile adoption must be incremental too. No more throwing away code just because it looked at us funny.
Mike begins his book with a very diplomatic definition of "Legacy". I'l skip ahead to the undiplomatic version: Legacy code is code without unit tests.
Before cleaning that code up, and before adding new features and removing bugs, such code must be de-legacified. It needs unit tests.
To add unit tests, you must change the code. To change the code, you need unit tests to show how safe your change was.
The core of the book is a cookbook of recipes to conduct various careful attacks. Each presents a particular problem, and a relatively safe way to migrate the code towards tests.
Code undergoing this migration will begin to experience the benefits of unit tests, and these benefits will incrementally make new tests easier to write. These efforts will make aspects of a legacy codebase easy to change.
It's an unfortunate commentary on the state of our programming industry how much we need this book.
Jez Humble, David Farley
The step-by-step guide to going live with new software releases faster - reducing risk and delivering more value sooner! * *Fast, simple, repeatable techniques for deploying working code to production in hours or days, not months! *Crafting custom processes that get developers from idea to value faster than ever. *Best practices for everything from source code control to dependency management and in-production tracing. *Common obstacles to rapid release - and pragmatic solutions. In too many organizations, build, testing, and deployment processes can take six months or more. That's simply far too long for today's businesses. But it doesn't have to be that way. It's possible to deploy working code to production in hours or days after development work is complete - and Go Live presents comprehensive processes and techniques for doing so. Written by two of the world's most experienced software project leaders, this book demonstrates how to dramatically increase speed while reducing risk and improving code quality at the same time. The authors cover all facets of build, testing, and deployment, including: configuration management, source code control, release planning, auditing, compliance, integration, build automation, and more. They introduce a wide range of advanced techniques, including inproduction monitoring and tracing, dependency management, and the effective use of virtualization. For each area, they explain the issues, show how to mitigate the risks, and present best practices. Throughout, Go Live focuses on powerful opportunities for individual improvement, clearly and simply explaining skills and techniques so they can be used every day on real projects. With this book's help, any development organization can move from idea to release faster -- and deliver far more value, far more rapidly.
Jeff Brown, Graeme Rocher
Grails is a full stack framework which aims to greatly simplify the task of building serious web applications for the JVM. The concepts within Grails, like interceptors, tag libs, and Groovy Server Pages (GSP), make those in the Java community feel right at home. Grails’ foundation is on solid open source technologies such as Spring, Hibernate, and SiteMesh, which gives it even more potential in the Java space: Spring provides powerful inversion of control and MVC, Hibernate brings a stable, mature object relational mapping technology with the ability to integrate with legacy systems, and SiteMesh handles flexible layout control and page decoration. Grails complements these with additional features that take advantage of the coding–by–convention paradigm such as dynamic tag libraries, Grails object relational mapping, Groovy Server Pages, and scaffolding. Graeme Rocher, Grails lead and founder, and Jeff Brown bring you completely up–to–date with their authoritative and fully comprehensive guide to the Grails 2 framework. You’ll get to know all the core features, services, and Grails extensions via plug–ins, and understand the roles that Groovy and Grails are playing in the changing Web. What you’ll learn Discover how the Web is changing and the role the Groovy language and its Grails framework play Get to know the Grails Project and its domains, services, filters, controllers, views, testing, and plug–ins Experience the availability of plug–ins for Rich Client and Ajax, web services, performance/utilities, scheduling, security, functionality, and even Persistence See how Grails works with other frameworks like Spring, Wicket, Hibernate, and more Create custom plug–ins in Grails Who this book is for This book is for everyone who is looking for a more agile approach to web development with a dynamic scripting language such as Groovy. This includes a large number of Java developers who have been enticed by the productivity gains seen with frameworks such as Ruby on Rails, JRuby on Rails, etc. The Web and its environment is a perfect fit for easily adaptable and concise languages such as Groovy and Ruby, and there is huge interest from the developer community in general to embrace these languages.
Christopher M Judd, Joseph Faisal Nusairat, Jim Shingler
Offers instructions for working with the Groovy programming language and the Grails Web framework, covering such topics as building a user interface, security, Web 2.0, reporting, batch processing, and deploying and upgrading applications.
Christopher M. Judd, Joseph Faisal Nusairat, Jim Shingler, Vishal Layka
Web frameworks are playing a major role in the creation of today's most compelling web applications, because they automate many of the tedious tasks, allowing developers to instead focus on providing users with creative and powerful features. Java developers have been particularly fortunate in this area, having been able to take advantage of Grails, an open source framework that supercharges productivity when building Java–driven web sites. Grails is based on Groovy, which is a very popular and growing dynamic scripting language for Java developers and was inspired by Python, Ruby, and Smalltalk. Beginning Groovy, Grails and Griffon is the first introductory book on the Groovy language and its primary web framework, Grails. Griffon also covered. While Grails is the Web framework for building Groovy Web applications, Griffon is the deskop framework for building desktop Groovy applications. Could Groovy be the new Java? It's light, fast and free (open source). This book gets you started with Groovy, Grails and Griffon, and culminates in the example and possible application of some real–world projects. You follow along with the development of each project, implementing and running each application while learning new features along the way. What you’ll learn Understand the fundamentals of the open source, dynamic Groovy scripting language and the Grails web framework. Capitalize upon Grails’ well–defined framework architecture to build web applications faster than ever before. Improve your web application with cutting–edge interface enhancements using Ajax. Use Grails’ object–relational mapping solution, GORM, to manage your data store more effectively than ever before. Take advantage of Groovy to create reporting services, implement batch processing, and create alternative client interfaces. Deploy and upgrade your Grails–driven applications with expertise and ease. Discover an alternative client in Groovy as well. Explore the Griffon framework for creating Groovy-based desktop applications. Who this book is for Java and web developers looking to learn and embrace the power and flexibility offered by the more agile, lightweight Groovy scripting language and its Grails and Griffon frameworks.
Groovy and Grails Recipes is the busy developer's guide to developing applications in Groovy and Grails. Rather than boring you with theoretical knowledge of “yet another language/framework,” this book delves straight into solving real–life problems in Groovy and Grails using easy–to–understand, well–explained code snippets. Through learning by example, you will be able to pick up on Groovy and Grails quickly and use the book as an essential reference when developing applications.