I just watched Mike Monteiro’s recent talk “F*ck you. Pay me.” which has a lot of great advice about how to get make sure you get paid for your work when doing service work for clients. It was targeted at designers, but it rings true for development as well. His talk focused around contracts. I thought I would add a few notes about what I’ve learned in running my own business for the past two years.

I started software development consulting with many years experience in contract negotiation. I have always had a policy of never starting work without a contract. When I first started consulting, I would work hard to get a contract signed as soon as possible. Now I take the time to make sure that this is a relationship I want to get into. I want to make sure we work with clients who need our services and want to work the way we work. We have always provided great value for our clients, but the best value for clients who are aligned with us in wanting agile development processes and where there is a high level of trust.

The legal agreements document a trust relationship, they don’t substitute for one. Never surprise a client in a contract. If they are surprised, just treat it as a communication gap. Your standard contract documents your standard business practices.

When I started, I identified two areas that I would have to learn more about and do well: collections and keeping track of finances. The third thing that I didn’t know I needed to understand was cash flow. For this post, I’ll focus on collections, which is the other side of the legal concerns that Mike talked about. Sometimes, all is good, but there’s a process to getting paid and every company is just different enough to get you into trouble.

As soon as the contract is signed, ask “who can I talk to so that I understand how you process payments?” You want to know:

  • Are electronic invoices ok? or do they need paper?
  • Who should the invoices be sent to?
  • What is the approval process?
  • Who is the person who writes the checks or authorizes electronic bill pay?
  • Where are they sent from?

You want to know every step of what happens from when you send your invoice to when the check is in your bank. If cash is tight, you want to have a phone call with the person who writes the check. I would just be open with them and let them know that I run a small company and that I had to be sure my folks got paid in a timely manner.

When I establish that rapport up front, the conversations are much easier if the check didn’t arrive. Better yet, I would have a conversation like this: “Hey Betty. I sent an invoice to Bob yesterday and he told me he approved it. Did it get to you yet? Great. So, will payment go out today?” Once I caught my own mistake that way. I was using new invoicing software which had its default payment terms as Net 45, which was significantly longer than what the contract said. This company had a policy of using the longer of contract or invoice terms. With one friendly conversation, I was able to ensure the check got sent out weeks earlier than it otherwise would have.

And lastly, the most important thing to getting paid: always invoice on time.

At last week’s WCA panel, Jeff Haynie, CEO and founder of Appcelerator, suggested that mobile frameworks will continue to gain traction because of the rise in complexity of mobile applications. Mobile applications are becoming context-aware. They know who you are, where you are — the physical sensors are augmented by the potential for this personal device to have very detailed information about us, which being connected to vast data stores and services in the cloud.

Applications are integrating social features. Isaac Mosquera, CTO and founder of AppMakr, sited the integration of social context when I asked how they will be different from other point-and-click tools for generating applications that have fallen by the wayside. We now have these cloud-hosted social networks, twitter, facebook, linkedin, that know who we care about, who are friends and colleagues are.

Adam Blum, CEO and founder of Rhomoble, spoke about how NFC (near-field communication) will change the kinds of applications we develop. NFC-capabilities are part of the Rhodes 3.0 release and available on new Android and BlackBerry devices.

Andre Charland, CEO of Nitobi, the makers of PhoneGap, agreed that there’s an exciting future for mobile apps of growing complexity, but he also cautioned developers and entrepreneurs in the audience that we need useful applications. I agree there is room for innovation along practical vectors.

Jeff compared the rise in cross-platform mobile frameworks to what we saw on the web when applications like Gmail appeared. I think the analogy is apt. We can look at the rise of web frameworks like jQuery, Ruby on Rails, and see similar industry and technical trends. It seems there is an inflection point. Where engineers have been building something long enough that patterns are well understood and when there is enough CPU and memory to support a layer of abstraction, then it is practical to build a framework. When the applications we are working to build rise in complexity, then it becomes necessary to use a framework.

I enjoyed moderating this panel of leaders in mobile development. Many thanks to WCA for creating the event.

I am happy to announce that our next series of classes at Blazing Cloud are starting soon!

We will be offering an evening Javascript for Programmers class from May 25th to June 30th, which is targeted toward web developers who have been coding with another language and would like to learn Javascript. This class is taught by Max Carlson, co-founder of Laszlo Systems. Max is a JavaScript wiz and an experienced teacher. He’ll be teaching with our standard test-first approach, and I’m really looking forward to seeing him in action.

We will also be hosting an introductory evening Ruby class for people who have never programmed before, or who have a limited amount of experience programming in another language. The Learn to Program in Ruby class will run from May 25th to June 29th, and is open to anyone, including students and children (if they bring a grown-up)! This class will be co-taught by longtime programmer and Ruby enthusiast Brian Jenkins and Walter Yu, an active RailsBridge teacher who also helps with Engine Yard University. I’m so excited to have Anita Kuno as a virtual TA, which enables us to offer this special class also as a webinar.

Each of these classes will be held at Blazing Cloud in San Francisco, where instructors are passionate programmers currently working in the field, encouragement and delicious snacks are provided for optimal learning success rates, and brightly colored inflatable animals roam freely throughout the workspace inspiring creativity and fun filled brilliance. We take our coding seriously, but I firmly believe that playfulness enhances learning. I’m very excited to have these new teachers bringing their ideas and enthusiasm to Blazing Cloud.

Sign up now and tell your friends. I’ve extended early bird pricing till Saturday, May 12th, and scholarships are available.