June 02, 2009

Agile Design, O RLY?

We had a great Hashrocket Book Club discussion today about a Cennydd Bowles article on A List Apart: Getting Real About Agile Design. Our discussion revolved around the integration of our very XP-like process with traditional and so-called "Agile Design", the evolution of design activities that traditionally have been very waterfall-like and involving heavy research phases.

Les made a pretty bold statement that design people are stuck where developers were 10 years ago, prior to wide adoption of Agile.

Here are the rest of my rough bullet point notes, in the hopes of getting a discussion started about this important topic.

  • There is a trichotomy* when discussing "design": Experience, Application and Graphic. Or sometimes you say "design" and you mean all three. That makes it difficult for everyone I know to talk about "design" without getting really confused.
  • User experience design involves the entire interaction of a user with a business and its technology, which makes it different than application and interaction design, which has more to do with the design of screen interactions and forms and pages.
  • Projects should have mini-milestones that represent "user journeys" as described in the article -- stories chained together to represent a path through the application -- and different than the concept of an "epic story".
  • The meaning of iterations still presents issues (even to us) in terms of thinking that they constitute weekly milestones. I say that iterations are nothing except dumb timeslices that enable tracking of velocity, but I realize that is far from a universal view in Agile circles. See The Story is The Iteration as practiced by Hashrocket, Pivotal Labs and others.
  • It's hard to envision experience and application design as happening after storycarding, since the storycarding process is dependent on having that design already done.
  • There are ways to start intertwining design with Agile the way that we're practicing it, but not like in the Bowles blog post, because Hashrocket usually acquires clients that have their application design done. Except that's not actually the case now, because since Andrew came on board we're participating in the earlier stages of the project, even starting at the concept phase.
  • There is value in developers championing the user experience throughout the project, being more than just programming robots. This implies that our developers have design savvy.
  • Customers are not experts in experience and application design and they cannot replace designers on XP projects.
  • The comparison in the Bowles blog post between software and the movie industry is flawed, because movie projects don't do small or often releases.

