The One Thing Every Software Engineer Should Know

They’ve got to be able to communicate first.

If the marketing trumps the communication, all you get are liars.

They can bring in money, sure, but they’re still liars.

Seriously, a STR of 16 and a CHA of 17? We’re talking about programmers, here, not Argonauts.

I do agree that marketing yourself-- in any profession-- is important, and I’m surprised that there isn’t a required college course for all majors on this. Just don’t overdo it or people will bust out the +6 vorpal swords on your ass.

I’ve always said, you can’t expect a toaster to make coffee, or a coffee maker to make toast.

Sometimes people can’t wear different hats, or at least the hats they need. Sometimes you need other people, and that’s more to the point of what I am saying. Some programmers talk like computers and can’t explain what they do without using tech jargon, just as some doctors can’t some lawyers, some car mechanics, whatever, you get the point. In which case yes they should improve their communication skills but they also should get someone in their corner who can do what they can not.
Granted you can program and also communicate, proven by this blog, as well as Joel can, who I feel missed his calling, the man should be writing books, if books weren’t on their way out. But not everyone can do both, and sometimes what you really need is an expert coder who almost only speaks in zeros and ones.
That’s why there are different titles and jobs in an organization, and the best man for the job should be in the right position.

It’s like woman asking for a sensitive man but going for the man’s man because she likes the way he looks coming from the gym (not that they have to be mutually exclusive, I’m making a point) because you can’t always gt everything from one person, you can’t have it both ways - most of the time.

Yes It’s good to strive for it, but in reality, when all is said and done, a toaster makes toast and a coffee maker still makes coffee.

-dan

So do we get any racial bonuses? If I’m a dwarf, I want the Bug-Hammer of Moradin!

After having more coffee, I’m reconsidering my opinion. A programmer has to communicate at least well enough to explain his code to someone who can further dumb it down for marketing.

@Dave - YMMV with a MIS background. I doubled in MIS and CS. MIS was largely common sense stuff (which granted, many CS grads are lacking), and almost worthless for me. We did have a couple projects where we had to do real work for a non-profit and that made the whole degree worthwhile. Real experience taught me one important thing - Real world problems don’t have textbook solutions. If there’s a course like that, get into it ASAP. I’m not sure about the marketability aspect, but then again I work at an engineering firm and CS degrees are looked down upon. I wanted to get a sharp guy with a MIS degree in the door and I had to fight tooth and nail to get him in for the interview. He did pretty well, but has moved on to more administratorial pastures.

Correct me if I’m wrong Jeff, but I think this is more in line with what you’re proposing; not full-fledged marketing in the mammoth company sense. But rather on an individual basis.

http://en.wikipedia.org/wiki/Elevator_pitch

I recognize that you follow the slam philosophy of posting Jeff, but this time you’ve leaped directly into the land of ridiculousness. There may or may not be sharks there. I mean, I like DD as much as the next nerd, but simply by mentioning it, you lose any chance of making a serious point. And…there goes the rest of my post.

Your core message is reasonable, that everyone in every career should improve their ability to communicate, and should be outwardly excited about what they do. But marketing is much more than the study of communication, it’s the study of the manipulation of human perceptions, and it’s that that I find distasteful. If you wanted to sell marketing to your audience, you probably should have avoided calling it marketing.

You MUST be joking.

First, a REALLY good developer will have int 16 and wis 18. Its about being clever enough to learn from experience.

Second, if you have chr 17, con 15 and str 16 you’ll be too busy playing football and getting laid to become a programmer. So let’s weenie that down a little to 7 stone with nice, say str 12, con 13 (+1 vs late nights), chr 15.

aNd tihs is wht 14 dex lookd like on a ketboard, mkay?

Marketing still feels like a bad word to me, because its used so poorly much of the time. I like Kathy Sierra’s views on marketing. Instead of:

people understand what you’re doing
people become interested in what you’re doing
people get excited about what you’re doing

it turns into

People understand how your product/service helps them kick ass
People become interested in how it can help them kick ass
People get excited on how fun it is to kick ass

I like her notion on marketing should not be about the product/company/developer but how it helps them kick ass.

