Axoplasm

is a fluid found in nerve cells

work

Job advice for recent grads; and working at Mercy Corps

Filed under:

I get “networked” a lot, especially now that I’m working at Mercy Corps (which is a really great place to work). Similarly, a lot of people come to me with leads: “do you know any Drupal developers?” That kind of thing. I’ve been joking that I should start a referral service.

I never turn away the opportunity to help someone who wants to use me for these purposes. Never. If you want to “network” me, send me an email. The address is [my first name] @ [this domain].

I get most of my work through either my reputation or through friends, and I almost never need to show off my portfolio. The more I give, the more I get in return. Not usually in a tit-for-tat sense, but maybe more generally in karmic sense. It seems that, professionally at least, I receive in proportion to what I give.

I’ve typed a lot of emails with job advice, and advice about life at Mercy Corps. I like giving advice, probably more than most people like receiving it. So, for the sake of efficiency, I’ve compiled those emails here.

Job advice for recent grads

(Excerpted from emails to recent college grads)

Spend a lot of time on fun creative projects. If you can get known for a cool website about Godzilla movies or a Banksy-style public art stunt, that gives you some name recognition. I once hired a junior designer in part because she managed several fansites. It demonstrated she enjoyed creating things, even if they weren’t related to her life as a designer. At a minimum you should blog, put photos on Flickr, and put your sketchbook online.

Make your portfolio, not your resume, the center of your job application. (Non-creatives: make a portfolio! Show off what you did not where you worked.)

Put. Your. Portoflio. Online. Blogspot, WordPress, or Flickr are fine if you don’t want to make your own website.

Apply for senior level jobs, stuff that’s way above you. I did this successfully once and actually got the job. Even if you don’t get it, someone will probably look at your portfolio. So when a junior level job opens up, they’ll be thinking of you already. I’ve been involved twice in hiring designers who applied for Art Director-level jobs. They didn’t have the experience to handle clients but they had such strong books we created positions for them.

Networking doesn’t just mean business contacts or people who will give you jobs. I look at it as socializing. Having drinks with friends is networking, if you all work in the same business.

If you have a job lead show it to all your classmates. In the long run this will serve you better than holding leads close to your chest. I have a large group of designer/developer/marketing friends. We share leads all the time and often scoop them from one another but now we are all busy all the time.

Do favors, give stuff away, show how your work is done. The Internet economy rewards sharing. Designers and marketers are lousy at this for whatever reason but programmers do it all the time and respect non-programmers who think that way.

Don’t just apply at agencies. Lots of software companies and small businesses have occasional needs for designers.

Freelance. Work for free if you have to but don’t call it that. Present a bill but discount it 100%. Friends in bands, coffee shops, dogsitting ... all those people need websites, flyers, youtube ads, whatever. Errol Morris called this the “best commercial ever made” and I think it was a side project for the filmmakers. Make something like this and people will be begging you to work for them.

Working at Mercy Corps

(Excerpted from emails to people looking for advice on whether to apply for work here)

This is the best job I’ve had after I left archaeology 11 years ago. It’s also the longest I’ve EVER held a job (three years this month.)

I work in Internet Marketing; we generate our own budget which is a key distinction from other places at Mercy Corps. I’ll describe my work environment but it won’t exactly be everyone’s work environment.

We have a crazy lean team for the size of website we have: one designer (me), one developer, one social media marketer, and two writers. We’re adding another marketer and a developer. I have daily live-to-production deliverables, often several a day. So it’s an immensely productive environment. I probably produce/deliver 3–4 times as much as I did working at agencies, dot-coms, or software shops. Despite which I somehow manage to work 8-hour days on pretty much my own schedule, and almost never late nights or weekends. (Except during a large-scale disaster like the Haiti Earthquake.)

It’s also a family-positive (downright wholesome) work environment: compared to agency life it’s OK to leave early for daycare runs and there aren’t any late-night drunkfests at the local strip club. My coworkers are mainly earnest do-gooder milk-drinker types (like me). Lots of yoga bodies, Peace Corps veterans, bike commuters and homebrewers.

Compared to the for-profit world the amount of office politics and drama is much lower. Not nonexistent certainly but there are fewer of those barriers to producing good work. Because we must meet very lean overhead standards the emphasis is almost always “will it work/is it sufficient?” not “does this satisfy some political goal?” In my group we frequently launch projects and rev them on production after they generate (internal) feedback; this is “agile” I suppose but also veers close to “beg forgiveness not ask permission.”

We have an awesome new building in a great location.

We are our own clients, so we own all our work and eat all our own dog food. We almost never launch something then walk away from it; we see everything we do every day.

All of our work is held to high ethical standards (basically: no lying) which is a double-edged sword. I believe in what we do which has a wonderful clarifying effect, and I was tired of the ethical compromises I felt I was making in for-profit marketing. But on the other hand, we are marketing and fundraising; the dollars matter. We have no product and thus no demand creation. We can only sell our story, we can’t stretch the truth, and we have a fraction the budget a for-profit marketing team would have. Programs staff (i.e. those people who work with our clients/beneficiaries) may get a “helping other people all day” warm fuzzy feeling, but the fundraising team doesn’t feel it. I’ve written elsewhere about how frustrating this can be.

