I’ve started writing about the differences between programming and designing for an application, cataloging the challenges and differences between the two, and how to manage both worlds from both the perspective of a manager and a worker. Because this has become fairly long, I’m posting it in parts in what so far looks like it’ll be a 2 or 3 part series on programming and design.

Programming is absolute; it’s about results. Designing is proportional; it’s about interactions. I do and have done both types of work for years, so I’m well aware of the challenges in each. Switching between a functional programming task and user interface design task, though, is like trying to play two different sports at the same time. It’s very taxing and mentally fatiguing even if you enjoy both individually.

Because of my experience, I’m well aware of the differences between each. Additionally, as the engineering and design team manager, I know what to expect from different types of people, and I experience the IT axiom that programmers make bad designers (and designers can’t code) on a daily basis. However, it’s not really anyone’s fault. It’s inherently different work, but there are methods for smoothing over the development process between these two worlds, so let me describe both worlds, how they’re different, and what you can do in smoothing over the interaction between each. Smoothing over the rough spots will make work easier, but also increase job happiness as it’s more fun for people when they’re in a groove, and really able to focus and excel at what they enjoy doing most.

The Binary Stroke

Programming is like traveling. You have a task that requires you to get from point A to point B. There are many possible roads, some better than others, some more interesting than others, and some with more existing infrastructure. There’s a predetermined destination (although not always well known or understood), and a set starting point. What you do in between, how you get to point B, is up to you.

However, as with any problem, there are always conflicting values that require compromise. In programming, you typically resolve conflicts between performance and process. You need to make a function that is fast enough, but handles many variables and lots of data at the same time. The more variables and more data, the more processing, the longer it takes. Or you might be fighting with memory and disk space (typically because of performance requirements) where memory is faster, but because there’s much less of it, it’s more valuable and easily consumed, and disk space is abundant, but slower.

Of course, you also can’t forget that in the real world there’s always an conflict with time. You might have to cut back on overall functionality in order to make deadlines and deliverables. You might not have time for all the polishing and perfecting that you’d like. Or possibly, everything else gets pushed back until you’re truly ready. Time can turn even a simple problem into a rough and raging Nile River.

Dealing with those kinds of problems is like coming to a river without an obvious crossing. You can search along the river for an existing bridge (search for solutions to this or similar problems by others), or find a low spot for easier forging (pick the low hanging fruit and find a way of solving the bare minimum as quickly as possible). You can build your own bridge for more appropriate crossing (write code that’s reusable with potential long-term returns), try a simply rope line (quick hack), or a setup a wooden foot bridge (non-reusable, but maintainable solution). Still at the end of the day, you know if you’re on the other side or not, and you know that you’re at a river when you come to it.

A good programmer will spend her time learning about coding principles and techniques. She’ll have an interest in new technologies that are just interesting in themselves, or useful in her own work like a new and helpful open source reporting package. She’ll try and stay up to date on changes in tools and emerging concepts while making sure the app server or JDK that you’re using isn’t totally out of date. And generally, she’ll enjoy geeking out with most anything technology.

Shining a Spotlight in Dark Alleys

If programming is like traveling, and problems are rivers and solutions are bridges, then design is like being a cop, and problems are criminals and solutions are tickets. Keeping the peace is a matter of keeping unruly people in line (fixing bad layouts and user interactions), and building relationships within a community that strengthens that community (setting up look and feel standards that enhance the important messages while still functioning in the face of conflicting messages). However, you’re not the judge or the jury (someone else will eventually tell you if it looks good and feels right). You’re given a list of potential crimes and criminals, and you enforce them based on the rules of the system.

Compromise is a given as a designer. If you think you can become a designer and be as creative as you like and call it a day, then those with the message (and the paycheck) will quickly set you straight on what your boundaries really are. A designer’s job is that of appropriately, consistently, and clearly getting a message out; someone else’s message normally. And when it’s someone else’s message, then it’s their ability to be creative or accept creativity that limits your work.

The most important concept in design and usability, and where true conflict occurs, is consistency. As I said earlier, design is proportional and about relationships and interactions. In code, you can break an application by setting a variable equal to 2 instead of 1. In design, changing the color of a button doesn’t break the application, but it could build inconsistency. Sometimes, in the right special cases, inconsistency enhances the message and design. In most cases, inconsistency harms the design, but you don’t feel the effects until you reach a breaking point.