* Yes, I know that trichotomy is not really a word. But "dichotomy" implies two things, not three. Update: As pointed out by Thufir in the comments, it is a word. (I originally checked and didn't find it in my dashboard dictionary.)

May 20, 2009

BizConf Venue Teaser

BizConf Venue Teaser from Hashrocket on Vimeo

May 19, 2009

IP and Non-Competes for Employees

Got the following email the other day, concerning intellectual property issues and non-compete agreements:

I was wondering how Hashrocket handles intellectual property and non-competes with its employees.  Is it something that your developers are required to sign as a new employee?

I ask because I got into a deep discussion with my boss about this.  The employee agreement he came up with basically says that he owns any software / web related intellectual property that I work on (on and OFF the clock).  The non-compete section says that I can't start my own business or work for another firm in the same or surrounding states.

I have an issue with him owning the intellectual property for work I do off the clock.  It makes me less motivated to learn and be innovative when I'm tinkering around on my own. I have my pet projects that I don't want him to have any part in.  His argument is that he doesn't want his employees using company resources (software and laptops) to start their own business... which gets into the non-compete.

The answer is an emphatic "NO!" I do not require non-compete agreements to be signed by new hires at Hashrocket. Neither do I try to claim ownership of work that they do off the clock (open or closed source), a practice I learned from and admired at my former employer, ThoughtWorks.

Work done on the clock is a different story. We have the notion of chartered projects, internal initiatives which you are paid to work on for at most 5 hours per week or when paying client work is not available. If I'm paying someone to work on something then Hashrocket owns it, end of story. Actually, there could be some gray areas there, like bringing interesting outside projects in-house in order to make more progress on them, but in that case reasonableness is key.

Anyway, a non-compete agreement (or non-compete clause in a larger contract) restricts employees from engaging in similar work after leaving your firm. I didn't like them as an employee and I don't like them as an employer either, because I think they're fundamentally unfair. If as the owner of the firm I'm insecure about my people leaving and competing with me, then I'm doing it wrong. Keeping my people from being innovative on and off the job is exactly the opposite of what I need to be doing.

The rationale that your boss used with you, that he "doesn't want his employees using company resources (software and laptops) to start their own business", is IMO such a cynical asshole thing to say to anyone. I've heard it before, and it always pisses me off. The thought process doesn't come up at Hashrocket because I require my people to buy and maintain their own computers. Professional craftsmen have their own tools, yada, yada... that's the subject for a different blog post.

And paid software? Really? What do we actually use for Rails development that costs money? Texmate? (Use vim to solve that problem.) I guess Adobe products are a notable exception there, but I still can't bring myself to look at the situation with such shortsightedness as to try and prevent someone from using tools that I purchased for them to further their career. I just realized why that is -- I see my mission as their "boss" to help further their career! (The rewards from treating your employees this way are immeasurable.)

Incidentally, non-compete agreements are not enforceable in California, but elsewhere in the USA they are legally binding, so you should be very careful signing anything with a non-compete clause.

My suggestion to people presented with non-compete clauses in their offer letters or as part of agreements signed post-hiring, is to strike the offending clause from the contract and initial the change. Do that or refuse to sign the agreement altogether. Yes, it takes chutzpah to do what I'm suggesting, but c'mon now... you shouldn't kick off your new job by bending over and taking the corporate shafting from day one. Given the time and expense needed to find qualified hires nowadays, after some initial fussiness from HR or the hiring manager, the whole matter will be forgotten. If they try to force you to sign under threat of termination then you really should be evaluating whether you wanted the job in the first place. Seriously.

I do believe in a particular type of informal non-compete agreement, which I make verbally with all my people. I ask my people to refrain from "moonlighting" (doing side work) of the same type that they do during the day at Hashrocket. As an employer, you should do that too, but only if you pay competitively!

I can't forcefully prevent my people from moonlighting, but I discourage it strongly for one simple reason: burnout risk. Rocketeers work very hard every single day of every single week, putting in 35-40 hours per week doing intense pair-programming. I want them to go home and relax, so that they're fresh the next morning. Think that's an unreasonable request? Don't come work for me.

On a final note, I think it's a good idea, as a company that sponsors open-source projects and encourages open-source work on the clock, to have signed contributor agreements from all employees. I haven't done this at Hashrocket but I'm going to look into it soon.

May 17, 2009

Announcing BizConf

Logo

BizConf is a one-of-a-kind, exclusive event that I am hosting about 3 months from now at the Ritz-Carlton Amelia Island Resort in northern Florida. It's a 2-day conference specifically crafted for independent consultants and owners/managers of small to mid-sized web consultancies.

Conference Website: http://bizconf.org

Summary

The conference program is on Thursday and Friday (Aug 20-21, 2009) and the Ritz-Carlton is offering steep discounts on their room rates for up to 3 days before and after the conference. This is a perfect opportunity to turn a "business" trip into a vacation (or golf) getaway with friends and family. I selected the venue particularly because of the luxurious rooms, restaurants and spa, and its location on some of Florida's finest white-powder beachfront and warm, sparkling blue ocean. Amelia Island is conveniently about 30 minutes drive east of Jacksonville airport (JAX) and local transportation can be arranged through the conference.

208650669_c73da06f27_m Check out some more photos of the Ritz-Carlton Amelia Island by Josh Hallett. It is a beautiful and luxurious hotel and we're making the most of it. All meals are included in your conference registration, from special catered breakfasts in SALT Restaurant to the Friday night private dinner and pool party at the Spa. 

Registration is limited to 75 people in order to keep the event intimate and maximize interaction between our presenters and attendees. We have over 20 compelling presenters confirmed so far, with additional announcements happening soon. The program is divided into plenary sessions for everyone in the main room and three breakout session tracks in small conference rooms. Some have questioned the decision to do 4 tracks for such a small conference. The answer is that we will be covering a wide variety of topics, from marketing, to team building, to legal/finance issues, to product development and client services. Attendees will be able to select a mix of topics that suits their exact needs and receive personal attention from the presenters, while still having ample opportunities for networking and creating new friendships in our industry niche.

Presenters
The following list only skims the surface of who you can expect to meet and learn from at BizConf:

Jerry Weinberg is one of my heroes. He has over 30 years of consulting experience and has written many notable books including "The Secrets of Consulting" and "The Psychology of Computer Programming". He will be presenting small group experiential sessions including "Learning to Say No" and "Great Client Expectations".

Roy Singham, my friend and mentor, will be keynoting and spending one-on-one time with attendees. Roy famously grew his tiny Chicago-based consultancy into world-class software consulting powerhouse ThoughtWorks, admirably working to make positive change in the world every step of the way. Martin Fowler has written about Roy on his blog.


Esther Derby and Johanna Rothman are esteemed trainers and co-authors of the Pragmatic's Behind Closed Doors: Secrets of Great Management among other titles. They will be very busy at BizConf with sessions topics including:

    • Recruiting and Keeping Talent Happy
    • Leveraging Personal Sources of Power
    • Levers for Change
    • Interviewing Customers

Don Gray coaches software development organizations to higher levels of productivity. His background in machine and process automation provides the foundation for working with organizational systems and change. His workshops at BizConf will focus on personality types and teamwork, team productivity, and retrospectives.

Ian McFarland, Principal at the esteemed San Francisco-based consultancy Pivotal Labs will present a new model for selling a potent mix of Agile, Ruby on Rails and cloud-computing to CIOs and CTOs in the enterprise world. Ian was a special guest on the Rails Podcast last year.

Corey Haines is one of the warmest, most genuine voices of the Software Craftmanship movement. He is rapidly gaining friends and notoriety from his travel around the world as the wandering journeyman software craftman, sharing programming language with technology professionals in exchange for room and board.

James Duncan Davidson will provide attendees that bring their own DSLRs with a unique opportunity to learn photography from a master of the craft. Learn how to maximize your marketing with candid shots of your people in action.

Jessie Shternshus is founder and owner of The Improv Effect and has worked with companies such as CBS, Paramount Pictures, MTV and Sesame Workshop. Jessie merges her lifelong passion and expertise of improvisational acting with the fast paced demands of the corporate world. In her classes and workshops she helps people become better listeners, team players, leaders and communicators. Her physically engaging and playful workshops are relevant to all facets of life and are sure to be a fun highlight for BizConf participants.


The complete list of speakers is here, although I expect to add a few more to it in the coming weeks. This conference is very personal to me -- I am handcrafting the program to maximize the interest to other people like myself: entrepreneurs in the web development space, particularly my peers running successful Rails consultancy shops.

Price
If you register before July 17th you can take advantage of the early-bird pricing of $1995. After that, the price goes up to $2495. Yes, I know very well that the cost is out of reach of some of you reading this. However, it's an upscale and exclusive event on purpose and I decided on that price based on market research. Also, running a conference like BizConf is quite expensive and entails a great deal of financial risk for the organizers. The venue and food is very expensive, as well as travel expenses for all of the speakers.

Sponsors
I want to take a moment to thank my partners at Hashrocket, as well as our other sponsors: nGen Works and Engine Yard for helping to make this dream a reality.

If you work for a product firm that provides services to small to mid-sized service providers, then BizConf is the perfect opportunity for you to get to know the most successful influencers in this business. Check out our sponsor prospectus for more information.

April 29, 2009

Inverted Sensibilities

nextangler: I certainly have a line as well
nextangler: And it goes at violence
obie: LOL you certainly are a european
nextangler: Which, funny enough, seems to be the inverse of a lot of people here
obie: americans have hangups about sex, but not violence
nextangler: And that's some fucked up shit
obie: yep
nextangler: That needs to be attacked at any given opportunity
obie: violently?
obie: :)
nextangler: By arguments and pictures of mating!!

