small refactr logo
At refactr we believe in the value of connection, the utility of agile processes, and the power of great ideas. We are creating the next generation of software for people who expect more from their web applications.
refactr
« Transparency in salaries | I love a good home construction/software development metaphor »


Round-up of Processes, Methodologies, & Best Practices


Here’s a nice round-up of the major processes and methodologies out there. I’m sure the list isn’t complete, but most of the major ones are touched on. It’s a nice reference because it’s short and sweet.

The author doesn’t specifically endorse any of them over the others, but I’ll go ahead and share my favorites in the Best Practices category (hopefully it’s obvious at this point that we endorse Agile processes and methodologies):

  • DRY (Don’t Repeat Yourself) - I’m always amazed at how an implementation can be flushed out to a nice design when you keep this in mind. When you force yourself to refactor out duplication, you often end up with a far superior design as a nice side effect. I tend to use the “Rule of 3″ with this; the third time I’m about to duplicate something, I try to refactor out the duplication. I find that trying to absolutely eliminate duplication can cost more time than it’s worth. See Refactoring to Patterns as well.
  • TDD (Test Driven Development) - I don’t have as much experience with this as I’d like, but even a taste of it has shown me that there is merit here. It can be a difficult mind-hurdle at first, but testing first has many benefits. You get increased test coverage (duh!), a fast feedback mechanism on what you’re doing, a simple place to start a complex problem, an organic design, etc.
  • YAGNI (You Ain’t Gonna Need It) - Trying to predict the future, especially in software development, rarely works out well. Just accept up front that you don’t need to worry about all the what if’s and life can be so much nicer. Not writing code is probably one of my favorite activities after removing unnecessary code. :)

Well, those are three of my faves; feel free to add any others that you like to the comments.

This entry was posted by Jesse O'Neill-Oine on Monday, November 6th, 2006 at 3:56 pm and is filed under Agile Processes. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

Further Discussion (One Response so far. Add yours)

  1. Ben said...
    Jesse you hit on some good ones, and there are many on the list. Here are three additional refactr faves:

    • Pair Programming - We use this a lot here at work. More interesting for me is how we sometimes pair a designer and a developer for work on more of the client side work.
    • Iterative and Incremental Development - One of the most important things we do is release new code each week. This allows for a great deal of flexibility and responsiveness to the needs of the client. We can essentially change course each and every week; accounting for shifts in focus and priorities.
    • KISS principle (Keep It Simple, Stupid) - Whenever I am trying to solve an interface problem, perhaps deciding between two or more options I know I can rarely go wrong by selecting the simplest solution.

    Great list!

Join the Discussion