One visual element interactions with all other visual elements. The more inconsistency, the more visual conflict. Our brains can deal with a lot of inconsistent design, bad layouts and interactions. However, it builds up proportionally, so a designer has a margin of error to work with, but there is a breaking point, and in all designs there will be conflicting messages on a page. A designer must find a way of enforcing the rules of the system and getting the unruly elements to still work together nicely. What most people don’t understand about design is that while one change is minor, 5 minor changes huge overall impact. This is even more challenging if you’re designing an application that has hundreds of interactions across multiple pages. Keeping cross page interactions and designs consistent is as important as single page consistency where changes on a single page actually effect the whole of the application.

A good designer will spend her time learning about design principles and new techniques for enhancing a process (like how to improve a signup form). She’ll have an interest in new, compelling, and provocative design. Some of it may immediately help in her daily job, but most of it will probably help indirectly by association as much as practical application. Still, she’ll have a desire for turning the good design she sees into something applicable to her own job, and not just depend on osmosis for her education and career improvement. She’ll have an interest in the latest trends (and historic trends) as a way of keeping designs culturally relevant while still being exploratory in what she does.

Waiting for more

This may be an abrupt ending. I’ve basically cut this first part out of a longer piece for ease of internet reading, but this topic will continue shortly in part 2.

A comment I left at Alan Mitchell’s blog, a VRM mailing list participant, about a reducing supplier risk comment by Ted. Markets, prices, and VRM.

@Ted “In any partnership, both parties must assume responsibility for the satisfying each other’s needs.”

In the consumer to producer context, I completely disagree with this. The consumer precisely does not nor ever will have that responsibility. Satisfying his own needs is the consumer’s only responsibility, and I think this sounds reasonable when you realize that the relationship isn’t between a consumer and a producer, but between a consumer and a set of producers (Actually, it’s a set of consumers to a set of producers, but it’s easier to analyze a one to many situation than a many to many.)

CRM is the solution companies have created to solve the producer to consumers (one to many) relationship problem. VRM would solve the reverse one to many relationship problem of consumer to producers. Humans are very good (relatively speaking) at dealing with one to one relationships. We’re capable of projecting and reading those projections like dilated eyes, plushing skin, tone of voice, change in posture. However, our performance is reduced in multi-tasking situations, and we’re not so good at dealing with the one to many problem, which is why we’ve built technology to help us with that.

I as a consumer have no responsibility to any single producer, and I am free to accept or reject the offers of any and all producers. That’s how it is today, and that won’t change with VRM. The producer still bears the risk of invention and production. However, the producer still as rights to the profits of such an endeavor, and since a consumer as no right to those profits, a consumer has no interest nor responsibility in satisfying a single producer’s needs. That’s just how competition works.

It is in the interest of the producer to satisfy the needs of the consumer because that would inevitably bring in more profits (including an appropriate price point as part of a consumer’s needs). However, every interaction between consumer and producer is a potential step in creating or strengthening a relationship. Stronger relationships create stronger bonds between the two parties, and that can turn into a true partnership, but that’s not the goal of VRM. VRM may well improve the one to one relationship, but it’s primary goal is improving the consumer to producers relationship problem.

When a company does something like “guarantees to the customer if the product or service he bought fails to meet his needs” it’s reducing the risk of consumer backlash. Companies do this precisely because the costomer does not “share a small portion of the risk temporarily,” but assumes 100% of the risk permanently at the point of purchase, and at the same point the producer takes 100% of the profit (which is its reward for taking on the original risk of production). Because of that, the producer has an inherent responsibility to the consumer in quality of product at the least, and in the case of consumer dissatisfaction (where there is no legally binding responsibility), it benefits the company to satisfy the consumer post purchase, but that is for its own benefit as much as the consumer’s benefit.

For savvy companies, VRM will open opportunities for reducing investment and production risk. However, most companies probably won’t realize the benefit until the benefit is the same for all companies just as companies are still struggling with the benefits of the internet. Most immediately, VRM will help companies reduce operation costs, instead of reducing risk. VRM will help reduce transaction cost, and other costs associated with information storage such as information gathering and updating.

Still, consumer to producer relationships will improve with VRM much like CRM improved, although did not solve, the one to one relationship. But the primary goal is improving consumer to producers relationship, and that will inevitably help the producer, even if it helps the consumer more.