April 24, 2009

Heroku and GoDaddy CNAME

If you're trying to get Heroku working with your GoDaddy-hosted DNS, you're going to have problems adding a CNAME record for "@". The system will complain and ask for a valid hostname, even though GoDaddy's own documentation says that "@" is okay.

The solution is to use the name of your domain instead. A trailing period after the TLD seems to be optional. An A record for @ is not needed with this configuration.

April 22, 2009

I'm the Newest Member of HAPPYWEBBIES

Fernandez-large  

Big thanks to Carl, Travis, Varick and the whole nGen crew for bestowing this honor on me. But did you have to make me look so fat? :-)

http://www.happywebbies.com/store/detail/obie-fernandez

April 05, 2009

My Reasoned Response about Scala at Twitter

I'm glad that Twitter is working to resolve its scaling issues. It's a service that I love and use on a daily basis and from which I have benefitted immensely. As far as I'm concerned, Twitter is a case-study in how Ruby on Rails does scale, even in their hands. Also, I know Alex Payne in person. Not very well, but enough that if I was in San Francisco and sat down to share a beer and discuss the Ruby/Scala debate, I imagine that it would be a fairly civil conversation.

My interest in the question of Ruby vs. Scala at Twitter had mostly consisted of curiosity and amusement, at least until last night. First I had an exchange of tweets with Alex which raised my warning levels, and second Alex wasted no time in creating for himself a virtual nintendo invincibility star for himself with this blog post: Mending The Bitter Absence of Reasoned Technical Discussion.

