Ship It!: A Practical Guide to Successful Software Projects

23 Aug

Many software projects run into trouble, and many never ship at all. Others run like well-oiled machines. This book shows you the basics of how to get your project well on the road to success.

Ship It! bucks current fashion trends and marketing hype; instead, you’ll find page after page of solid advice, all tried and tested in the real world: a collection of tips that show you what tools a successful team has to use, and how to use them well. You’ll get quick, easy-to-follow advice on modern techniques and when they should be applied.

Few of the ideas presented here are controversial or extreme; most experienced programmers will agree that this stuff works. Yet 50 to 70 percent of all project teams in the U.S. aren’t able to use even these simple, well-accepted practices effectively. This book will help you get started.

Ship It! begins by introducing the common technical infrastructure that every project needs. Readers can choose from a variety of recommended technologies according to their skills and budgets to get the job done. The next section outlines the necessary steps to get software out the door reliably, using well-accepted, easy-to-adopt, best-of-breed practices that really work.


  • Use the right tools to guide and protect your project, and tame those that can hurt you
  • Effectively manage features and issues to keep both users and managers happy
  • Improve everyone’s communication and collaboration using simple techniques
  • Recognize how great developers and great managers work in concert—and how to fix it when they don’t
  • Know how to answer the Frequently Asked Questions and fix the common problems that everyone faces on modern projects

Finally, and most importantly, Ship It! presents common problems and danger signs that arise and offers real-world advice on how to solve them, in the widely-accepted form of a FAQ (Frequently Asked Questions).

Some popular methodologies are based on academic theory or one-off, lucky projects. The practices, ideas, and tools presented here were born in the real world, and represent the best of modern software development techniques with a few novel twists and helpful insights.

This book is suitable for anyone interested in applying pragmatic principles to modern software development.

This book is for you if:

  • You’re frustrated at lack of progress on your project.
  • You want to make yourself and your team more valuable.
  • You’ve looked at methodologies such as Extreme Programming (XP) and felt they were too, well, extreme.
  • You’ve looked at the Rational Unified Process (RUP) or CMM/I methods and cringed at the learning curve and costs.
  • You need to get software out the door without excuses

In short, you need this book if you want to Ship It!.

Go to Amazon

Extreme Programming Review

15 Aug

XP is a discipline of the business of software development that focuses the whole team on common, reachable goals. XP teams develop and produce quality software at a sustainable pace.

XP brings accountability and transparency to software development.

XP provides different practices to software development team to improve their performance and quality, following are some of the practices introduced by XP:

– Testing early, often and automated: Unit testing
– Incremental design: design everyday
– Daily deployment
– Customer involvement: immediate feedback
– Refactoring
– Continuous integration
– Short development cycles
– Incremental planning

Using above practices day-to-day help us to reduce our development stress and improve our development quality.

Practices are evidence of values, values such as communication, simplicity, feedback, courage, respect, as well as other values like quality-of-life, safety, security and predictability. XP embrace these values.

There are principles that guide XP. It follows principles to build a bridge between values and practices. Principles based on humanity, economics, mutual benefits, self-similarity, improvement, diversity, reflection, flow, opportunity, redundancy, failure, quality, baby steps, and responsibility.

We use the principles to understand the practices better and to improvise complementary practices. Understanding the principles gives you the opportunity to create practices that work in harmony with your existing practices and your overall goals.

XP became to make life better for programmers.

Extreme Programming

8 Aug

Extreme Programming (XP) is a software development methodology which is intended to improve software quality and responsiveness to changing customer requirements. As a type of agile software development,it advocates frequent “releases” in short development cycles (timeboxing), which is intended to improve productivity and introduce checkpoints where new customer requirements can be adopted.

Other elements of extreme programming include: programming in pairs or doing extensive code review, unit testing of all code, avoiding programming of features until they are actually needed, a flat management structure, simplicity and clarity in code, expecting changes in the customer’s requirements as time passes and the problem is better understood, and frequent communication with the customer and among programmers. The methodology takes its name from the idea that the beneficial elements of traditional software engineering practices are taken to “extreme” levels, on the theory that if some is good, more is better. It is unrelated to “cowboy coding”, which is more free-form and unplanned. It does not advocate “death march” work schedules, but instead working at a sustainable pace.

Critics have noted several potential drawbacks, including problems with unstable requirements, no documented compromises of user conflicts, and lack of an overall design specification or document.

Extreme Programming Explained: Embrace Change

8 Aug

Software development projects can be fun, productive, and even daring. Yet they can consistently deliver value to a business and remain under control.

Extreme Programming (XP) was conceived and developed to address the specific needs of software development conducted by small teams in the face of vague and changing requirements. This new lightweight methodology challenges many conventional tenets, including the long-held assumption that the cost of changing a piece of software necessarily rises dramatically over the course of time. XP recognizes that projects have to work to achieve this reduction in cost and exploit the savings once they have been earned.

Fundamentals of XP include:

  • Distinguishing between the decisions to be made by business interests and those to be made by project stakeholders.
  • Writing unit tests before programming and keeping all of the tests running at all times.
  • Integrating and testing the whole system–several times a day.
  • Producing all software in pairs, two programmers at one screen.
  • Starting projects with a simple design that constantly evolves to add needed flexibility and remove unneeded complexity.
  • Putting a minimal system into production quickly and growing it in whatever directions prove most valuable.