This has been going around it seems. Notes from a talk that Buffett gave a couple weeks back. The transcript is great, and the insights are bountiful.

From Underground Value, Notes from Buffett Meeting 2/15/2008

Read through, but here are a some good quotes:

That’s what most people should do, buy a cheap index fund and slowly dollar cost average into it. If you try to be just a little bit smart, spending an hour a week investing, you’re liable to be really dumb.

I know too many people from the forums that think they can spend a little time a week and make themselves rich. Not gonna happen and Buffett agrees, and here’s the kind of person you’re up against, and the kind of person you have to be if you want to make serious go at anything other than index funds:

Markets are efficient most of the time about most things. But for these opportunities, nobody will tell you about them. They won’t be on CNBC and they won’t be in brokerage reports. You have to go find them yourself. In 1951, after I graduated from school, I used Moody’s and S&P manuals as my sources of information. I went through them page by page. I was like a basketball coach looking for 7-footers. I still have to find out if he’s coordinated, and can stay in school…On page 1443 of Moody’s, I found Western Insurance Securities. It had earned $21.66 per share 2 years ago, and earned $29.09 last year. Over the past year the stock was selling for between $3 and $13 per share. I still had to do the work to make sure the earnings were valid. The markets will get it right eventually. But they are there. You don’t have to find too many. Finding 10 of these opportunities in your lifetime will make you so rich. But you can’t be wrong. You can’t have any zeroes. A list of big numbers multiplied by zero will equal zero. You can’t go back to “Go”.

Are you trying to play the stock game? If so, are you reading thousands of pages of reports looking for the right investment? Are you certain that your method will produce no zeros? If you’re gonna do it, take it seriously. Even just a few hours a week is silly and leaves you undereducated, and unable to react quickly (or not react at all) and rationally when times require it.

A couple more, there are tons behind the original link. Reading the full post is a must.

As Bertrand Russell says, “Success is getting what you want, happiness is wanting what you get.” I won the ovarian lottery the day I was born and so did all of you. We’re all successful, intelligent, educated. To focus on what you don’t have is a terrible mistake. With the gifts all of us have, if you are unhappy, it’s your own fault.

And lastly:

We did an informal office survey by looking at the total tax footprint versus the total income. I earned 46 million and paid a tax rate of 17.5%. My rate was the lowest, the average was 33%, and my cleaning lady paid 40%. The system is tilted towards the rich. The Forbes 400 total net worth has gone from 220 billion to 1.54 trillion, an increase of 7-to-1. You see in legislature that there is lobbying carried on by the powerful over issues such as the estate tax and carried interest for private equity investments. We need to flatten income and payroll taxes, and those making under $30,000 shouldn’t be bothered.

Those are just random ones I grabbed from the long read, so I didn’t have to even try to get good quotes.

20 minutes or so on why I am 4 Barack a video by Lawrence Lessig on why he’s for Barack Obama. Myself, I’m an independent, so I’ve never liked the idea of jumping on either the Democrat or Republican bandwagon, but Barack has this pull that I can’t seem to deny, and Lessig describes it perfectly, and I wasn’t sure I was really 100% for Barack until he put my own thoughts into words that I myself could understand.

The key of it all, Barack truly inspires where Clinton and others only talk about inspiring, and the only reason they can get away with such a message is because Barack’s message is rubbing off on them. If he can drive the messages of “more veteran, seasoned” candidates on both sides, then he’s most certainly at their levels, if not way beyond.

Watch the video for a much better explanation by the always well spoken Lessig.

It’s been a week and a half now, and we’ve heard nothing. He’s gone. No reply. No response from email, no response from phone or text messages. Nothing. I leave for vacation to visit family in Illinois, and when I return a week later, our newest, brightest, most hardworking employee is gone without a clue.

I still don’t know how to feel about this, or what to think. Adam has disappeared, and no one has any idea what’s happened or why. I’m 100% fucking serious. I had some concerns before I left that something wasn’t right, but I’d only discussed my concern with my closest friend assuming it was too early to make a big deal of anything. I figured that I’d go away, there would be little to do at work, everyone would relax and take it easy, and the situation would either resolve itself or I’d be around to deal with whatever happened. Instead, something I didn’t even thing was possible happened while I was away. I guess life doesn’t like being predictable.

