Newby: General Application Design Question

I have a fairly simple [I hope] high level question:

What is the best approach for developing a rails application?

For example:

  1. Requirement analysis with client
  2. Design of web site [layout, css-slicing]
  3. Coding
  4. Testing

I know this sounds very simple, but I have really come to enjoy
scripting RoR applications for my work and office, but I cannot figure
out how professional application designers approach this very basic
need. Do you professional guys usually have a design and layout that
the customer likes before you code, or do you code an barebones
prototype first and make sure the customer is happy with functionality
before you do any design?

When you do decide to focus on design, do you do it yourself
[e.g.Photoshop images sent off for CSS slicing] or do you farm that
out to a professional web designer?

Thanks in advance.

Hi Bruno,

It depends on budget, priorities and the type of application you’re
trying to build. I often work with ad agencies on reasonably simple cms
and e-commerce sites. For those, we just agree high level features, they
work with the client on an approved look and feel and then we turn the
provided psd files into HTML/CSS and drop them into the system.

For the 20% of the projects we do that are more functionally
interesting, we’ll often do a short fixed-effort discovery phase to
clarify business intent, audiences and the key tasks each role needs to
be able to perform (user stories). We’ll also do spikes around any large
areas of tech risk like new third party API integrations and will then
provide an estimate and a suggested dev plan (usually scrum with 2 week
iteration for greenfields, sometimes kanban). We don’t schedule all the
sprints - just the first sprint or enough stories to fill our kanban WIP

In parallel with the dev, the designers will work with the client on
look and feel, but I often like to get most of the way there
functionally before getting locked into designs that may not be
consistent with the UI requirements from a usability perspective. I also
try for much more simple and flexible markup on such projects so if we
have to iterate over the designs, we can do so fairly inexpensively.

In terms of testing, we discuss business objectives and how they could
be tracked before we start the project so the client can measure some
kind of ROI. We use cucumber for acceptance testing (as part of agreeing
story specs so usually as part of sprint planning) and either rspec (for
ruby) or a similar BDD influenced framework (e.g. spock for Groovy) for
unit tests.

Most coding is 1 up, although we pair on anything interesting and I pair
whenever I meet someone at a conference I’d like to learn from. We use
git for source control and projects with more than 2 devs we always use
Hudson for Continuous integration.

Best Wishes,

on sure thing you have wrong is this

  1. Coding
  1. Testing

it should be

  1. write test
  2. fails test
  3. write code
  4. pass test

repeat as necessary.

Also try to convert what the costumer tells you into stories, and let
guide your test and consequently your code. Functionality should be
the same( or require minor changes) no matter the appearance of the
like peter said try to “get most of the way there functionally before
getting locked into designs”.

+100 on test first.

Good reading on software development in general includes “The Pragmatic
Programmer”, “Extreme Programming Explained: 2nd Edition” and Mike
Cohn’s “Agile Estimating and Planning”. There are a million good books,
but those three wouldn’t be a bad start to any programmers bookshelf.

There’s also a great rspec book out there for the details of
implementing testing in Ruby using rspec and cucumber.

Best Wishes,