Why is XP so controversial? Some sacred cows don’t make the cut in XP:

  • Don’t force team members to specialize and become analysts, architects, programmers, testers, and integrators–every XP programmer participates in all of these critical activities every day.
  • Don’t conduct complete up-front analysis and design–an XP project starts with a quick analysis of the entire system, and XP programmers continue to make analysis and design decisions throughout development.
  • Develop infrastructure and frameworks as you develop your application, not up-front–delivering business value is the heartbeat that drives XP projects.
  • Don’t write and maintain implementation documentation–communication in XP projects occurs face-to-face, or through efficient tests and carefully written code.

You may love XP, or you may hate it, but Extreme Programming Explained will force you to take a fresh look at how you develop software.

Go to Amazon

The Pragmatic Programmer: From Journeyman to Master

7 Aug

Straight from the programming trenches, The Pragmatic Programmer: From Journeyman to Master cuts through the increasing specialization and technicalities of modern software development to examine the core process—what do you do, as an individual and as a team, if you want to create software that’s easy to work with and good for your users.

This is the title that got us started in the book business. It’s published by Addison-Wesley, but we’re offering for sale here simply because people come looking for it.

Read this book, and you’ll learn how to:

  • Fight software rot.
  • Catalyze change.
  • Avoid the trap of duplicating knowledge.
  • Write flexible, dynamic and adaptable code.
  • Harness the power of basic tools.
  • Avoid programming by coincidence.
  • Bullet-proof your code with contracts, assertions and exceptions.
  • Capture real requirements.
  • Keep formal tools in their place.
  • Test ruthlessly and effectively.
  • Delight your users.
  • Build teams of pragmatic programmers.
  • Take responsibility for your work and career.
  • Make your developments more precise with automation.

Go to Amazon

Rails 3 Screencasts

5 Aug

by Gregg Pollack – Envy Labs

At Railsconf I announced the release of the Rails 3 screencasts I’ve been working on for the past few months.  Here at Railsconf Envy Labs ran a three hour Rails 3 tutorial (which received fantastic feedback).  These screencasts basically cover the same content we presented in the tutorial (without the labs).

There are six different videos which are all published on the official website.  There’s a two minute Introduction video,  Getting Started & Action DispatchBundler & Action MailerActive Relation & Active Model,  Cross-site scripting & Unobtrusive JSThe New Action Controller.  Here’s the introduction video to get your appetite wet.

Agile Toolkit

31 Jul

An Agile developer needs a bunch of tools that support agile projects, following is a list of vital tools for every agile project:

1. Text Editor
2. Source Code Control System (Version Control)
3. Project Management and Tracking System
4. Unit Testing (Test Driven Development)
5. Continuous Integration
6. Deployment Automation (Build Automation)
7. Wiki

For more details please refer to Practices of an Agile Developer and Pragmatic Programmer books.

Beautiful Markup

31 Jul

by Gregg Pollack

One of the best talks at Railsconf was given by John Athayde on Curing Div-itis with Semantic Html, CSS, and Presenters. John was nice enough to redo his talk for me at the conference so I could properly capture it and share it with you. In his talk he goes through several techniques they employ at InfoEther to create beautiful markup in their web applications.

Review: Practices of an Agile Developer

18 Jul

Mind Map: Practices of an Agile DeveloperRecently I read ‘Practices of an Agile Developer’ book by Venkat Subramaniam and Andy Hunt, in this book we read a lot of practices, ideas, and approaches of successful agile software developers and the book presents them in a series of short, easy-to-digest tips. It covers following topics and this picture shows mind-map of the book:

– Agile Software Development

– Agile Manifesto

– Agile Toolkit

– Outcome over process idea

– Feeding Agility

– Brown-Bag sessions

– Invest in your team and how to keep up-to-date

– Learn and unlearn

– Track issue

– Design and business analysis

– Deployment automation

– Releasable code

– Continuous Integration

– CRC cards

– Iteration and incremental development

– Agile feedback

– Agile design and business analysis

– Backlog technique

– Measure progress

– Scrum sprints

– Importance of feedback by team, code, and user

– Unit testing and T.D.D

– Encapsulation

– Elegant Code

– Commenting

– Inheritance and delegation

– Agile debugging

– Exception handling

– Solution logs

– Prototype

– Project sharing

– Stand up meeting

– Information radiator

– Rescue a failing project

It is a great book and I highly recommend it for developers, project managers, and IT professionals.

Practices of an Agile Developer

18 Jul

Want to be a better developer? This book collects the personal habits, ideas, and approaches of successful agile software developers and presents them in a series of short, easy-to-digest tips.

You’ll learn how to improve your software development process, see what real agile practices feel like, avoid the common temptations that kill projects, and keep agile practices in balance.

You’ll see how to:

  • Establish and maintain an agile working environment
  • Deliver what users really want
  • Use personal agile techniques for better coding and debugging
  • Use effective collaborative techniques for better teamwork
  • Move to an agile approach

Go to Amazon