It’s strange. I’m concerned for his wellbeing because something must be wrong, but at the same time I feel a bit betrayed. He’s been a trooper at work going way beyond anything I’d expect from someone so new to any company having gone through the Trial by Coding with me. He was so driven with working that our biggest problem was figuring out how to slow him down, and get him to relax a little. And then he just disappears.

We’ve actually gotten word that he’s alive, but we didn’t hear this from him. Our general manager was able to get his mom to call us and at least tell us that she’d talked to him since he disappeared, and hadn’t been in a car or motorcycle accident (which he’d been in not long ago - a motorcycle crash where he was fine, physically, but the bike was totaled). We don’t know much more than that, though.

It’s strange, obviously. He was our hardest worker. He liked what he was doing, his mom even told us that he really like the work and working with everyone. I know he was having some social issues, though, and he was having some challenges solving a couple complex work tasks. The only thing that’s made sense about all of this is what Andrew, the company president said during one meeting.

“No one’s heard anything? I hope Adam’s O.K.,” says Christian during our regular Monday morning conference call.

“Of course he’s not O.K.,” Andrew shoots back in reply. “He’s had a mental breakdown.”

I was so confused by everything, but Andrew has a great sense of reading and describing people that’s very intuitive, and he was right. That’s about the only thing that’s made sense throughout this whole ordeal.

I know Adam has had some social issues having moved out, I think for the first time ever away from home, from Maryland to California. He came out with a couple friends, and the two of them had some issues with one another once out here. His sister has had some minor issues back home, and I think he’s missing the comforts of home too (I don’t blame him, that’s normal). He’s still young, he’s still filled with emotions that aren’t always easy to control, and he’s in a completely new place, working for a new company, and he’s had a lot coming at him that’s probably new and maybe a little scary.

I can somewhat relate. I grew up in Maryland, and I’ve since moved across country (although, I moved around a bit before moving across country on my own) with no family to support me when I arrived. It’s a challenge for sure, but I’m a few years older, and I think I’ve experienced a few more things in that time. Still, I don’t know how I should react.

I want him back. I don’t care why he left. He’s a great person to work with. He’s really fucking smart, totally on the ball, and he likes doing the stuff I don’t like so much. He probably works a bit too much, and he should listen to the rest of us more about taking it easy, but he just likes doing this stuff apparently. Go figure, who am I to stop someone from doing something they like doing so much.

Then again, maybe that’s played a role in his disappearance. Maybe we should have been more forceful in making sure he was taking it easy in the off hours. I don’t know. Without any contact, there’s no feedback to judge the situation by. Is there something we could have done at work? Could we have been more supportive? More assertive?

And now, I’m not sure I want him back at the same time. I feel betrayed. It puts more pressure on me. I’ve got more work to do, a tougher job, at least for a period of time, while I cope with the new demands. Why can’t he at least make some kind of contact. I wouldn’t care if he said that he’s having issues, and he’ll need 2 months before he can return. Fine, the job’ll be there. Do what you need to fix anything, and let me know what I can do to help. But so far, no one’s heard anything. We were all afraid he’d been in a major accident, and the only reason we know he’s physically O.K. is because we’ve called around to other people.

I keep waking up hoping he’ll show up when I arrive the next day at work. It’s a tough situation. I don’t know how much longer I’ll hope to hear something from him, or if I’ll just finally write it off as ‘one of those things.’ I want to confirm from him that he’s able to deal with things. Hell, he’s a really smart kid, maybe Google stole him from us. I’d be delighted to hear that over thinking the things I’ve thought.

Beyond worrying about him, and considering my own needs, the big question is, how long do we hold out before putting up another job application? It’s ashame, but he’s disappeared, and the only option he’s left us is to cut the cord.

I’ve got a few opinions (I always have a few opinions at the very least) about getting burnt out, transitioning from your early twenties (post education years) to your mid and late-twenties (the change of life, friends, family, lovers, and everything else), and some strategies that I use to keep that from happening, so I think I might make a post or two on that topic in light of recent events. I’m sure everything will turn out fine for him, but such is life, and such is learning, so at least things are interesting and we’re on our toes. Hope Adam’s able to deal with whatever is going on, and he gets in contact with me or someone at the company at some point.