Do call yourself a programmer, and other career advice

This is a (very late) reply to Patrick McKenzie's "Don't Call Yourself A Programmer, And Other Career Advice". I find much of his advice very sensible, and it might be very helpful to someone in the beginning of their career – assuming they can act upon it (and I really don't know whether my 20-year-old self could actually use the advice to improve his negotiation skills, for example).

A few things in the article I disagree with, however. Here I'll mostly focus on those few things, recommending you to read the original article so that you don't miss the rest of it.

"Disagree" is not necessarily the right word – a more precise way to put it would be "it's different in my experience". Which is to be expected because both of us are speaking based on our own careers, which have been rather different. Patrick McKenzie is a small business owner running Bingo Card Creator and a successful consultant. I'm a lead chip architect at a billion-dollar company. Both of us have thus traveled some distance away from "purely programming" (whatever that means), but in rather different directions.

What company are you going to work for?

Patrick McKenzie says 90% of the jobs involve things like implementing an internal travel expense reporting form, rather than a product shipped to external customers. He advises you to get used to the idea, even though such software is "soul-crushingly boring" as he puts it.

How bad is it, and is it really 90% of the jobs? Spolsky thinks it's maybe 80% – and that it's bad enough to "drain the life out of you". He goes on to elaborate why it "sucks to be an in-house programmer":

There's rarely a business reason to improve in-house software past the point of "barely good enough". "Forget any pride of craftsmanship – you're going to churn out embarrassing junk".

At software companies, what you do is more directly related to the way the company makes money, so you're more likely to be respected. "A programmer is never going to rise to become CEO of Viacom, but you might well rise to become CEO of a tech company." "…no matter how critical it was for Viacom to get this internet thing right, when it came time to assign people to desks, the in-house programmers were stuck with 3 people per cubicle in a dark part of the office".