Teaching, for Non-Teachers

Filed under:

My wife is a teacher and I help her a lot with creating and planning computery classroom things. I used to work at a school, where I helped teacher create and plan computer classroom things. At that school I also taught a web design class. And a few months ago I spent an entire day teaching kids about Haiti, using computery classroom things.

Year of the Pig!

Teaching is really really hard. People say this and everyone kind of nods and murmurs, maybe someone throws a jab about unions, or administration, or parents, or “the education system,” but everyone just kind of takes it for granted. But I know, from long, bitter, first-hand experience, how to explain teaching to non-teachers.

Teaching is like giving approximately five presentations every single day.

Think about the last presentation you had to give at your job, to your boss maybe, or the board, or a client. Do you remember how on you had to be? How everyone stared at you? How you couldn’t show disinterest or flagging energy, or you’d lose the room. Teachers do that approximately five times a day.

You probably had a few days to plan that presentation, to pick the art, to practice it in front of a mirror. Maybe you had coworkers or a staff of underlings who could scrape Flickr for funny photos, or offer feedback, or write the second half of the deck.

Teachers give approximately five presentations every single day, and they have a couple of hours — usually at night, at home — to prepare all of them, by themselves.

Think about the most hostile presentation audience you ever had. Maybe it was a cold sales pitch. Or at a conference following someone really awesome. Maybe one time you had to tell someone to silence their cel phone or something.

Teachers give approximately five presentations every day, with almost no prep, to an actively hostile audience that almost always wishes they were somewhere else. And it will be the same audience tomorrow.

If you ever wonder why teachers recycle their lesson plans from year to year; why they rely so heavily on preprogrammed curricula; why they favor really strict classroom management; why their graphic design choices seem so uninspired, remember:

Teachers give approximately five presentations a day with almost no prep to the same hostile audience every weekday for nine months. Even the bad teachers have to do this.

So yeah, slag on the unions, slag on administration, slag on parents, slag on the system. Maybe those things are worth picking a fight with teachers. And sure, teachers don’t have pressures that other professionals have — I like to remind Jenny that I basically write a couple of term papers every week, in terms of the creative energy required at my job. But when everyone nods and murmurs about how hard teaching is, imagine yourself giving all those presentations every day, under those suboptimal conditions.

Don’t make the stylesheet grep for you

Filed under:

For the last decade or so, every time I wanted to design something like a “subheader,” I’d code it like this:

<h3 class="subheader">This is a subheader</h3>

And then I’d define a style in the main stylesheet like this:

.subheader {
	color: #f00;
	font-size: 18px;
}

Which would, of course, overload any styles I’d already defined for <h3>:

h3 {
	color: inherit;
	font-size: 20px;
}

Sooner or later, we’d realize that we wanted the subheaders in another part of the site (like on the “siderail”) to look a little different. So the HTML didn’t change, really:

<div id="siderail">
<h3 class="subheader">This is a subheader</h3>
</div>

So then we’d overload the .subheader selector:

#siderail .subheader {
	color: #900;
	font-size: 14px;
}

So far, this seems pretty simple, right? h3 is defined with a certain bunch of characteristics, unless it’s a subheader, in which case some of those characteristics get overloaded. Or if the subheader is in the siderail, in which case some of those characteristics get overloaded. This is what the “cascading” in “Cascading Style Sheets” means, right?

Until, of course, one of the developers forgets to add the subheader class to an h3 in the siderail. Or creates a new page region in the siderail where we want to apply a new style — forgetting that #siderail .subheader already overloads h3.subheader. And rather than diagnose where in the cascade the design is breaking, we just add a new selector, maybe a new class like .specialsubheader, that does what we want. And maybe can’t quite remember which shade of dark red (#900) wanted for subheaders in the sidebar, so we make a best-guess (#a00) ... which lets the look and feel drift a little bit.

(There’s also an orthogonality problem with this, which had never occurred to me before. I was mixing in semantic units [“subheader”] where I should have been sticking to cosmetic units [“darkred”]. An h3 should always be a “subheader,” whether it’s in the siderail or not). I noticed this most painfully in places where I used junk like <div class="subheader">. Why do I need “subheader” to tell me what that div should be doing? divs and spans are just empty containers — if you strip their styles away, the content should still cohere semantically).

Well, after only a year of this, we’d reached a point where our main CSS file was 2000 lines long. Most pages loaded 500 to 1000 CSS selectors. When I autopsied the stylesheets I found about 20 different shades of “brown.” That’s just nuts.

So, this time out the gate, I defined a bunch of selectors — mostly classes — with really generic behaviors. Font sizes, padding, foreground colors, background colors, that kind of thing. I also defined some “default” behaviors for semantic units (usually vanilla HTML tags like h3).