Who can disagree with the need for more reasoned technical discussion? Nobody, but frankly the timing of his essay made me throw up a little in my mouth. The nausea only grew this morning when I checked on how much it's being re-tweeted. Even though Alex's star is probably going to take a little while to wear off, here are some of the facts of this "debate" for your consideration and historical record:

First of all, my exchange with Alex last night, which I triggered by re-tweeting Jeremy McAnally:

RT @jm: If you have to use kind_of? all over your code to mimick a "type system," you're doing it wrong. (I had exactly the same thought!!!)

To which Alex responded:

@obie Indeed, using kind_of? in that way is "doing it wrong" in Ruby. But as our codebase grew, it became a necessity to combat bugs.

Hmm... A "necessity to combat bugs". What bugs, exactly? Bugs in Ruby or bugs in Twitter's codebase? Non-deterministic bugs? At this point I wasn't angry or anything, just curious and a little bit suspicious. So I asked:

@al3x Doesn't make sense. Do you mean non-deterministic bugs? An in-depth explanation of the bugs you're talking about would be enlightening

To which Alex quickly replied:

@obie Yes, I mean non-deterministic bugs in the giant, legacy, spaghetti parts of our system. Unexpected objects flying around.

Ah, suspicions confirmed. Alex is indeed scapegoating Ruby for Twitter's shitty legacy codebase and the mistakes that they made during what is unarguably a very steep growth curve that would have challenged even the most brilliant team of developers. But don't take my word for it, here are some direct quotes from Alex himself in the recent Artima interview:

Twitter continues today to be primarily a Rails application, with a bunch of Ruby daemons doing asynchronous processing on the backend.
Over time we found that although Rails works great for doing front-end web development, for doing heavy weight back-end processing, Rails had some performance limitations at runtime. And I think that—and this is more my personal opinion—the Ruby language lacks some things that contribute to reliable, high performance code, which is something we’re very interested in as we’re growing as a business. We want the code we write to be correct and maintainable. We want to keep our costs down—all the things most businesses want out of their stack. So that’s why we started looking at Scala.

Most damning:

I’d definitely want to hammer home what Steve said about typing. As our system has grown, a lot of the logic in our Ruby system sort of replicates a type system, either in our unit tests or as validations on models. I think it may just be a property of large systems in dynamic languages, that eventually you end up rewriting your own type system, and you sort of do it badly. You’re checking for null values all over the place. There’s lots of calls to Ruby’s kind_of? method, which asks, “Is this a kind of User object? Because that’s what we’re expecting. If we don’t get that, this is going to explode.” It is a shame to have to write all that when there is a solution that has existed in the world of programming languages for decades now.