Elevator pitch link - http://www.youtube.com/watch?v=pVOZ_7FonPE

But I have people skills!

Programmers are programmers, not sales persons. Plus there is a whole big bunch of other peoples too. Like architects, designers, analysts, deployers, maintainers, project managers, database administrators, lead lead architects, bosses, and so on… Yes, programmers love code, and that is how it should be. If the other people are not existing or not doing their job, its not the fault of the programmer.

Jason Fried, in a recent video, was talking about celebrity chefs. He basically said that people know them and make them successful because the chefs share their ideas. They write books, do shows, send out recipes. In effect, they freely or inexpensively market their ideas and help people to their direct benefit. So Jason says what’s your cookbook?

I think this might be a similar idea to marketing your code. You also need to market your talent and ideas and you can do this by offering to teach and guide other people totally for free. That will have a positive impact on your career or at least your reputation, which will likely influence the success of your own projects.

Of course, I’m in Marketing and I program on the side for fun, so I’m not the target audience here.

@Clark: [marketing is] the study of the manipulation of human perceptions

That’s not strictly true, nor is it strictly fair. Marketing is not about deception trickery. There are plenty of marketers that use these tactics to make short-term profits, but they don’t pay off in the long term.

Marketing is about understanding your audience - their needs and desires - and communicating the right information about your product to the right segment of that audience. A good marketing team will actively learn about market needs, demand and potential cost ranges and feed this information back into product development.

Unfortunately good marketing is rare - most marketing teams are made up from promoted salespeople, who only know how to close deals by promising more features and larger discounts.

Market myself, perhaps to get a job. I’m not so sure about marketting or selling my code though… as a part of a team, I’ve got other people who’s jobs are to do that.

@Silvercode: marketing is about understanding the value proposition of the product you are writing, and communicating that to a (potential) customer.

If you can’t do that their either you don’t understand the value of the product, which means you aren’t going to develop the right thing, or you can’t communicate, which means the team isn’t going to develop the thing right.

Marketing shmarketing… I code hardcore… long time! No marketing exec could say they made a website from scratch in Front Page without even looking at the reference manual more than once! Hazah, I win with no marketing experience. Marketing Exec: 0… Jeremy: Infinity!

There are spots in the original post and certainly in the responses that confuse marketing with advertising.

Marketing isn’t slimy. Marketing involves understanding the needs of your target market and designing a solution - whether that’s software or a hammer - that fits those needs. Virtually every decision your business business makes - what to create; whether to focus on cost or quality; who you hire and how you train them; what you build and what you buy; which suppliers you use; your pricing strategy; how you interact with your customers; how your customers interact with the product or service; and, yes, your advertising - can be a part of the company’s marketing.

There are analogies for much of this for the individual programmer. It’s not just about shilling your code. It can involve your efforts to understand your employer’s business. It can be your attitude toward and knowledge about and relationships with the people who use your code - and really all stakeholders. It can include your decisions about interface design and modularity and security and reliability and cost.

Certainly someone on your team has to be able to communicate (advertise) to users how the thing you’ve produced and the choices you’ve made satisfy their needs. You limit yourself unnecessarily if you delegate that to someone else - even your manager. You don’t have to be an over-coiffed silver-tongued salesman to pull this off. It doesn’t require any skill that a reasonably intelligent person can’t learn with practice.

Completely agree. This also comes into play when you’re looking for a job. You could be a fantastic coder, but if you can’t sell yourself to a prospective employer and show that you’re going to be a good asset and fit with the team, all those skills will be sitting in the unemployment line.

Great post – I had a similar take on this as it relates to Open Source specifically.

While I think the observation on the elevator rule is spot-on, a programmer also needs to be able to disconnect themselves from their own work. When you have been involved in the intricate process of building an application, it’s very easy to get side-tracked with the smallest detail of your design when trying to meet a customer’s requirement for a new function X.

Instead of considering how you can implement function X, you need to be able to step back and market what the product can do already and how you might be able to use it to meet the needs of this specific function.

It’s tough. Especially when you know this solution is sub-optimal; but if your product is successful you will be getting a lot of these kinds of requests and will ultimately need to prioritize them comprehensively.