So, to extend our example above, the stylesheet might have some selectors like:

h3 {
	color: inherit;
	font-size: 20px;
}
.fg_red { color: #f00; }
.fg_darkred { color: #900; }
.small_font { font-size: 14px; }
.medium_font { font-size: 18px; }

This treats the cosmetic styles kind of like Legos. Where I need a certain effect, I can mix and match styles to achieve it:

<div id="siderail">
<h3 class="fg_darkred small_font">This is a subheader</h3>
</div>

As a coder, this verbosity kinds of offends me. But in addition to saving a lot of mad selector proliferation — itself a form of (harmful!) verbosity, this verbosity serves four useful purposes:

  1. It separates cosmetic and layout styles (“darkred”) from semantic selectors (“subhead”). In fact, it generally lets vanilla HTML (“h3”) do the semantics.
  2. It expresses cosmetic and layout styles where they are most valuable: in the template.
  3. It allows me to easily experiment with styles in the template.
  4. It creates a single, predictable namespace for future selectors.

I just finished refactoring MercyCorps.org according to these principles. I was surprised at how the design disciplined itself. I took a few shortcuts — mostly to work around core Drupal or contributed modules I couldn’t or didn’t care to rewrite — but this self-discipline was just amazing. Instead of building every new template from the ground up, I could go to my big box full of style Legos and put together an effect really rapidly. If I lacked a particular Lego, and couldn’t get a good combination together to replicate it, I’d add it to the Lego box, but as a generic (not nested) selector. That way I’ll have it around to use later.

When I first stumbled across Nicole Sullivan’s “Object-Oriented CSS”, I was dubious about the philosophy. (I still hate the term “Object-Oriented CSS” — CSS is promiscuous, global, and amorphous by design — you just can’t treat selectors like objects, period.) But as I started building my box of Legos I came to think she doesn’t take it nearly far enough. I ultimately split my style “families” into color, text treatments, semantic selectors, layout selectors, and custom selectors. Most of my selectors are generic classes and have one, or at most two, rules. I refactored the entire Mercy Corps site — some 300 templates, I reckon — solo, in under a month, while dealing with our response to the Haiti Earthquake. It required minimal changes to the CMS (mostly redistributing blocks and redefining a few imagecache presets — and these changes were prompted more by our transition to the 960 grid than because of the CSS.) Because the new selectors are in a single namespace, if I need to undo them in multiple templates (for example: change all fg_dark_red to fg_dark_green, I can do this easily with grep.

Speaking of grep, the biggest shift in this exercise has been the way I’ve reimagined my workflow. For much of my career I’ve spent most of my time looking at CSS code. If I needed to change a style, I’d have to figure out a way to do it there, and construct careful namespaces to avoid clobbering selectors elsewhere. Now I don’t need to look at the template (to find the selector) and the CSS — I just edit the template. I realized that for the last decade or so I’ve been using CSS as grep. “Find all the places where subheader is inside siderail and make it darkred” That’s so backwards. I said this elsewhere:

Don’t make the stylesheet grep for you.

I just wrote this in an email and I think it’s funny

Filed under:

“Both versions [of the graphic you requested are] encl., in JPG and PNG format. PNG has a transparent background which might be easier to work with (and a superior format generally). However Microsoft programs are notoriously fickle about using PNGs, probably because they actually make our lives easier. So I included the JPGs as well.”

The shocking thing about the non-profit biz

Filed under:

The shocking thing about the non-profit biz is that we have to fight the same battles as for-profit businesses, but with both hands tied behind the back.

Imagine trying to run a business where you can’t compete with the competition (because our “competition” has the same noble goal of humanitarian assistance), you can’t cover your operating expenses from accts receivable (because the great majority of our income is legally dedicated to program expenses), and you can’t pay competitive wages (because some donors expect nonprofit employees’ motivations are better than mere money). Oh, and the people who give you money don't receive a product for it.

On the other hand, we actually have to compete for donors’ dollars in the same way for-profit business compete for sales; our offices still need heating and plumbing (which, sidebar: barely work here in our old HQ); and Mercy Corps CPAs or VPs or IT support staff (or, hell, receptionists) could just as easily get jobs for Intel or Dan and Louis Oyster Bar. Which would pay more. And have less constraints.

How long would such a business last?

Worth thinking about: this is pretty much the opposite of the way Google runs its business.

Please understand: I’m not complaining here. These are fair constraints with solid legal rationale, and every non-profit has to deal with them. But it irks me that some people seem to think nonprofits obey a different set of economic laws than other organizations.

Axoplasm is also Paul Souders.
I design websites for

I have stuff all over the Internet on

I built this site in a weekend but it took me Eight years to write it all.

Latest Tweets

(cc) 2002–2010 Paul Souders. Axoplasm is licensed in the Creative Commons Powered by Drupal, an open source content management system