Note that McKenzie and Spolsky are in almost complete agreement over these points. But then Spolsky says you should be gunning for a position in a software company – the environment where creatures of your kind naturally thrive. Conversely, McKenzie explains how to prosper as a programmer outside software companies – moving in the opposite direction of where things go by default (being stuck in a dark part of the office while they're trying to outsource your job.)

So the question is which path you prefer. "Not so fast", you say: one of these jobs is way easier to land – 80-90% of the chances are you're not getting inside a software company – so it's not just a question of preference.

Here I disagree: even if only 10-20% of programmers work in software companies (where are the stats?..), and even if they're "the best" (according to what metric?), McKenzie himself says in that same article:

You radically overestimate the average skill of the competition because of the crowd you hang around with: Many people already successfully employed as senior engineers cannot actually implement FizzBuzz.

But if competition is relatively unskilled on average, you probably can land a job in the 10-20% of the sector that you want – as did most people who graduated around the time I did. So I rather firmly believe that it's a matter of choice: do you want to work on in-house software or one-off businessy projects of that kind, or do you prefer a software company?

Let's proceed to McKenzie's advice to in-house programmers – which should in itself help one make that choice.

How to call yourself

One such advice is:

Don't call yourself a programmer. “Programmer” sounds like “anomalously high-cost peon who types some mumbo-jumbo into some other mumbo-jumbo.” Instead, describe yourself by what you have accomplished for previous employers vis-a-vis increasing revenues or reducing costs.

Sure – an in-house programmer is likely doing some type of expensive mumbo-jumbo in the eyes of his non-technical MBA-wielding manager.

To me, however, a programmer is who I'm looking for, while a resume full of revenue increases and cost reductions sounds like an "anomalously high-cost parasite who types some mumbo-jumbo into Excel and PowerPoint, claiming credit for others' work".

McKenzie says a software company looks at this just like a company hiring internal programmers, essentially. His example is "the guy who wrote the backend billing code that 97% of Google’s revenue passes through – he’s now an angel investor". The guy apparently got rich by being near a "profit center" rather than through his unusual skills.

The thing is, in this case I believe he's talking about Ron Garret, the PhD from NASA's Jet Propulsion Laboratory. Do you think they hired him because he described his work at the JPL in terms of revenues and costs? (BTW he didn't like working on the billing code, bought his stock options and quit, instead of choosing a career at the company's biggest "profit center".)

I did end up writing the credit card billing and accounting system, which is a nontrivial thing to get right. Fortunately for me, just before coming to Google I had taken some time to study computer security and cryptography, so I was actually well prepared for that particular task. …I designed the billing system to be secure against even a dishonest employee with root access (which is not such an easy thing to do). I have no idea if they are still using my system, but if they are then I'd feel pretty confident that my credit card number was not going to get stolen.

Sounds to me that his technical knowledge and programming ability was the bulk of his contribution, whereas deep thoughts such as realizing that there will be some "cost reduction" due to not having credit card numbers stolen is not something an employer needs to hire anyone for.

So if I ever send out a resume as a chip architect, I will focus on my technical role in transitioning from fixed-function hardware accelerators to programmable processors, more than the manpower this saved and the business we won as a result (which I think were real outcomes of our work, but which is rather hard to quantify – as these things often are unless you're a business-friendly-sounding liar.)

Incidentally, I'm not sure when I'll send out that resume, which brings us to the next point.

On job hopping, backstabbing, and the lack thereof

Co-workers and bosses are not usually your friends: You will spend a lot of time with co-workers. You may eventually become close friends with some of them, but in general, you will move on in three years…

<your boss will> attempt to do things that none of your actual friends would ever do, like try to talk you down several thousand dollars in salary or guilt-trip you into spending more time with the company when you could be spending time with your actual friends. You will have other coworkers who — affably and ethically — will suggest things which go against your interests…

There is a certain internal consistency to a view that your coworkers are not your friends, because you will move on in 3 years. In fact, it's a bit circular. They aren't your friends – because you'll move on. And why will you move on? Well, I dunno, maybe for a 10% salary increase. What's there to lose? Relationships with coworkers? But coworkers aren't your friends!

Again, I don't disagree, but rather offer an alternative view, equally internally consistent. I have stayed at one job for more than a decade, in large part because I'm rather attached to the people I work with. To be sure, I got raises, and I was ready to quit over employment terms – but it'd take much more than 10%.

Isn't it just a quantitative difference in preferences – a 10% raise not being fundamentally different than, say, 100%? Well, sufficiently large quantitative changes add up to qualitative changes, as Marxian dialectics or some other Soviet philosophy thingie that my parents sometimes quote taught us. What's going on is that both approaches can lead to career advancement, but they do so very differently.

If you're willing to change jobs over a small raise, you'll be changing them frequently. You won't get attached to people, or to the work you're doing together. You will be very good at finding jobs and you will know what's generally going on in the industry and what's in demand. You will not know that many things specific to any of your employers. You and your employer will become very useful to each other fairly quickly, but you'll also be somewhat expendable for each other.

Alternatively, you can keep a job as long as it's a fun environment, requiring a significant raise once in a while. Your relationships with people combined with your long-term outlook can let you do things together that you otherwise couldn't plan or execute, and learn things you wouldn't have learned.

Much of my knowledge about chip design comes from ASIC hackers I worked with, and their willingness to develop their biggest ideas together with me came from trust that necessarily took time to build. It takes time to learn that none of you is in the habit of "suggesting things going against the other's interest", or pulling other unfriendly shenanigans.

Incidentally, if you stay at one place for a long while, then your worth to the employer grows to the point where you can get the significant raise that you'd quit over without actually quitting. Your worth can also grow well above what employers are willing to pay to experienced new hires, so there's no longer a point in switching jobs. This is somewhat analogous to becoming a consultant after having switched a whole lot of jobs and now making more than the next job hop could give you.

Both approaches work, though I don't have stats showing which tends to be more effective. I do believe that the long-term approach is more fun. I could never land the kind of gig that I have now through job hopping. More importantly, I wouldn't have the relationships that I have at work.

"More importantly", because all means to reach our ends often fail, and then all we're left with is our means. You can't count on any career strategy to give you either a dream job or a load of money; it'll work to some extent or other but who knows. What you can count on is your lifestyle being affected rather predictably by your career choices. The impact of these choices on relationships could thus be weighted as more important than the impact on career advancement because it's more predictable.

The part about bosses is the only one I very much agree with. (I had enough bosses to be able to plausibly deny that I'm thinking about any particular one here.) Yes, some of them will want you to work more time for less money (by itself a natural desire for an employer) while attempting to look like your friends (which is where it becomes a tad irksome). This just means that you should guard your own interests (as always) – and perhaps not judge people too harshly before spending time in their shoes.

How to value an equity grant

McKenzie says you shouldn't value equity very much, and he doesn't spend many of words to say it. I'll talk about stock options, which are worse than an actual equity grant and which is the only thing I've ever been offered.

My basic outlook is again long-term. I work at a private company whose value rose almost tenfold over the decade I've been there. And it's still a private company, so there's never been an easy venue to make money off most of the stock options.

From a long-term view, stock options look worse – and better.

Worse, because having stock options ties your hands behind your back. You usually can't afford to buy them when you quit, or at least buying them is a significant risk that you might be reluctant to take. If the company survives for a long while, then you may start to dislike the place but the hope of making money off your stock options now makes it harder to quit. If you generally like the place, options make it harder to negotiate a raise, since they know you can't quit.

So in the long term, options can effectively be a liability.

On the other hand, as the company matures, its stock options tend to get undervalued by employees, and for no good reason. People intuitively think along the lines of, "it's already expensive – how much can a price rise from now on?" It's a natural thought if the price has went up threefold or tenfold already.

But what this misses is that you don't get paid in percentage points – you get dollars. A $100 share going up 20% to $120 means you make $20 per share. A $5 share going up 100% to $15 means you only make $10 per share. Stock options of a mature company whose price is still rising can thus be even nicer than stock options of a young company which rises more quickly but which is still cheap – and is more likely to go bust overnight.

The upshot is that people overvalue stock options early on – but they also often undervalue them later on.

Note that if you don't intend to stay for more than 3 years, than stock options are most certainly a liability because they make it harder to quit – while the chances that the company makes it big in that span of time are very low.

Working at a startup

McKenzie lists valid reasons not to. In terms of job satisfaction, he says you can work on many exciting things in large corporations, not just startups.

Here's one thing in favor of startups. A large corporation usually doesn't have huge gaping holes that it doesn't know how to deal with or doesn't even notice. A startup often does have many such gaping holes, because, well, nothing is established yet, they don't even understand what they're doing, and most importantly, they are severely understaffed.

This means that you can grab pretty much any responsibility that you want to. There will be areas that people are competing to work on everywhere, but in a startup doing something hard enough, there will be a ton of hard problems nobody is competing to solve because there's not enough time or people for everything. You can be the person pointing out that problem and grabbing that responsibility.

As companies mature, being able to just work on whatever you want gets harder. My metaphor for it is nomadic programmers moving from problem to problem vs settlers with states and national borders where even visiting your neighbor's code may involve a visa.

This isn't a recommendation to work for startups, just one thing worth pointing out. The counterpoint is that if you're an orderly person who wants an orderly process, then a larger company known for its development culture is probably a better idea.

Impact of career on life happiness

At the end of the day, your life happiness will not be dominated by your career.

In one way, I agree wholeheartedly; whatever the merits of a job, it's a job, and I actually noticed my productivity fall at times of treating it as more important than that. The healthy way of looking at it is "just a job, at the end of the day".

On the other hand, we do spend quite some time at work. The question is, to what extent does it make sense to separate "work" from "life" – and to what extent it's one part of life among many, to be treated similarly to those other parts of life?

I argue that the "work/life" separation shouldn't be strong enough to separate "coworkers" into a distinct category of human beings with whom relationships are formed fundamentally differently – nor is it necessarily great to be emotionally detached from the workplace to be always ready to abandon it and "move on".

(I'm not arguing that McKenzie's intent was to say the exact opposite of what I'm saying, BTW. I'm just commenting on some quotes and the general atmosphere of the text as I perceived it. A lot of things simply have different meaning when heard by different people; a simple advice like "be wary of others' intentions" is great for someone overly trusting, but not for someone already verging on paranoia. Some people need to hear that coworkers aren't friends; today I'm writing for the other people.)

Summary

When I introduce myself, I usually call myself a programmer, regardless of my current work on chip architecture and management and stuff. I got into programming for the money, so it's not like I'm overflowing with pride when uttering "programmer". I just think programming is a great career and the right thing to call myself for me.

There's an alternative approach where you program, but you don't call it that, and you use programming as a starting point from which you transition to some form of being involved in business as directly as possible.

It sounds a bit roundabout to me – why not just get an MBA instead? – but maybe it's the right path for some (especially considering that some prestigious MBA programs want you to have industry experience before you can even enroll.)

The important thing is to choose the path that suits your preferences, follow it consistently, and realize where your approach is most likely to succeed. Because where I work, someone applying for a programming position and not calling himself a programmer will not make a good impression.

I agree emphatically with many of the points in McKenzie's article – my favorite point is the importance of communication skills – and I very much recommend it.

44 comments ↓

There's a lot of good stuff here, but I disagree about the claim that in a startup, "you can grab pretty much any responsibility that you want to". I've worked at big companies (n>100,000) and early startups (n=2), and lots of places in between.

My experience is that you have more flexibility in a larger company. Whatever you want to do, you can get transferred to that department.

At a startup, the founder is more likely to tell you, "You can work on whatever you like in your free time, but you have to do this (giant) task this week or we'll seriously start losing the few customers we have".

I definitely agree regarding working for a software company. If you like to program, you should aim to work where you are appreciated for being a programmer, and that is usually the company where the main product is software (and then you can call yourself a programmer without a problem).

I enjoyed reading this article. You've written it well and provided some interesting insight to big company versus little company conundrum. I think at the heart of this is that people are different and diversity is good. Finding a right fit when looking to hire or be hired is difficult because of such diversity but overall – worthwhile.

@K.M. I was thinking of medium-sized startups (n=10-20) more than tiny ones, where you'd be very right. As to getting transferred to other departments – it's a painful thing to have to do at times, and it's not always that smooth; but if it worked well enough for you then, well, it did.

@petrus: I knew it wasn't Marxist, Soviet Marxian philosophy just repackaged that and I thought it'd flow more funnily and bizarrely in the text if the source was cited in this garbled form.

Great article, I agree with almost every point. One thing I disagree with though, is the bit about equity being overvalued early and undervalued later. The problem with the logic that "you don't get paid in percentage points – you get dollars." only follows if you get equal equity grants, but of course you don't. Employee #2 generally gets an order of magnitude more than employee #20, and so on.

The first thing you do when considering equity is multiply out the quantity by the strike price to see what the value of your grant is, and secondarily you might also look at your total percentage ownership. After that what are the differences between a new startup and an established company? Well in a small startup there is by definition more room to grow, but that's probably more than offset by the difficulty of getting any traction at all. You also can have an outsize influence in a more fluid environment, so if you are really good you can actually earn those multiples, but on the flip side, maybe you aren't that good and will benefit more from a successful company where your contribution to growth is diluted by stronger players. Beyond that you get into the strength of the idea, market dynamics, volatility, luck, etc.

In the end there are too many factors to really distill it down. You should first make sure you are paid enough cash, then make sure you enjoy the job, and only after that consider how much you think the equity to be worth.

Employee #20 can get more options on top of his initial grant if he stays at the company, becoming more valuable than he was when he was hired. The question is if he chooses to bargain for more options or more salary; I'm pointing out one reason not to undervalue options based on a vague feeling that "it's too late", which is something I often heard. I simply suggest to do the math instead.

Re: a programmer will never be the CEO of Viacom (|| bigCorp), I'd argue that a programmer who didn't call herself a programmer and "transition[ed] to some form of being involved in business as directly as possible" could escape that – and that would be a pretty solid strategy for escaping it.

Clearly if you want to be a software engineer at Google, calling yourself some kind of business consultant would be a silly approach. However what if you wanted to work at Best Buy (just an example) and didn't want to be stuck in a dark, shared cubicle doing mindless work, but wanted to help pull the company into the 21st century. Marketing yourself to the company as some form of technology+internet+business consultant is probably going to get you more interesting work with the chance to have a greater impact – and yes even the opportunity to be CEO one day (if, for example, you were responsible for pivoting the company into making most of their revenues online, while their retail business continues to decay).

Thank you for writing this. I think your emphasis on personal relationships is correct because the rewards of daily happiness, professional success and financial security are more interdependent than most often assume.

@William: my bet would be that a programmer calling himself something else would go some distance at BigCorp but not as far as to be gunning for a top management position; that's because most companies have a single area from which most top managers originate – that's the area which is perceived as the key part of the business. If programming is not the key part of that business, you could of course change that to some extent (make it more central) but the chances that BigCorp will come to consider itself, first and foremost, a software company are very small, and only a software company will place a programmer at its top – never mind how he calls himself.

@Jeff: it's WordPress alright, with the CopyBlogger theme that I hacked a bit so that an unlimited amount of links to previous posts appear on the right.

I am a programmer. I work for a company that does not do software for a living. I work on projects that are tedious and boring and business related. I'm not undervalued by my employer, if anything I receive nothing but praise for making their lives easier. I love what I do, and there is no job that I would consider boring as long as i get to sit and figure out how to do it in code. It really is all a matter of perspective. I love what I do, boring documentation and all.

I read McKenzie's write up and it hit home. You don't want to know about my boss or co-workers. Sometimes I feel like I am working for them not the organization. Most times I am right. You might think it is my perspective but I can programme in a new language that just came out two hours ago. Battle to solve all sorts of identified issues and not much to show for it because most people around are dishonest. If you think otherwise, then you are a very lucky guy.

@Alicia: if you enjoy it, then it's a fine job. My point was that if someone wants a job at a software company, then the right thing is just to go and get it. I didn't call those other jobs "soul-crushingly boring" – McKenzie did.

Also – so do you call yourself a programmer or don't you? :) McKenzie says if you're valued there, you probably call yourself something else… So you could give a data point supporting or refuting this theory.

@Ezekiel: I don't think I'm extraordinarily lucky that way – if things are as bad as you describe I'd try to find out about other places and move to one such place where life is better. I don't think this type of thing is standard. My experience is at most 5% of people are terrible to work with, maybe, so it's not every place that will be full of this type of people; perhaps some places grow to have a terrible culture though, I don't know. I'd definitely try to look for a nicer place to work unless there are totally obscene amounts of money that you're getting there; it's the kind of thing which just isn't worth tolerating IMO.

@Yossi: Yes it is not tolerable and yes we are paid some relatively good money. Relatively because the places where I can do this kind of work are few and far between.

I understood part of what McKenzie was saying as "play some politics and look good because it is healthy for your job". Even though I think politics (especially the mean types designed to get what you do not deserve at another person's expense) takes the fun out of this type of job. It is multi talented guy that can combine all that and be contented he is a programmer because I believe there is always some trade off in the end.

In a situation where you do not have better options because the finance is important at the moment, but the office is like a battleground where the superior officers are incapable of better appraising programmers jobs because they are not programmers in the first place, you will most likely start to suffer a decline with time as you try to adapt.

"Politics" is also one way of calling it but not the only one; it can alternatively be described along the lines of, understanding what other people want and need, what they think they want and need (not necessarily the same thing), and how they think about things, and communicating with them effectively. I had battlegrounds emerge in front of me because I felt I had to be a warrior or something, in the office and elsewhere; the same situation that results in battles and struggles can be a peaceful walk in the park when I take it easy to begin with. (And I really had things escalate to full-scale wars so I know some ways in which this can happen; not that it means I know how it works out for every other person out there, just my $.02).

Yossi: Yes most times you can avoid turning a walk in the park into a full scale war by taking it easy at the beginning. Thats politics, thats good politics.

To me, considering what people want and need or think they want and need is good politics by the way. I am not talking about what people want and need outside reasonable expectations/limits.

I take pride in being a programmer not because it portrays that I can do a thing or two but because being one means I can do a thing or two. Saying it can be the problem sometimes. Some minds just won’t attach value to it.

Have you ever met someone who you suspect inferred that because they are adept at Facebook, online form fillings, email sending and such activities then they can develope a website like Amazon.com or Facebook.com if they make out time to just learn how to do so? Until they try, which they will never. And then you have to work with or under them?

Why do you think the FizzBuzz test fails 99.5% of people who are confident they can get the job of a programmer.

Should we not now introduce ourselves as programmers? I doubt it. But sometimes it just achieves something unintended, something ugly.

I am an engineer and when I introduce myself as one I am sure people see big bridges, cathedrals, road networks, towers etc. Big things in fact. But when I say I am a programmer. Ha! They just linked up Twitter and Facebook, paid for some items off Amazon, installed five new apps on their iphone, managed to run a virus scan and saw some viruses on their laptop etc etc. I have read an article where some product marketer boastfully said they can part take in discussions on JSON, XML, RESful communication and such and an actual programmer found it insulting that he would equate that to actually meddling with code that can do what he was talking about because the context of discussion has to do with value and appreciation for programmers.

Code is not seen, what is seen is Beautiful in the eyes of the users because it makes life easier. Should we not find a way to make people see that we actually are responsible for making the beautiful thing they use?

I was a computer hardware engineer before.I am bored with that job.Then I became a programmer.I am very happy now.Because of my programmer colleague,developers in the open source community and the fun of programming.

Programmer? Yes, been in programming since 1980.
Seen a lot of change.
I've been at the same company 27 years and I still call myself a programmer. It seems that I get pulled into a lot of other things as well. So, I'm an Airflow Specialist, Electronic Designer, Pneumatic Layout designer, Circuit Board designer, sales, customer service, computer repair, System designer, calibration technician, procedure writer, User Manual writer, nearly every aspect of our designing, manufacture and support of our equipment. All that with an Associate degree in programming and knowing electronic since 5th grade.
It gets a bit frustrating sometimes, a lot of people today do not take initiative – instead they leave it for people who do. Sometimes I don't get enough programming time and I leisurely write programs on my own time just to avoid burnout. Programming in a way is almost like a form of meditation.
If you're a programmer that works with hardware (not talking about you business programmers), get over it – hardware programmers have to know what the whole system is doing and how it works.

II've been called a programmer, a database programmer, a developer, a database developer, and a software Engineer. To me they are fairly interchangable. I have never understood these people who want to move from company to company just for a 10 per cent raise. I want to work for a company where I can be happy, have fun, and eventually retire from. I want to be with a company where I can get a variety of work, while still gaining seniority in the same job. I worked as a freight conductor on the Railroad for the 11 best years of my life. I would switch from one yard to the other yard to Through Freight and occasionally worked passenger. Our company got mergered out of existence, thanks to Ronald Reagan. Since getting into the software industry, I've worked for one company for 3 years, the next for 2.5 years and this last for 7 years. Each time I moved I was looking for a permanent job but on each occasion something happened to make the work environment no longer desirable so I had to leave. While I did get a raise each time I moved, that was not my main consideration. With my current company I've have been able to work on many dfferent projects using many different tools. (Although the project in which I am currently working it looks like I will be stuck here forever because I am considered so valuable to the customer.) I will be eligible for medicare in 5 years so I can retire (provided I have enough to survive on). Then I can do something I like doing.

I am in the same camp as Alicia. I have always viewed myself as a developer, who makes the lives of the people that use my creations better and easier. This often times means actually doing their jobs (entering data, stocking items in the warehouse, fulfilling orders, etc) using my software to find out how things can be made better.

I am usually not the architect of the programs, but rather the person, who implements, fixes and deploys the solutions and finds ways to make it better.

Nothing is more fulfilling and satisfying than to have an end user come to you asking for your help in solving their issues because they believe/know I will be able to get the job done.

I consider myself as a successful programmer and/or developer when most people at various levels in the company know me by my first name.

I've been programming since 1971 (MS Comp Sci), I'm 64. At one time there were great opportunities to design/code interesting systems. IMO the software market is now dominated by large vendors with very mediocre solutions. Chances are you will be vastly underemployed maintaining some POS written by SAP, etc.

My advice to young people is to wake up and understand that we are in an era of neo-fudalism and debt slavery ( college debt, auto debt, mortgage debt, insurnace debt ). Try to live more simply, and be free of the cradle to grave debt. From my experience, there is nothing to be gained by working your a** off for some employer or project.

In our current enviornment, I would not get a STEM degree. There's more money / fun to be had in sales and marketing / self employment / trades, rather than a cube farm.

As with most of the jobs – corporate Amerika has managed to wring the life out of a profession that once was enjoyable and challenging.

I'm a rocket scientist by training and occupation, but I carved out my own niche by becoming the in-house software developer. First in Fortran (for NASA and the Navy), and then in C++ (for the Navy), and now in C# and mobile development (again for the Navy).

On the one hand, I get to work on very interesting problems that really matter for something more important than the next quarter's profits. I have a stable and reliable (although capped and currently being furloughed thanks to Congress) salary, and freedom to explore new technologies at need.

On the other hand, my work isn't appreciated outside my immeadiate "customers", there is never any funding available to improve a product past the bare minimum of functionality, and because I'm easy at hand every flaw in my software is attributed to me personally rather than Micorosft or another outside vendor, and such familiarity breeds contempt that can cut both ways.

On the whole I like being the "in-house" guy. It makes me almost indespensible. But it can be a thankless job. When my software works, I hear crickets chirping. When it doesn't, all I get is grief. Do I ever get a formal description of requirements? Is there any time for documentation or testing? Funding for continued support as OS and third party libraries change? No.

And because no one here really appreciates software development (why should they, they're all rocket scientists), recognition at higher levels of leadership, and the paltry bonus money that federal employees can receive, seldom come my way.

But job satisfaction goes a long way for making up for those shortcomings, and I do love the work. Knowing that Marines and sailors depend on me, however indirectly, to do their jobs helps to. These reasons are why I've never seriously considered leaving for the private sector, and even thought the potential financial reward might be greater out there, so is the potential for financial ruin.

good article! read the other guys one and its total tripe. a good programmer goes into a job interview(unless its a series os meetings) prepared for technical questions about ther experience with coding patterns and integration and such things, certainly not quantifying the millions he saved the company or any other such B.S. at lease, that's the kind we would hire – anything else would come across as suspicious!

Reminds me of the time, three years into my career and still at the same company, that a friend chastised me for not jumping ship more often, explaining that I could have increased my salary by 50%. I replied that I'd tripled my salary in that time. Sort of shut him up ;)

My basic attitude is I no longer care what I'm called as long as the work is interesting, involves programming, maintenance and design, I'm paid a decent wage and I'm not stagnating. It doesn't have to be a top wage: I'm there for the fun of programming: not the money. I didn't even have a job title in my last job: I was called the person who maintains the library.

Maintenance is actually more interesting than design. How do you undo something that has been cast in concrete or how do you rewrite bad code so that it does what it was meant to do and a bit more.

When people ask me why I'm still programming after 38 years, I tell them, if the fix doesn't work, it wasn't any better that what the previous guy did so you can blame them. If it works you get the credit. What other job can you get a win-win situation.

Perhaps the article will have more impact if the author did not demonstrate cognitive bias. The dialectics and Marx philosophy are stigmas, but a reasonable person would not trash them unless he has a solid knowledge of the subject.

@MSimon: I don't think I mentioned such a thing; maybe a commenter?.. I'm pretty sure I've never heard of anything like that. Adapteva make chips having spent maybe $1-2M and that's considered dirt-cheap.

I have been a programmer for nearly 30 years. I love logic, I love programming, I love using logic to build systems to solve business problems. I was chugging only happily until the suck*#%$ company decided they could save money by hiring 2 monkeys + 3 monkey managers to replace me. This, despite the fact of my excellent track record and good relationship with my users and managers. Some higher up decided on my worth and out I went.
Programmers, even those who can actually solve problems, are seen as a commodity and in this economy, cheapest always wins.
Now I'm trying to figure out where I fit in, if I want to fit in and how to fit in. How to go about recapturing my 'usefulness'? I don't want to work for a company that doesn't value my contribution, or be a commodity used by a staffing company (they take nearly 50% off the top!), I don't see how to freelance because freelancing is either really cheap or to land the good gigs you need an 'in' with the company…but I keep returning to the fact that I still love programming. I looked at running a business but I don't want to run a business, too much work, I am back to figuring out how to program independently and make money.
Sorry for this long post, this blog and it's posts and comments really speaks to me.

Part of that programming job was your working environment. Everything in the US has now become financialized. Screw everything and everybody, just so you can get a little more profit, increase dividends, and the C-level’s get their bonuses.

Sadly, this model works especially well for the employers since it gives them tremendous power over the employees. It’s happening to everyone, not just programmers.

I am a programmer, serving in the same company and same team(second company in the carrier) for 5 years. My manager was nice…
There was family medical tragedy of 7 months and my dad passed away.
When i come back to office after dad's funeral my manager dose not condolence.
Finally realized, most of the co-workers look for right time for revenge and no way to identify them who they are as every one good at you.