The One Thing Every Software Engineer Should Know

I 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.

I 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.

I agree 200%

Jeff,
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.

Charisma of 4. LOL

There 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.

@ 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.

So 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?

if 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.

Great to see someone who loves Code Complete talking about the importance of marketing. And great job on stack overflow!

Great post. However, what I really want to know is how did you photoshop Charlie Sheen into DD? =)

Isnā€™t this just cliche psychobabble?

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.

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:
How to Ignore Marketing and Become Irrelevant in Two Easy Steps
http://itc.conversationsnetwork.org/shows/detail3375.html

1 Like

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.

I 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?

Should 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.

This is 100% spot on. I work only on internal apps and I find that the ability to market my ideas and sell them to management who make the decisions is probably one of the best skills one can possesss outside of being a good programmer. You have to be able to sell yourself and your ideas to get them implemented.

If you make the best app in the world, but canā€™t make someone get excited about it, itā€™ll just sit on the shelf.