Good people, who are starting out, often undercut their rates to ensure they stay competitive with the plethora of options available to the buyer in the market.
Suppose, I value my work at $30 an hour and I don't have too many projects to show for it but someone else is offering the same skills at $15 an hour but they have a whole portfolio of (somewhat-)shoddily done jobs, 99 times out of hundred, I will lose my contract to the $15-an-hour competitor.
My only option: Quote $15 or less an hour and build up my portfolio. Unfortunately, once you 'sell' yourself for $15 an hour, no one will want to pay you more than that for subsequent projects. Sadly, what no one understands is that $15 an hour only buys you my time; it doesn't buy you my motivation to apply myself to the job. :(
> Unfortunately, once you 'sell' yourself for $15 an hour, no one will want to pay you more than that for subsequent projects.
In my experience, this isn't true. I only freelance part-time now, but I've managed to raise my rate by $10/hr for each separate client I've landed in the past 3 years. Granted, I haven't raised my rates on any of my long-term clients in that time. But the evidence I have (and what I've read) suggests that above a certain price point, many clients have a much higher ceiling for per-hour rates than you'd expect, and that the clients who are strongly price-sensitive are often the ones that you'd as soon not take on.
It's worth stating that this is the MailingListsController and there is no mention of a MailingList. It seems to me like some functionality in the "before" example could live in the MailingList class.