Adding fuel to the fire, Alex seems to have created quite a negative impression about Ruby and Rails with his recent Web 2.0 talk in which he advocated usage of Scala. Tell me the impression you get from coverage of his talk in articles such as this one in MIT's Technology Review, which makes the following incendiary assertions:

The company is leaving behind a programming language that has caused it much pain in the past, and instead embracing a new and somewhat obscure language called Scala.

[...]

Right now Twitter's service is a hybrid of programming languages, Payne says. The user interface runs on Ruby on Rails, which is "fine for people clicking around Web pages," he says. But by the end of the year, Twitter hopes to have a set of services in the back end that are written entirely in Scala. And it's the company's plan to make sure that all the third-party services that connect to Twitter via the application programming interface (API) go through Scala code, bypassing Ruby on Rails completely. "When you're talking about a bunch of programs hitting the API rapidly," Payne says, "We found we can better optimize things...using Scala."

Did you actually say "fine for people clicking around Web pages", Alex? Maybe that Technology Review article is just sloppy journalism, a subject that Alex himself lamented not too long ago. But I don't think that's the case. I think that Alex is slyly pushing his Scala agenda forward, yet acting surprised when Ruby folks call him out for it.

What agenda? His agenda as an advocate of Scala and author O'Reilly's Programming Scala book. He said so himself in Recession Engineering:

I’m first to admit that I have something of an agenda with this prediction. I spend a fair bit of my time working with and writing about the Scala programming language, which provides the expressiveness and flexibility of dynamic and functional languages like Ruby, Python, and Lisp with the performance of C++ or Java. - Alex Payne

Have I been guilty of this stuff in my own past as a Rails advocate with a strong agenda? Yeah, probably so. Which is why I know it when I see it. :)

March 24, 2009

Ada Lovelace Role Model: Desi McAdam

On Ada Lovelace Day, it's my pleasure to sing high praises for my best friend and partner of over 8 years, one of the most wonderful, hardworking and ethical people that I've ever met in my life: Desi McAdam.

Desi

Not only is Desi a role-model and example to women software developers through her tireless work as a Principal Consultant at Hashrocket, she's also the founder of DevChix, an organization devoted to advocating women's place in our unarguably male-dominated industry.

Not trying to be immodest, but you know that saying: "Behind every great man is a great woman"... well in this case it's certainly true. I'd be lost without my beloved Desi.

Obie and Desi

March 06, 2009

The Way I Getting Things Done by Lark


The Way I Getting Things Done by Jon Larkowski from Hashrocket on Vimeo.

A focused six minute and forty second talk on the topic of GTD and staying "in the flow" by one of the first Rocketeers, Jon "Lark" Larkowski.

This is just one in an album of videos shot at the latest REFRESH Jacksonville event.

Incidentally, I've been doing Inbox Zero for at least a couple of weeks and it has really decreased my stress levels. Everything emailed to me gets either deleted or archived as soon as I look at it. (As a great side effect, the load of forcing myself to deal with every incoming message caused me to unsubscribe from a bunch of spam and mailing lists which I've lost interest in over time.) 

Unless I can reply or deal with it immediately, any email that needs further attention gets a yellow star and is archived. When I'm in the mood to work on reply and followups, I go to the star folder and start working my way down the list of yellow stars. If something has "gone cold" since the time I starred it, meaning that it's been followed-up to the satisfaction of the sender, or is now pending for awhile, I turn the star blue, meaning it's "on ice".

Oh yeah, I use GMail and the Superstars Lab feature. Don't you?

Anyway, stuff that's urgent to take care of gets flagged with a red bang icon. Stuff that's been taken care of gets a green checkmark. Stuff that's old still gets buried sometimes. I admit it's not a perfect system, but it's way better than what I had before.

Suggestions welcome, as always.

My Company

My Conference

Bizconf is the first and only business conference specifically for owners and managers of small to mid-sized web design and development firms.

August 20-21 at the Ritz-Carlton Amelia Island Resort in Florida

My Book Series

My Travel