I'm a huge Steve Yegge fan, so It was a great honor to have Steve Yegge on a recent Stack Overflow podcast. One thing I couldn't have predicted, however, was one particular theme of Steve's experience at Google and Amazon that kept coming up time and time again:
If there was one thing I could teach every engineer, it would be how to market.
Not how to type, not how to write, not how to design a programming language, but marketing.
This is painful for developers to hear, because we love code. But all that brilliant code is totally irrelevant until:
That, in a nutshell, is marketing. Just because you're a marketer doesn't necessarily mean you're a marketing weasel. Sure, the two things are highly correlated -- but at its core, marketing is little more than an intermediate level course on fundamental human communication. Not something us programmers have historically been so great at.
That's why even the hardest of hard-core programmers should be paying attention to people like Seth Godin. Steve was referring to marketing in the broader, more timeless sense of getting other people interested in your ideas.
After hearing Steve mention this several times on our podcast -- and having seen his related talk How to Ignore Marketing and Become Irrelevant in Two Easy Steps I suddenly realized why I was so fascinated with two particular books I recently discovered. Books I kept referring to, over and over, during the development of Stack Overflow.
| Whatever You Think, Think the Opposite |
It's Not How Good You Are, It's How Good You Want to Be |
|
|
|
I couldn't put down these two small-format books from the late Paul Arden. Guess what Mr. Arden did for a living? That's right, he was an executive creative director for Saatchi & Saatchi -- an advertising firm.
I had been reading dirty books. Marketing books. By choice, even. I'm a bit embarrassed to admit this, because these are exactly the kinds of pithy little business books I usually make fun of other people for reading. But in reading these books, I realized that so much of what we do on Stack Overflow has nothing to do with how awesome our code is -- and everything to do with marketing.
We're all software developers here, so let me put this in terms programmers understand: Dungeons & Dragons character statistics. You know, the classics.
If you're a programmer, and you want to get better at your job every year, you might think that the most important character stat to build is coding. Let's call this INT. So at the end of many years of toil, you'll end up something like this:
| str | 6 |
| dex | 9 |
| con | 12 |
| int | 51 |
| wis | 13 |
| chr | 4 |
OK, you're a genius programmer who can code circles around everyone else. But you may never ship any of your code for reasons that you don't control. That's an illusion. You can control when, how, and where your code ships. You probably spent too much time building your code and not enough time as an advocate of your code. Did you explain to people what your code does, why it's cool and important? Did you offer reasons why your code is going to make their lives better, at least in some small way? Did you make it easy for people to find and use your code?
I believe most programmers will be better served in their professional career if they shoot for character development more along these lines:
| str | 16 |
| dex | 14 |
| con | 15 |
| int | 18 |
| wis | 16 |
| chr | 17 |
Sometimes, you become a better programmer by choosing not to program. I agree with Steve: if I could teach my fellow software engineers one thing, it would be how to market themselves, their code, and their project.
@gdvanc: Sure, try feeling secure. But the world goes on. You can become a business man, true. Then you would become a leader in a corporation. What is more secure than that? But wait, now you are a leader...!?
Or you can try being securely a family programmer / developer who can do many things. But its not too secure. I mean, you need to engineer your software firm too. Its just a company like any other. And I bet if a company is bigger, then it has more resources to make itself better, better than a random family company. Now, which is more secure again? Why bigger companies usually buy (eat) smaller companies?
I still don't like big companies just for the sake of the size. Big companies can become dead stones too, if their inner structure gets bogged down or there is lots of incompetent bosses trying to get ahead in their lives. But there is more potential in bigger companies, and software engineering is not going to stick to crafting in the long run.
If a big company has lots of family programmer type developers, then its bad for the company, because there is too much democratic debates and reinventing wheels. You cannot avoid reinventing stuff even if you go talk to people, because you cannot talk to everyone. Instead there has to be some kind of centralized way of distributing ideas, and need to use real software architecting. Companies need good architects but also good programmers. If you become a master programmer, you have nothing to be afraid of. You can work for you own company as master programmer or for some big corporation.
Silvercode on October 23, 2008 2:01 AM@Dylan
Nine dexterity? You are severely overestimating most programmers agility here.
Dylan on October 23, 2008 07:34 AM
Truths are more painful the more accurate they are. That one hurt. :)
I always thought that was a good reason to group. :P
Hutch on October 23, 2008 2:16 AMMmm. Baldur's Gate 2. Greatest game ever. Sorry, I don't have a real comment. I'm trying to think of where my old BG2 CDs are, and will it run on Vista.
Eric Z. Beard on October 23, 2008 3:11 AMMarketing is what Steve Jobs did when all Wozniak had was a bunch of parts he wanted to sell in kit form.
Timing and luck (and semi-criminal software licensing) is what Bill Gates did with MS-DOS.
Who wants to bet how many comments will be gaming-related versus marketing-related?
;)
Pete on October 23, 2008 3:59 AMSome of us are just misanthropes, loners, or autistic. And some of us are ugly and smell bad too. Not everybody can be social.
Fred on October 23, 2008 5:21 AMDD reference for the win. Although you're a few versions behind ;-)
Wayne on October 23, 2008 6:23 AM/insert joke about min-max DD parties here.
Though that joke would represent the architype of a stunning and stunningly disfunctional development team.
David Whitney on October 23, 2008 6:41 AMI concur.
Niyaz PK on October 23, 2008 6:53 AMIt's certainly important for programmers to be able to communicate their ideas, but there are plenty of brilliant people out there with an aptitude for algorithms or architecture, but may not be great marketers. Isn't it more the job of the software manager to promote his/her team and get that code out the door?
Michael Katz on October 23, 2008 6:54 AMFirst, you're correct about marketing yourself; however, a better place to start is honing, and practicing your elevator speech
Agree, I wrote about this in Can Your Team Pass The Elevator Test?
http://www.codinghorror.com/blog/archives/000962.html
you want us to learn how to manipulate and mislead people into doing things for us through deceit and half-lies
Not at all. I believe programmers should cultivate communication skills. When you're doing something cool/awesome, other people know why and how.
Jeff Atwood on October 23, 2008 7:07 AMAs usual, this is an awesome post - I like everything you've said, but my question (and perhaps it's imperceivable on some level) is *how* do you get people to understand, *how* do you get people interested, and/or *how* do you get people excited about the project that is being developed?
I realize that this varies to some degree on a case-by-case basis, but, nonetheless, I always struggle with the *how*.
David, I'm not sure it's a joke. The min-maxing analogy is relevant here!
While having a rounded out skillset is important in order to highlight and communicate the more awesome parts of your code, I think you also have to play to your class strengths.
To put it in more DD terms, pretty much -any class- could play the stats that Jeff represented. But they wouldn't be amazing at it. They'd just be passable.
Just like a good party, you want to maximize where your class is most effective, and minimize where it isn't (which is why it's called min-maxing). The key here is understanding that the 'coder' class might not necessarily just encompass -coding-. It may also mean effectively understanding and communicating why your software would be useful to people.
That doesn't mean you need to cover all of the marketing bases, though - another class in your party can do that. Someone who has put more stats into Charisma than a coder would. ;)
Chris Dary on October 23, 2008 7:12 AMScrew that, I came from marketing (I even have a degree in it). You know what? It sucks!
leppie on October 23, 2008 7:15 AMI think that not all engineer need to have marketing skills. If you say communication skills then all engineers would be concerned.
Marketing and communication are not the same, with Marketing you are selling something. I prefer to have a right documentation of an application than a marketing pdf. But one stuff is sure people with excellrnt marketing skills can sell themselves and can climb the management ladder faster.
One tool of internal marketing is powerpoint: do you really think that Joe the powerpoint specialist is better than his twin Jim that specialize in requirement gathering?
But i need to go listen to the podcast to be sure that i m not misunderstanding this :)
DomreiRoam on October 23, 2008 7:18 AMSo, I should choose to be a hybrid class Coder/Marketer? I was always a Fighter/Mage back in the day.
David S on October 23, 2008 7:18 AMTo keep yourself relevant and not just a cog, you must be able to express what you do to people who do not understand the importance of what you do.
However, start small. Market yourself to other IT geeks. Then work on moving into dangerous territory, like...the business people. Ideally, your manager is good at this stuff and can coach you. If not, find an online mentor. Rands is a good choice. http://www.randsinrepose.com
Mike on October 23, 2008 7:23 AMI think Jeff has a great point here, but it fails to impress those without leadership ambitions (a perfectly normal condition by the way).
So, instead thinking about it this way may help, as long as your a party member, you don't need the Charisma, but if you want to become a party leader, or go solo, then you need the charisma. Otherwise if you like being a party member, which would you prefer as you leader:
-Single class Coder
-Single class Marketer
-Dual class Coder/Marketer
???
Also, might I reccomend the book Made to Stick, which is all about what marketing tactics stick and why. a href=http://www.madetostick.com/http://www.madetostick.com//a">http://www.madetostick.com//a">http://www.madetostick.com/http://www.madetostick.com//a It's quite geeky.
Mike on October 23, 2008 7:30 AMWhat will you market if you can not code?
www.youtechno.info -----You Techno
www.nichea.info --------Niche Audience
I dunno, I think I lean more towards Bill Hicks' ideas on marketing:
If you're in advertising or marketing, kill yourself
a href=http://sennoma.net/main/edits/Hicks.htmlhttp://sennoma.net/main/edits/Hicks.html/a">http://sennoma.net/main/edits/Hicks.html/a">http://sennoma.net/main/edits/Hicks.htmlhttp://sennoma.net/main/edits/Hicks.html/a
I have read this one Whatever You Think, Think the Opposite, I must comment that you are right at the point.
www.memoments.info
Manipal on October 23, 2008 7:43 AMDude. You totally lost me... until the DD reference. I once was blind... now I see.
Oh yeah, I just saw Seth Godin speak live at a conference about his new book Tribes. He's a cool cat.
peace|dewde
The Husband Protocol
http://dewde.com
The heart of marketing is pursuading or influencing, and there are some very basic ways people are influenced that all people should become familiar with. I suggest reading the books of the social psychologist Robert Cialdini as a start. The sleaze in marketing comes from these techniques being used in a harmful or immoral manner and you don't have to go that route.
Greg C. on October 23, 2008 8:01 AMMarketing and communication are not the same, with Marketing you are selling something.
Right, but as you yourself said -- you're always selling *yourself*, no matter what job you take. It doesn't have to be slimy. If you're doing cool stuff and good work, let other people know!
Jeff Atwood on October 23, 2008 8:12 AMThe only RPG a real programmer knows is that hideous Report Program Generator language created by IBM. I encourage Jeff Atwood to learn RPG if only to get his take on a truly nasty dungeon in programmer hell.
Robert S. Robbins on October 23, 2008 8:12 AMIf you'd written a column saying that you need *both* marketing ability and programming skills, I think that would probably be true. To claim that the one thing every software developer should know is marketing... no. There are lots of software developers out there who know marketing but have no programming skills. You can read all about them on the Daily WTF. They flim-flam their way through technical interviews with their 15 CHA, then proceed to be a boat anchor on your productivity for the next three years with their 9 INT, until they get promoted and fire you.
Presentation is important, but if you've got no skills to back it up, you're one of Them.
Greg on October 23, 2008 8:16 AMJeff, that was quite sneaky of you, getting Steve Yegge on your podcast. Now I *have* to listen to it, and might as well finally check out StackOverflow while I'm at it.
Oh yeah, this is a post about marketing, isn't it? Like I said, sneaky.
Rob Funk on October 23, 2008 8:18 AM@Greg You'll find many SAP consultants who are outstanding marketers, but fall up short in the original idea dept.
Mike on October 23, 2008 8:21 AM@Jeff -- great article, and I agree 100%
@Tom -- I stumbled upon a cool 'how': Come up with a great project name.
I was working for a company that did email processing using the IMAP protocol. After some research I found we could do it much better by leveraging the power of that protcol. So I started work, and always referred to my project as Rocket IMAP. Soon the other engineers were referring to it by that name, then management, then marketing and sales started dropping by asking when Rocket IMAP was going to be done. Excite built because of an enticing, cool-sounding name.
The whole experience surprised me, so I tried it again on my next project, and it worked again! It greatly helped my stature in that company too as I became known for cool projects.
What you're saying is, coders should learn what their users want. No, make that: what their users really can use. That's the first step, before successful marketing begins. Amazing how poorly Microsoft has been able to do it and get away with it. Don't get me started on Word. As a writer who makes his living at it, I'm here to tell ya, there hasn't been a good word processing app for WRITERS since WordStar. The success of Word is due to (a) M$'s marketing hype, and (b) the herd behavior of middle managers. I continue to have faith, though, that a really excellent word processor would grow into its potentially huge niche: those who write and want to do it efficiently. The future of software offers many, many opportunities for this kind of nicheware.
George Beinhorn on October 23, 2008 8:32 AMNine dexterity? You are severely overestimating most programmers agility here.
Dylan on October 23, 2008 8:34 AMI get your point, Jeff, but I think some follow-up posts on this topic may be appropriate.
First, you're correct about marketing yourself; however, a better place to start is honing, and practicing your elevator speech - In the time it takes to ride up a few flights in an elevator, you should be able to introduce who you are, what you do, what you're doing, and how it will benefit the person you're talking to, or society at large.
In other words, just a few simple tips might be better than reading dry marketing books. I don't think, as programmers, we need to go to finishing school just yet. a couple pointers on where the napkin goes, and what fork to use with the salad would be more appropriate.
Mark S. on October 23, 2008 8:38 AMWorking for a big company, I'd say Marketing is not my business. I get paid, whether the app sells or not has no influence on my salary. We have whole departments doing nothing but marketing, it's their task to make the app sell (tell people why they need it and how great it is) and I like it that way. I like it that I don't have to think about stuff like this and fully concentrating on making the best app possible. Further I trust them to make the best job possible on pushing the app onto the market.
Mecki on October 23, 2008 8:54 AMThere is an opposite school of thought that suggests (based on the return on investment) people are better served by honing their strengths than trying to boost a weakness to a mediocre skill.
I don't agree with either extreme. I think it's really about AWARENESS of what your 'character stats' are, so you can make a concious decision to work on weaknesses or to enhance strengths.
Its not that programmers need to learn how to market themselves -- its that nowadays they need to learn how to market as part of building successful applications. Here is a great article making the point, from a VC named Brad Burnham:
http://www.unionsquareventures.com/2008/09/why_the_flow_of.html#comment-2749401
I dunno, it seems to me that Mr. well rounded would be well served to join the party with the INT=51 guy. I converted your analogy to fantasy sports: the genuinely good player with average stats in everything isn't quite as good as two ok players that are freakishly gifted in one category each. So a team of a freakishly gifted marketer with a freakisly gifted programmer would seem to be the win-win. Or does everyone buy into every man for himself around here?
SteveJ on October 23, 2008 9:03 AMI'm currently majoring in MIS in college. I was going to start out as a CS major, but I realized that a lot of people are better programmers than I am. MIS combines business and technology in a way so that I don't become a shut-in programmer and I don't become a hardcore business person. A little mix of both makes you much more marketable to any business and you gain the skills to learn how to present your ideas to someone that doesn't have that knowledge (that's why they hire you!)
Dave on October 23, 2008 9:12 AMThey'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.
Cade Roux on October 23, 2008 9:19 AMSeriously, 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.
tk. on October 23, 2008 9:27 AMI'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!
Matthew Morgan on October 23, 2008 9:49 AMAfter 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.
SteveJ on October 23, 2008 10:00 AMCorrect 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.
Clark on October 23, 2008 10:11 AMYou 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.
smerrell on October 23, 2008 10:15 AMElevator pitch link - http://www.youtube.com/watch?v=pVOZ_7FonPE
Mark S. on October 23, 2008 10:19 AMBut I have people skills!
PaulG. on October 23, 2008 10:19 AMProgrammers 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.
Silvercode on October 23, 2008 10:20 AMJason 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.
Justin D-Z on October 23, 2008 10:21 AM@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.
Kris on October 23, 2008 10:28 AM@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!
Jeremy on October 23, 2008 10:30 AMThere 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.
gdvanc on October 23, 2008 10:33 AMCompletely 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.
Rich Visotcky on October 23, 2008 10:39 AMGreat 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.
Eric Sarjeant on October 23, 2008 10:53 AM@Jeremy: Yes, but Salary(MarketingExec) Salary(Jeremy) !?!
Drew on October 23, 2008 10:58 AMThis boils down to : don't build then sell, find out what will sell then build
..and as usual :
don't copy what people already have - they have that already it won't sell
don't ask people what they want - generally people don't have a proper idea what they want (or they won't tell you) this is why marketing is hard
Jaster on October 23, 2008 11:25 AM@Twylite: Programmers don't communicate with customers. If they do, then they are doing analyst's job and designer's job and so on. The programmers should not need to care what they are creating. They are just programmers that make things happen according to blueprints and designs that others have made. Of course this is not that straight forward, so programmers need to understand some of the stuff. But I don't like at all the idea that a programmer has responsibilities like engineering business, defining software and systems, architecting or such. One person cannot master everything, so I wouldn't trust a programmer, though I would need a programmer. I want the programmer be as good a programmer as he possibly can.
I want grand master programmers, I want grand master analysts, I want grand master business engineers, grand master sales persons, grand master architects, grand master bosses... I don't need a programmer who spends time advertising his code and skills to others. Sure there can be code reviews and design meetings. I want more collaboration, but a programmer should be a programmer. And sure a programmer cannot always be just a plain programmer, but you get the idea. I want the corporation be a lightning fast and good at every level, not that some guy goes to other guys telling about his code. I hate if I would have to go talk and hope to get some ideas about what others are doing. I want the ideas to be in a database documented and ready to be downloaded.
There is nothing wrong about sharing ideas and talking to others. But a company cannot rely on random talks. Think also craft versus engineering / manufacturing. They say software industry cannot be like factories, but of course it cannot if we don't even try.
Silvercode on October 23, 2008 11:29 AMIf the other people are not existing or not doing their job, its not the fault of the programmer.
Online dating softwa on October 23, 2008 12:22 PMI love the DD part.
Puerto Rico on October 23, 2008 12:24 PMJust wanted to say, glad to see you posting regularly again jeff.
Tushaar on October 23, 2008 12:29 PM...fundamental human communication. Not something us programmers have historically been so great at.
~ The comments show that this is still, and probably will be for the foreseeable future, the case.
Mark S. on October 23, 2008 12:52 PMIn other words, you want us to learn how to manipulate and mislead people into doing things for us through deceit and half-lies. I got an MCSC not an MBA for a reason.
MJK on October 23, 2008 1:04 PM@Silvercode -
If you program only for the love of programming or are satisfied with being a drone in the code factory, then knock yourself out. Let someone else handle all that other nonsense.
If, however, you write code (at least in part) to provide you and your family with food, clothing, shelter, health care, expensive toys, and fun vacations, then understand that expanding your ken and your talent beyond your mind-boggling and awe-inspiring programming abilities and into the domain of your analysts, your architects, your project managers, and your boss - whether you do their jobs or not - will make you more valuable and more valuable means a more secure ability to provide food, clothing, shelter, health care, expensive toys, and fun vacations.
The choice between your coding acumen and your business acumen is almost never Either/Or.
You can make a wonderful living coding the hours away with no concern for the world around you, but you will likely still have limited your opportunities, increased the risk of writing code that's never used, and left your income at some degree of risk. If you choose to rely on someone else to understand the business needs and customer requirements and everything else that is required to turn your artfully-designed strings of zeroes and ones into cash flow, then you have chosen to be reliant. You rely on their competence. You rely on the quality of communication between you and the non-coders. You rely on your ability to deliver more value per dollar than coders in countries you've never heard of. You rely on a lot of things not entirely in your control.
That's okay; the world may need more people that will just sit and code whatever they're told than it needs consummate IT professionals; more excellent line cooks than great chefs; more expert draftsmen than sought-after architects.
It's not for me, though.
gdvanc on October 23, 2008 1:18 PMIt's hard to get heard on a blog like this, but there is a great Radiolab podcast on this topic: Robert Krulwich's commencement address Tell Me A Story at CalTech
http://blogs.wnyc.org/radiolab/2008/07/29/tell-me-a-story/
Haha, now this is a topic I can get behind ;)
I've explained programming in terms of DD before:
http://d20.jonnydigital.com/2006/12/object-oriented-programming-concepts-in-java-explained-with-dd
If the average is 10.5, then are you also suggesting that programmers should be in the top 5% of the population with statistics like that?
Keir on October 24, 2008 2:04 AMYou can spend any amount of time improving your skills in any area.
Sure, if you're Bill Murray in Groundhog Day, but most of us have to deal with things like the passage of time.
I understand the message here - most programmers don't have communication skills. Those are important to have. But you're one of the few public voices who seem to think that it has to be at the expense of core design and development skills. I wonder why that is.
Because of all the many activities in the world, coding is second only to reading in its isolationary effect. Simply put, if you work in a product-focused role, you spend all day staring at a screen, thinking deeply about how to solve a problem, so you won't talk to people as much as if you were in a management or people-focused role.
Communication skills improve through practice, and where marketers, salesmen and managers all practice communicating constantly, engineers spend their most productive time NOT talking to people.
But I can't improve my str stat! I need to maintain my noodly appendages in reverence of my chosen faith! (FSM for the win!)
Seriously though, I do agree that people need to concentrate on communication skills in addition to coding skills. That being said, it isn't appropriate to waste all your time attempting to become a true generalist. Barely capable of all tasks, yet suitable for none.
mwalts on October 24, 2008 2:28 AMIn other words, you want us to learn how to manipulate and mislead people into doing things for us through deceit and half-lies. I got an MCSC not an MBA for a reason.
Alright, this always annoys me. MARKETING does not mean sleaze and half-lies.
Is your code no good? Are you no good at your job? And if not shouldn't you be able to make people aware of how good you are, and why your ideas have merit? Shouldn't YOU be the best person to market the products you're actually involved in creating?
Maybe if people stopped passing all the marketing work over to people who don't have an engineering background and can't understand how a product works, we'd get a little *less* half-truths and outright guessing in the marketing-speak. Half the time, salesmen aren't even lying to you, they just don't know the real answer.
Marketing is about telling people why you are the best person to do the job you want to do. If you don't honestly believe that, then you shouldn't be doing the job. And if you do, you shouldn't be afraid to say it.
And if the answer to those first two questions is Yes, shouldn't you be able to convince people that there's a problem that needs fixing? If You can't market your solutions to your problems, then somebody less qualified but a better marketer will solve the problem for you. Badly.
Tom on October 24, 2008 2:33 AMContinuing the DD analogy, you forgot that programmers are the magician class. They can be excused for their odd behaviour because they know magic...
Marko on October 24, 2008 4:08 AMMaybe if people stopped passing all the marketing work over to people who don't have an engineering background and can't understand how a product works, we'd get a little *less* half-truths and outright guessing in the marketing-speak. Half the time, salesmen aren't even lying to you, they just don't know the real answer.
If You can't market your solutions to your problems, then somebody less qualified but a better marketer will solve the problem for you. Badly.
Well said.
Jeff Atwood on October 24, 2008 4:09 AMThe marketeting department I would put them in the Thief Class....
Marko on October 24, 2008 4:10 AMAs a side off-topic note, it is important to note that under the BGII's DD rules, one could not have more than 18/19 INT plus some modifiers; therefore reaching INT 50 is definitely impossible. ;)
I agree with the poster that also made some emphasis on Wisdom rather than full INT.
Chaotic Good is not a nice alignment either. I'd rather be Neutral Evil. Do not harm unless you have to… otherwise you'd never use Goto statement ;)
A nice analogy tho'. A nice product not known by its potential customers is not a product at all, is it?
Now to find my Irenicus…
Martin Marconcini on October 24, 2008 4:34 AMYou keep using the word people in this article, but I'm not sure which people you have in mind.
If you mean customers, then I can't agree that selling the product should be the main priority for an engineer. Assuming you are working in a reasonable sized company, there are going to be people much better at that job than you.
If you mean your employers, than I think I can see your point as far as your own career is concerned, but I don't think it is good for the industry. All too often, decisions are based on which engineers have been best at selling themselves, rather than actual results.
If you mean your colleagues, I think this is just confusing marketing with communication.
BTW, how does this fit in with the concept of egoless programming?
Steve on October 24, 2008 7:12 AMI would suggest a refinement to this sentence:
if I could teach my fellow software engineers one thing, it would be how to market themselves, their code, and their project.
How about:
if I could teach my fellow software engineers one thing, it would be how to identify their market and and its needs before they write their software or blogs.
Marketing fails because it is done last not first. If you do your marketing first, it is hard(er) for your product to fail. This is a very basic tenant of marketing. Identify the market, identify the need, build it/blog it. You and Joel did this with stackoverflow.
Microsoft often fail because technical teams have the power. Marketing is an stuck on afterthought. As the phrase goes you can't put lipstick on a software pig. Technical people are often the cause of marketing failure, because they will not participate up-front. We just want to write some cool code. The reason we see marketers as a pain, is because we rendered them useless.
Ben Taylor on October 24, 2008 7:21 AMI couldn't agree more. The only very useful blogs I have come across other than this one are Seth Godin's, and one on money management (another sorely needed programmer skill). Joel's hasn't been very useful lately.
Practicality on October 24, 2008 9:42 AMI agree 200%
Alex on October 24, 2008 10:51 AMJeff,
This post is something that addresses something very basic. I fully agree that marketing oneself is a compulsory skill everyone must have, no matter what field the person is in. If you cant sell yourself or your ideas, you are finished in this world.
Programmers do fall in love with their technologies, languages and algorithms and after a point, its difficult to see the big picture anymore because they are so neck-deep in technology. It takes a a rude awakening to realize that what the world ultimately sees of you is what you show them on the surface; no one knows or cares to know whats inside your head
I had written a blog article a couple of years back that pretty much says the same thing in a different way. Rule 1 from that post is specially the most pertinent. http://truelogic.org/wordpress/?p=5
Keep up the good writing.
Amit on October 24, 2008 10:53 AMCharisma of 4. LOL
Dubs on October 24, 2008 11:22 AMThere needs to be sales persons who know what they are selling. Business engineers and analysts model some business, not the programmers. Then architects and designers come up with solutions and programmers just write the software.
Silvercode on October 24, 2008 12:19 PM@ Twylight
To a marketer, everything is marketing, which makes it one of those nearly impossible things to talk about. It's unsurprising that there are dozens of hits for Tao of marketing on Google.
Determining what to build, and who to build it for is just good process for product development, and involves inputs from good market research. Actively currying an audience is what I find distasteful, as much as I recognize it's necessity. There's something in the engineering mindset that wants the intrinsic qualities of a well made product to be good enough. Seeing others label it, and groom it for an audience is a feeling not completely unakin to a parent watching their daughter put on makeup for the first time.
Maybe good marketing is possible, but it's a hard sell for me. I feel that Naomi Klein accurately described the death of the quality product to the superior economic force of marketing and branding in No Logo.
Clark on October 24, 2008 12:32 PMSo Tiber's experience is currently 156K and for the next level he needs... 150K? What happened? Did he miss a service pack or something? Hotfix? FDIV problem?
Dave on October 24, 2008 12:48 PMif i had those high stats :), i would hunt down ogres or goblins.
Believe me, i would not be in coding. :)))
That, in a nutshell, is marketing.
And that post, in a nutshell, is full of affirmations from somebody who don't know what he is talking about.
What you describe as marketing really is only a _part_ of marketing, and yet not all the time.
Marketing involves, among other things, study of the market, making choices (technical, cosmetic, ...) in order to better suit the needs of the market (and your owns), putting a product on the market, and so over. If you think you are a good marketer just because you are good at your 3 poins, well, why not, but please precise the field you are talking about, your achievements, and don't assume you will necessarily be a good marketer in an other field.
Yes sometimes getting people excited can help. As this involves no feedback on the product, I doubt this is very efficient by itself anyway.
On the other hand, on some markets, the products are inherently boring; you won't get people excited (at least not in the stupid way the general public usually is excited about technology, using gadgets for at max a few month before either falling back to an extreme minimal routine or just completely stopping to use the gadget), everybody already understand what you are doing, everybody is interrested about what you are doing because you are using very specialized channels of communications.
The programming world is not limited to web or general public apps...
As usual, you are talking about your experience (i hope it is at least based on something!), in a misleading way, giving your readers a lesson about things you barely have a superficial knowledge of. In this context using words like in a nutshell to state a false definition is just arrogant.
I can understand everyone having to have some level of skill in marketing and communication. However, I think communication skills are far more important. Though some may disagree, I think business skills are very important too. The most valuable programmers I know like to understand the business problem they are trying to solve. Though that may be more dependant on the industry you work in. As I read the above posts, I wonder what kind of company lets the programmer decide the technology they will be using. That's the job of the architect and the designer. If you're working for a startup and you have to wear many hats then maybe marketing is one of them. I don't know what kind of work dynamic makes the programmer have to sell the work he/she has just completed to get it in a version. Everywhere I've every worked, coders are assigned tasks that are slated for the next version of the software. If it's finished on time and relatively bug free then there isn't a question of how can make sure this feature ships?. Your manager has been waiting for it and has paid quite a bit of money to have it developed. If you work at company that lets you work on whatever you want and then try and pitch it to the business side then HAZZAH for you in the short term. I'd start working on a resume though, I bet they have a lot of development work that gets thrown away. Sounds like they need some better management. I appreciate Steve Yegge's point of view, but he works at Google and their RD budget is an order of magnitude greater than a lot of companies gross revenue. They have the luxury right now of giving 20% time and hoping that some of those internal startups are money makers. In the real world I think most coding jobs are far less flexible. I think it's important to understand marketing skills. I think it's far more important for people to listen to you because you are right and have a history of being right. When you are pitching for venture capital then yes marketing skills are important. If you need the same level of marketing skills to make sure your new password hashing algorithm makes into version 2.4.3.1 then you work at a dysfunctional company.
Bill on October 25, 2008 11:50 AMGreat to see someone who loves Code Complete talking about the importance of marketing. And great job on stack overflow!
Brian Dunagan on October 26, 2008 12:20 PMGreat post. However, what I really want to know is how did you photoshop Charlie Sheen into DD? =)
Fitzgerald Steele on October 28, 2008 5:58 AMIsn't this just cliche psychobabble?
Charles on November 17, 2008 10:22 AMI agree with Steve: if I could teach my fellow software engineers one thing, it would be how to market themselves, their code, and their project.
This is very true, many coders write so brilliant stuff, but it never leaves the boundaries of their PC's , why because they don't know how to market themselves, nor their talents, in my opinion, a good coder, is the one who writes code that get used.
This is really an Excellent post.
Steve Yegge:
a href=http://itc.conversationsnetwork.org/shows/detail3375.htmlHow to Ignore Marketing and Become Irrelevant in Two Easy Steps/a
Steve Yegge:
How to Ignore Marketing and Become Irrelevant in Two Easy Steps
http://itc.conversationsnetwork.org/shows/detail3375.html
Or you could be a brilliant programmer AND have competent business skills. Life is not a clich role-playing game where you get a finite number of skill points to apply. You can spend any amount of time improving your skills in any area.
I understand the message here - most programmers don't have communication skills. Those are important to have. But you're one of the few public voices who seem to think that it has to be at the expense of core design and development skills. I wonder why that is.
Aaron G on February 6, 2010 10:38 PMI would love it if more programmers got excited about there work but isn't it more important that the programmers are the ones that don't care about all that stuff and just want to write the best software with the least bugs just for the fun and pride of it?
If they can market themselves then so much the better but does it really matter if they can't? Surely that’s more of a managerial task i.e. to motivate the team, come up with the buzzwords and make sure the work being done is what the customer really wants?
Leon Sodhi on February 6, 2010 10:38 PMShould i bring in another analogy? I play World of Warcraft (WOW), not DD, so I will use that.
Almost anybody who's played WOW to the max level knows about the three talent trees a character class may invest points into. Much like Diablo2 before it, in WOW each level up affords only 1 point to invest in a particular talent. How one chooses to improve existing talents or learn new talents is up to the player. Deeper layers of talents down a tree can only be achieved by investing on lower layers of talent in that same tree. So in general, characters tend to specialise in a particular tree (or role) for that class.
In the real world, our contraints in time, energy, and money equates to that measely 1 point that we have to carefully choose where we wan to plug that into. Do we choose to plaster the points all over across the three trees, or go deep in a particular tree? Effectively, becoming really good at that particular role/task.
For building a team, I'd take a tanking druid and a restoration (healing) druid instead of two druids with talents across the spread. On the broader spread of building a raiding team, I'd make sure all members are specced to perform the role/job they are assigned to do. Other jobs are handled by the rest; they must concentrate on their own.
While this sounds awfully stringent in reality (which actually is), my point is, not everybody is supposed to be marketing. Only some. There are be a spread of talents/disciplines that everybody should pick and focus to excel on one or two. They cannot excel on all.
Aaron Seet on February 6, 2010 10:38 PMthere are be.... should read there should be...
Aaron Seet on February 6, 2010 10:38 PMThe comments to this entry are closed.
|
|
Traffic Stats |