
Don't Call Yourself a Programmer, and Other Career Advice (2011) - greyoda
https://www.kalzumeus.com/2011/10/28/dont-call-yourself-a-programmer/
======
arbuge
> Do Java programmers make more money than .NET programmers? Anyone describing
> themselves as either a Java programmer or .NET programmer has already lost,
> because a) they’re a programmer (you’re not, see above) and b) they’re
> making themselves non-hireable for most programming jobs. In the real world,
> picking up a new language takes a few weeks of effort and after 6 to 12
> months nobody will ever notice you haven’t been doing that one for your
> entire career.

In the real world this is (unfortunately) not how technical people are hired.
The stack they are using seems to be the first thing hiring managers look at.

You would think it would be only clueless recruiters who would think this way,
but my experience is that well-respected and successful entrepreneurs also
operate along these lines. It is not clear to me whether their success is
related to or in spite of this way of thinking. To give them the benefit of
the doubt, startups often need to move quickly and those few weeks-months
needed for people to become familiar with a new stack they're unfamiliar with
may simply not be available.

~~~
scarface74
Why would a company choose someone who doesn’t know the stack they are using
over someone who does? Let alone 6-12 months.

Knowing the ecosystem, best practices, frameworks, etc takes longer than a few
weeks.

Sure I could learn Java or Swift in a few weeks, but does that mean I would be
a competent Android or iOS developer?

~~~
williamdclt
> Why would a company choose someone who doesn’t know the stack they are using
> over someone who does?

If the two candidates are perfectly identical on every other criteria, sure.
But that's not the case, the point is that most other criteria are more
important that the specific tech experience when dealing with competent
people.

> Sure I could learn Java or Swift in a few weeks, but does that mean I would
> be a competent Android or iOS developer?

If you have web experience, I'm not too worried about your productivity on
Android or iOS. If I'm hiring for Django and you have experience with any of
Symfony, Rails, Spring, .Net or NestJS, the tech expertise is the least of my
concerns.

~~~
scarface74
You’re not worried about their mobile experience until the app fails to work
in a tunnel because they are expecting an always on connection or they have
half their records on their mobile and half on their server and need to figure
out which to use or they never had to figure out a syncing algorithm because
you usually don’t have to sync things on the web since you never expect long
periods of not being connected.

Edit: and I forgot to mention the biggest UI failure I made when I did mobile
development a decade ago on WinCE ruggedized devices. I didn’t even think
about actually taking the device out into the sun where are all of the field
service techs would be working and seeing how the screen, colors and contrast
looked.

~~~
bhldev
I notice this a lot on apps in the subway (who doesn't) and the app just dies

A lot of problems in life can be simply avoided this is no different... If
you're getting that tiny last bit of differentiation because you're 90% market
share and you can afford to hire people to solve that exact specific problem
then great. But that isn't most places. Most apps would do better to 100%
avoid the problem and just say "No Internet Connection" if there's no WiFi or
3g. On top of that you get mobile developers who swore to God they solved this
problem but guess what they actually have no idea what they are doing. They
think it works but it doesn't because it's actually a database concurrency
control problem. This [https://www.postgresql.org/docs/current/mvcc-
intro.html](https://www.postgresql.org/docs/current/mvcc-intro.html) and what
I expect for someone who claims to "solve the problem" not some "algorithm"
they invented.

So I don't buy it, and I don't buy the business need for it unless it's an app
specifically made for disconnected use. Unfortunately it sounds like one of
those things people do to make themselves feel important or smart (no nice way
to put it; I see it as bad as someone who invents their own encryption
"algorithm" without realizing how ridiculous that is).

In short I would say don't do it. And if someone does it better be a real
business requirement.

~~~
scarface74
And you’re kind of demonstrating my point - the difference between people who
think it’s an easy problem and the proportion who have experience.

Enterprise mobile apps aren’t about the apps you download from the App Store.
Usually they are distributed using an on-site mobile device management system.

1st use case: I worked for s company that wrote field service applications for
ruggedized Windows mobile devices. Some had cellular, some had WiFi, and some
had neither. You had to actually dock the device. The field service techs had
to have all of the information they needed on the device to do service calls
including routes whether or not they had connectivity. They would record the
information and it would sync back to the server whenever they had a
connection.

2nd use case: worked for a company that wrote software for railroad car repair
billing. Repairs are governed by Raillinc
([https://www.railinc.com/rportal/documents/18/260737/CRB_Proc...](https://www.railinc.com/rportal/documents/18/260737/CRB_ProceduresManual.pdf))
all of the rules and audits had to be on the device and the record of the
repair had to be available whether or not they had connectivity. It had to
sync back with the server whenever a connection was available.

3rd case: software for doctors. Hospitals are notorious for having poor
connections.

4th case: home health care nurses had to record lots of information for
Medicare billing. Again you can’t count on having mobile connections.

~~~
bhldev
It's not an easy problem. It's a database concurrency issue and well beyond
the skillset of most mobile devs. Database isn't even a required course for a
compsci degree it's usually an elective.

My point is the problem you think you solved, you didn't and it will break
under dozens of scenarios. Maybe the clients are happy and they think it works
but you just haven't encountered the case where data goes missing or
overwritten.

In other words what I am saying is it is wrong and hard to know it is wrong
unless you directly attack it. The word "enterprise" is an euphemism for low
cost and potentially low quality. It's a buzzword. I wouldn't take an
Enterprise mobile developer over a B2C mobile developer just because of the
word enterprise.

Not everything in the world should exist that leads to 737 Max. The word
"sync" has implications way beyond the concerns of a mobile developer.

So I call bullshit; the fact the industry does it, that everyone does it, that
you consider "real" mobile devs to require it, that customers want it doesn't
mean it is a good idea or that it's mathematically or scientifically sound. It
may cover most cases and nobody may notice the problems except once in a blue
moon but that doesn't make it right because operational systems need full data
integrity.

The correct way to handle such a request is not to "sync" but to collect data
push it to the backend and let the backend sort out the mess. Not "sync" by
whatever stretch of the imagination no matter what cottage industry or cult
beliefs have been born of it.

~~~
scarface74
So you’re saying “it’s not a good idea” to have software that actually
fulfills the need? The mobile app that doesn’t work in the majority of use
cases to solve the problem that it was meant to solve is useless.

And yes “the problem” we solved, a mobile app that could route field
technicians dynamically at a level of quality we needed we did solve.

 _The word "enterprise" is an euphemism for low cost and potentially low
quality. It's a buzzword. I wouldn't take an Enterprise mobile developer over
a B2C mobile developer just because of the word enterprise._

Again this comes from someone who thinks they have experience versus someone
who does have experience. Did you read the link I posted about the industry
required rules for repairing railway cars? That isn’t even the entire
regulation. If the typical B2C app doesn’t work, oh well. For the railroad
industry, if you don’t submit your railcar repair just right - it gets
rejected either by the interchange or the customer and you can only submit
your invoices and rebuttals once per month.

 _The correct way to handle such a request is not to "sync" but to collect
data push it to the backend and let the backend sort out the mess. Not "sync"
by whatever stretch of the imagination no matter what cottage industry or cult
beliefs have been born of it._

How well does “one way server syncing” when you’re a field tech doing routes
and the customer calls customer service and cancels one of your routes while
you’re in the truck? How well does it work when your back end system needs to
calculate where each truck is on the road and needs to re-assign routes on the
fly? How well does it work when one tech needs a part and they need to know
where the parts are based on what other techs have already been at the
warehouse and now they have the part? But wait, they went to the customer’s
house and found that they don’t need the part at all and it’s available on the
truck a mile away? All of this involves dynamic two way syncing...

Again, the difference between someone who has real world experience and
someone who thinks that because their Twitter app doesn’t need to work in the
subway nothing does.

~~~
username90
> And yes “the problem” we solved, a mobile app that could route field
> technicians dynamically at a level of quality we needed we did solve.

Just look for people good at handling split data updates and ownership, there
are a lot of people working on that kind issues on the backend, I really doubt
you find more mobile devs with those skills than backend devs with it.

~~~
scarface74
What makes you think that the two are distinct?

~~~
username90
What two are distinct? Yes you sometimes have conflicting data on two machines
when you work on mobile apps, but that is the core of a lot of distributed
computing problems. So if you only look for those skills in mobile devs you
will miss out on a lot of people with relevant experience.

------
amirathi
This is fantastic practical advice for software engineers early in their
career. Here's some more based on the common pitfalls I see,

\- Don't apply to 50+ companies at one go thinking only a % of them will call
you. Choose ~5 companies, do a lot of homework about their business & write to
key people at these places telling in ONE paragraph what you can do for their
business. If it fails, choose next ~5 and so on.

\- Other things being equal choose team over company. E.g. working at core
technology or customer facing team at a less-known growing business is much
better than working at some internal tools team in Google. FAANG carries some
brand value for future recruiters, VCs but you should really optimize learning
rate early in your career.

~~~
Dumblydorr
What if you truly need employment and you are a run of the mill beginner? Is
that 5 company application approach still optimal?

~~~
amirathi
Yes.

With 50-company approach you increase the absolute number of first callbacks
you get (hence everyone thinks it's optimal). With 5-company approach you
increase the odds of actually getting through to a single job offer. Think
about it.

~~~
astura
>you increase the odds of actually getting through to a single job offer

You haven't AT ALL explained why your "~5 companies approach" is more likely
to get you an offer.

It's not. That sort of approach would be _less_ likely to get you an offer
anywhere that I've ever worked.

999 times out of 1000 you don't have a clue to a company's current business
needs just by looking at public information, even if you had insider
information, a random insider probably doesn't know the current business needs
of anyone outside of their day-to-day job. Even if you did know the company's
current business needs, unsolicited job applications from strangers to people
who aren't recruiters mostly go straight into the trash bin. If I personally
received unsolicited job application from a stranger, I'd probably just ignore
it. The most I'd ever do is reply telling them to apply via our career site
like everyone else.

Plus what exactly would you say as a "run of the mill beginner" for "what you
can do for their business" that would catch anyone's attention that a quality
resume and cover letter submitted though the job portal wouldn't?

~~~
ben509
It's because E(#offers) = #applications * P(initial_contact) *
P(successful_interview | initial_contact)

The ~5 companies approach tries to optimize P(ic) and P(si) at the expense of
#apps.

The 50 approach optimizes only #apps because it assumes P(ic) is low, and
disregards P(si).

Especially P(si) is very important because the interview's purpose is to
determine that you're a good match for them. If they're just another company
you spammed an application out to, that becomes very obvious.

The ~5 companies approach forces you to have already selected them because you
think there's a solid business case for them to hire you. And you can make
that case during both your initial contact and the interview, thus maximizing
P(ic) and P(si).

> 999 times out of 1000 you don't have a clue to a company's current business
> needs just by looking at public information

I'd say it's more like 9/10, but that absolutely makes the case for the ~5
company approach. You're filtering out the ones that have a poor recruiting
process.

It takes a lot of time to put together a good application and you have to
focus on companies that will not only be responsive but follow through all the
way to the hiring decision.

So focus on companies that make it clear what they do and what the position
entails will tend to maximize P(ic) and P(si).

------
chasingthewind
Re: Profit Centers vs Cost Centers

I was once on a team that maintained a SaaS application that was in some sort
of bizarre super-position of "cost center" and "profit center" a few years
back.

The company technically sold the app and made money from it, but they also
tended to give it away almost for free as long as the buyer was going to be
paying lots of money for the company's $FLAGSHIP_BUSINESS_SERVICE that
integrated with the app. (Think of it like a free mobile game with micro-
transactions.)

The primary way customers interacted with $FLAGSHIP_BUSINESS_SERVICE (and
generated micro-transaction revenue) was through our application. However
because the application wasn't what the customer was actually paying for, the
executives had an impossible time deciding whether to treat the app like a
cost or a profit center.

Whenever the app was working fine and everybody was happy the executives were
convinced it was a cost center and looked down on it. Whenever it wasn't
working fine and companies began to get angry and threaten to take their
business elsewhere suddenly the executives would realize that without the SaaS
application they wouldn't be able to sell more $FLAGSHIP_BUSINESS_SERVICE.

Long story short, it was a strange and frustrating experience in many ways.

~~~
cool-RR
My best conclusion is that there is no definition of "cost center" and "profit
center" that makes sense. I challenge anyone to give me such a definition.

This is as good a place as any to put this:

 _Peter Drucker originally coined the term "profit center" around 1945. He
later recanted, calling it "One of the biggest mistakes I have made". He later
asserted that there are only cost centers within a business, and "the only
profit center is a customer whose cheque hasn’t bounced."_

~~~
bdowling
Profit centers consist of people who can directly attribute revenues or
savings to the work that they do. Everyone else is a cost center. No, it's not
fair.

~~~
cool-RR
The bullshit is hidden in the word "directly". You can define this word to
mean whatever you'd like to mean. You can say a salesperson directly adds
revenue to the company, but it's not really directly, the billing department
is much closer to the actual money. You allow yourself to take the billing
department for granted, but that's just because you don't work for the billing
department. In the same way you could view the developers as the profit
center, and take the sales department for granted.

I'll say it again, I'll be happy to see an objective definition of profit
centers and cost centers.

~~~
bloomer
Profit center: spending more money on it can make you more money. Cost center:
spending more money will not be able to increase your revenue, hence the only
way to improve your bottom line is by reducing costs.

A lot of the confusion on this thread was conflating necessary functions with
profit centers. Billing and compliance are both necessary. Done poorly they
can cost a lot of money. Done perfectly they can never increase the actual
income of t he company. That is why sale and product development are
traditionally the only parts of the business identified as profit centers. It
doesn’t mean the others aren’t important just that they have different goals.
Profit centers look to expand the business while cost centers look to increase
efficiency through optimization.

They have different value during the life of a company. During growth, profit
centers are the most valuable source of effort while for a mature company that
has saturated its market cost centers are most valuable to focus on. The
advice to stick to profit centers is somewhat equivalent to sticking to growth
which nearly always has a higher return than optimization.

~~~
rightbyte
If compliance are doing a good job they protecting engineering from late
changes in projects which might give a better product and more revenue.

It's symbiotic.

------
prepend
I received this advice quite a bit and it took me a while to understand it.

Early in my career I worked with a few folks who had PhD after their names. I
don’t have a PhD so I was completely unaware of what that really meant and how
to value it. Almost exclusively they were pompous, sucky programmers and dbas,
and project managers, and other roles common in profit center tech companies
making software.

I thought PhD was a signal for dummy based on my super small sample of 20 or
so people.

I eventually got to work with a ton of awesome PhDs and realized that I was
wrong and scientists working in their field leveraging their life passion of
study is very different than someone having a PhD and working outside their
element.

I think this is the basis for how many people view programmers. They just see
the person who cranks out a billion lines of SharePoint and costs them a lot
and don’t even get to experience a world where a programmer creatively removes
the need for a billion lines of SharePoint.

So there’s different kinds of programmers. My current idea is to call myself a
programmer and describe my roles and outputs in a way that people can assess
if that’s something that helps them or not.

I generally don’t think labels and titles mean too much by themself and
actively want people who think that to avoid or misinterpret my profile as I
probably don’t want to create something with them.

------
YeGoblynQueenne
I think the author is going out of his way to try and sound like a grizzled
veteran of career pragmatism, but I think he's just giving advice on how to
make your life harder. He's basically trying to find some idealised
description of "how things are" and adivising you that, well, that's how
things are and you should shut up and suck it up, or you'll never go anywhere
in your life.

Well, what kind of advice is that? You should just blindly follow what
everyone else does, regardless of whether you like it or not? That's just
self-limiting.

Burnout is a thing because people who want to do something radically different
convince themsleves that their only option is to work for a profit center, or
something equally soul-sucking and don't use their brains to find a worthy
alternative and make it work.

There is nothing to be gained by limiting yourself to what seems like "how
things are" and trying to do what it looks like everyone else is doing. That
way you can only hurt your prospects for personal development and progress.

>> Co-workers and bosses are not usually your friends

Oh wait. Now _that_ is solid advice. That is 100% true.

~~~
blub
The advice given in the blog is colored by the author's life experiences: they
had a job they weren't satisfied with in Japan, tried their hand at an ISV
(this is what start-ups were called back then), then at consulting and found
what I assume to be success with that. This happened over the last 15 years I
think.

The funny thing is that calling oneself anything except X programmer has
become pretty common. In fact, with more and more money flowing into
programming, there's no shortage of bullshit artists and self-promoters.

------
yksmd
On the other hand: [https://yosefk.com/blog/do-call-yourself-a-programmer-and-
ot...](https://yosefk.com/blog/do-call-yourself-a-programmer-and-other-career-
advice.html)

~~~
YeGoblynQueenne
Good read- thanks.

------
rgoulter
> ... just like how most good candidates aren't on offer.

I know this is a minor statement (and not really important to the advice
otherwise), but I liked this discussion that there can be various reasons why
good candidates would struggle to find a job: [https://danluu.com/hiring-
lemons/](https://danluu.com/hiring-lemons/)

~~~
Gunax
Thanks for the read... That was exactly how I've felt only I was not able to
articulate it so well.

The best dev I know didn't go to college (he tried to be a traffic controller
when other people would have been at university). He's exactly the kind of
person who would be doing "elliptic curve partial nonce bias attacks" over the
weekend.

I've seen him have to explain stuff like endianness to people with masters
degrees.

I don't know him well enough to ask, but I think he is stuck working for us
because 80% of jobs are off-limits without a degree.

------
non-entity
> Read ad. Send in resume. Go to job interview. Receive offer.” is the
> exception, not the typical case, for getting employment

Oddly of all the jobs I've gotten most have been via that route. I've never
had recruiters do anything but waste my time and trying network has always
seemed to land me among people who are looking for a job as well.

~~~
ghaff
It really depends. People with well-defined specific skills can often get jobs
through essentially keyword searches.

WRT "networking" I agree if, by networking, you're referring to "networking
events" which, as you say, probably tend to be attended by people passing out
business cards and looking for jobs. But every job I've had since my first one
out of school has come through emailing people I've known professionally at aa
company I've been interested in working for.

------
JohnJamesRambo
There’s no shame in the word programmer and there was no need to culturally
appropriate the word engineer from another profession. Bring back the word
programmer.

~~~
hacknat
More and more I think the word programmer has come to mean nothing and will
continue to lose meaning. More and more people need to program for their work
and would not call themselves “programmers” (Scientists, Marketers/DevRel,
other Engineering fields, Support, Ops, etc).

BTW, there are people who definitely “Engineer” software they are rare, but
they exist, especially at the FAANGs. There are lots of people who have the
word “Engineer” in their title that shouldn’t, a fine alternative is
“Developer”.

What’s the difference? A developer is implementing a known solution in a
specific domain. An engineer is dealing with a significantly unique problem
space that has only been addressed by theory, if that. Engineers spend a lot
less time programming than Developers do, because their primary occupation is
solving tough problems with their colleagues through documentation, RFCs, etc.
They often are not the ones who even implement their own ideas. Wait, isn’t
that a Software Architect? No. Software Architects plan and documents in known
solution space, they aren’t solving unknown problems.

Most people that I’ve worked with in Software have never worked with a
Software Engineer before.

~~~
eng888888
"Engineers spend a lot less time programming than Developers do, because their
primary occupation is solving tough problems with their colleagues through
documentation, RFCs, etc."

Sorry but 100 times no. Engineering is about understanding and using the laws
of nature in scientific terms (mathematics). Strength of materials,
thermodynamics, hydraulics, that's the stuff engineers study and do.

~~~
hacknat
Yeah, sorry I omitted what you just said, but computer science is a theory
driven branch (of mathematics?) that can be incredibly difficult to implement
as much as other engineering fields struggle to implement new theory
breakthroughs in other branches of science.

------
djsumdog
> There’s nothing wrong with this, by the way. You’re in the business of
> unemploying people. If you think that is unfair, go back to school and study
> something that doesn’t matter.

Andrew Yang brought this up in his interview with Joe Rogan a few months back;
how people in The Bay will basically say, "Yes, we're trying to automate away
these jobs." And to some extent, we're trying to automate away jobs in the
tech industry as well.

Look at the Sears (Willis) tower. That building was originally dedicated to
all the manual processing needed by Sears Roebuck & Co to process store and
catalog orders; logistics for the largest retailer in America .. the Amazon of
the early 1900s. A few decades later and the tower was mostly rented out to
other customers. Even when things were still going good for Sears, they were
able to drastically reduce the number of people they needed using machines and
automation.

~~~
blub
His assertion is wrong, by the way, only some programmers are contributing to
job losses in other domains. I expect that many of us are just building
products.

Perhaps that's their way of making themselves feel better, when they say that
_everyone_ 's doing it.

~~~
twblalock
Some programmers create jobs too. App stores for iOS and Android created an
entire mobile app industry, as one example.

------
buboard
If you like your job, call yourself a programmer and build stuff you like.
This article is marginally good advice for your pocket but bad for your soul.
Don't be a programmer and act like a lawyer. It's one of the few jobs where it
doesnt matter if you 're a dog. You create value, easily, you don't just
extract it. It's part of the reason why i m a programmer and not an e.g.
academic.

~~~
vore
You do realize academia is where a lot of the research for programming comes
out of, right? Seems like an unfair way to characterize academia.

~~~
buboard
not CS-related academia for me. But yeah academia requires a lot more
politics, networking etc nowadays in the way that the "industry" doesnt

------
bryanrasmussen
I think if you call yourself a programmer you can do consulting at a
relatively high rate for companies who need to get some project for their
profit center done. You do that, demonstrate your worth, leave with lots of
money, and they might just call you again next time they need to do something
for their profit center.

There's definitely ways in which being a programmer can be part of a rewarding
career.

~~~
keiferski
The point is that you should _call_ yourself a consultant or businessperson,
even if you want to _be_ a programmer.

~~~
jpindar
That depends on who you want to be hired by. Some companies already know
exactly what they need - they need some specific software written so they are
looking for a programmer.

~~~
keiferski
I mean, that’s sort of Patrick’s exact point - you should avoid being hired as
a generic “programmer” as you’ll make far less income. Instead, if you frame
yourself as an expert in a particular business problem (and have the data to
back up your results), you’re far more valuable to the average manager at
BigCo, or to any business in general.

A good example of this is the acquihire phenomenon. BigCos often acquire small
startups purely to hire the people working there. Half of the time, they shut
down the startup and throw away the code. The objective is to hire smart
people whom are also domain experts in a particular problem.

~~~
matz1
You can as well argue that you are expert in programming that your expertise
are not limited in a solving a particular business problem. This way you open
up yourself to more company or any business in general.

------
carapace
Is it relevant to bring up that time major tech companies stole ~$8B from
their programmers, more-or-less because they could?

[https://pando.com/2014/01/23/the-techtopus-how-silicon-
valle...](https://pando.com/2014/01/23/the-techtopus-how-silicon-valleys-most-
celebrated-ceos-conspired-to-drive-down-100000-tech-engineers-wages/)

Oh my, I just now saw this follow up: [https://pando.com/2014/03/22/revealed-
apple-and-googles-wage...](https://pando.com/2014/03/22/revealed-apple-and-
googles-wage-fixing-cartel-involved-dozens-more-companies-over-one-million-
employees/)

> Confidential internal Google and Apple memos, buried within piles of court
> dockets and reviewed by PandoDaily, clearly show that what began as a secret
> cartel agreement between Apple’s Steve Jobs and Google’s Eric Schmidt to
> illegally fix the labor market for hi-tech workers, expanded within a few
> years to include companies ranging from Dell, IBM, eBay and Microsoft, to
> Comcast, Clear Channel, Dreamworks, and London-based public relations
> behemoth WPP.

So, anyway, yeah, don't be a chicken, be a fox. But better than being a fox,
be a human being.

------
ReptileMan
Some solid advice, some not so much. I do call myself a simple programmer.
That is how I introduce myself either. Helps a lot when dealing with people
whose job title require a third of A4 page to fit.

>How do I become better at negotiation? This could be a post in itself. Short
version:

He misses the most important thing. The most powerful thing into negotiation
is to know you can stand from the table and leave.

~~~
artsyca
Yea but you're selling yourself and all of us short -- you're either a hacker,
a poet or a craftsman, haven't you heard?

~~~
ivanhoe
And it's really all of those, or none...

~~~
artsyca
Yes! Add to that fixer, tinker -- as knowledge workers, our role is to create
knowledge and disseminate it into the organization which is frankly the
hardest task in the world, especially when we're working against our own
selves

------
elif
I call myself a programmer to avoid people thinking I want to be a manager or
spend my days in meetings. I want people to expect 90% of my output to be
code.

If this is good for a career? Don't know don't care. It's what I do and enjoy,
and there are many slippery slopes to not coding and becoming rusty, and
ending up on the M train by default.

~~~
freehunter
I’ve met many programmers/engineers who are terrified of becoming management
and make (what I believe to be) poor career choices trying to avoid it.
Instead they get passed over for pay raises and interesting opportunities
because they’re seen as being difficult to work with. When times get lean,
I’ve seen those people get laid off first because no one likes working with
them.

I work on a team of 50 employees. For those 50 people, there are two managers.
1 out of 25 isn’t great odds of being accidentally promoted into management
without your consent.

Your working style may be right for you, I’m not questioning that. But in a
thread targeted at career advice for junior engineers, I thought it’d chime in
from the other side. The chances of accidentally ending up as a manager are
very slim. Don’t destroy your career and miss out on interesting opportunities
to avoid something that’s not likely in the first place.

~~~
SomeOldThrow
If only we could retroactively demote all the managers who suck at it!

~~~
linuxftw
If you're at a healthy organization, they support managers transitioning back
into engineering.

------
afarrell
This is genuinely really good advice.

However, I want to caution against one interpretation: When you focus your
attention on projects to cut costs (and risk) and grow revenue, it is possible
to put that as your top priority. It should be your second.

Your real top priority should be the health and stability of yourself and your
family. Ideally, this is aligned with focusing on visibly-profitable work for
your employer. This is often true, but not always.

—————

Example: Suppose you are working at a company that takes code quality and
automated testing seriously. This has real business value because it means
that you are able to quickly execute projects which accelerate the sales team
and unlock partnerships. So far, so good.

Then suppose there is an opportunity which involves taking over a codebase
written by another company. The business case is strong—by taking several
months to make UX improvements, you can significantly raise revenue. But, the
codebase is in a poorly-documented PHP framework, has haphazardly inconsistent
naming, and no automated tests. Should the company do the project? Maybe.
Should _you_ do the project? Maybe not.

Here’s what can happen: Your team agrees that its going to suck but you’re all
in this together. You start on the project and you find it much harder to make
progress. Because of the new toolset and lack of tests, you find it hard to
maintain focus. You also lose the ability to create reasonable estimates, so
your communication with internal stakeholders erodes—taking trust down with
it. The number of noisy automated alerts that come in also increase, also
decreasing your focus. You try to find time after work to focus on working
through a PHP book, but its hard. The noisy background of your open office
combines with your lack of understanding of your toolset to mean you feel
useless making day-to-day progress. You talk to your manager and team lead
about this. They care, but they are overworked. Its not like they they can
change the open office anyway. Don’t worry—The project will be over soon.
Everyone is in the same boat.

At the end of several months, you need to fill in your semiannual self-
evaluation. You choke—words aren’t coming out. You’re caught between knowing
you need to brag about your accomplishments and...not feeling like you have
none. You’re bad at lying. After spending 2 full days on your self evaluation,
you submit it mostly empty.

Soon, you are searching for a new job.

—————

So yes, when thinking about how the company views engineering, look at revenue
and costs. But before that, look at the things that _you_ need in order to be
effective. Keep your mise-en-place. Use tools that fit your brain. Learn to
zealously advocate for what you need.

~~~
dctoedt
Nit / friendly amendment: _mise_ en place

[https://en.wikipedia.org/wiki/Mise_en_place](https://en.wikipedia.org/wiki/Mise_en_place)

~~~
afarrell
Thank you

------
artsyca
Top two posts on hacker news today --
[https://news.ycombinator.com/item?id=21302498](https://news.ycombinator.com/item?id=21302498)

^ this is the other one, wherein the second line of the article states: 'As
programmers...'

------
pascalxus
Much of what he says about business and programming is all true, at least in
theory for well run, competitive businesses. But, for instance, sometimes in
govt, they never actually calculate the ROI of a project or employee. They
just think: well, we have money that needs spending, let's higher some people
to build some seemingly useful software. Determining what's useful and what's
not ahead of time is harder than it seems.

But, the part about most programmers not being able to implement FizzBuzz is
incredibly false based on my experience. I've worked for over half a dozen
average companies (plus some government too!) in the bay area and I've never
once met an engineer who couldn't implement FizzBuzz. They're able to program
FizzBuzz and much much more complex things, far more than job requirements
need. Not only that, but I've never even met an engineer candidate (i've
interviewed dozens) that couldn't do either FizzBuzz or other basic
programming tasks. So, I really don't know how you people are finding all
these unqualified candidates.

~~~
curuinor
Don't be in the bay area, that's how. That's why they pay bay area peeps the
big bucks: the standard of skill is higher here, because of the community and
other factors.

~~~
SomeOtherThrow
Nah it’s just harder to fix wages low when you can job hop so easily.

------
eng888888
Even if I am an registered engineer (civil), when asked, I say I am programmer
because that's what I do. Absolutely nothing wrong with it.

~~~
criddell
Yep. It doesn't seem to matter much in the US, but in other parts of the world
you can't call yourself an Engineer unless you are a P.E.

I typically call myself a software developer because everything I do that
isn't actually writing software (documentation, design, system stuff) is in
support of that.

~~~
ghaff
>but in other parts of the world you can't call yourself an Engineer unless
you are a P.E.

I've been told the same is true in some US states--or, at least, the licensing
boards would like people to believe it is. (e.g. Texas) But, in my experience,
hardly anyone pays any attention.

You do need a P.E. for certain things--mostly when dealing with regulators,
etc.--but my understanding that in software specifically, the exam has been
discontinued because essentially no on e was taking it.

------
barry-cotter
I’m not sure Patrick would entirely stand behind this as written anymore, just
because the long term trajectory of just a programmer looks better than when
he wrote this.

[https://mobile.twitter.com/patio11/status/117561737079606886...](https://mobile.twitter.com/patio11/status/1175617370796068866)

An under remarked-upon trend: SFBA/NYC engineering wages are starting to drive
engineering wages in the rest of the US as these companies open other US hubs
and print remote offers, in both cases keeping salaries in relatively tight
bands for e.g. internal fairness reasons.

If you were going strictly by geographical market standards you could have a
$200k new graduate in SFBA reporting to a 15 year veteran EM making, hmm,
$120k or so in Chicago, but since nobody can tolerate that, that EM gets
offered $250k.

“Are there enough engineers from SFBA companies for this to matter
nationally?”

There are approximately 3 million software engineers in the US and
approximately, finger to wind, 300k work for AppAmaGooBookSoft alone, and that
number increases by 50k per year.

The modal software engineer in the US is still working for a digital marketing
agency or midwestern insurance company but capitalism is starting to say "Look
if you can paint pixels on a web application and you presently work in a cost
center, that's unacceptably inefficient."

~~~
9nGQluzmnq3M
I would argue the opposite: the trajectory of being a programmer has been
really good for the past 10 years or so, but we've pretty clearly reached Peak
IPO and a correction is on the way. And if/when it does hit, the person with
the skillset "can increase revenue or reduce costs" will be in much better
shape than "can program mumbo-jumbo".

~~~
barry-cotter
I’m pretty sure the entire startup “industry”, companies like Stripe and
Airbnb which are well past finding product market fit and the risk of death
included has less employees than Microsoft. AppAmaFaceGooSoft probably hire
more people every year than every YC company put together ever employed, at
their peaks for those that went to startup Valhalla.

------
SomeOldThrow
In other words, be a servant.

> There’s nothing wrong with this, by the way. You’re in the business of
> unemploying people.

Grow a damn backbone, man. Sprout some values. You’ll find life more worth
living. Have some pride in your work.

------
claimred
>In the real world, picking up a new language takes a few weeks of effort and
after 6 to 12 months nobody will ever notice you haven’t been doing that one
for your entire career.

I've always been a bit baffled by notions like that. How in the world one
becomes a professional in a foreign programming language tech in 6 months? It
feels like every modern realworld battleworn programming stack (ecma, c++2x,
.net, jvm w/e) is filled with nuances and quirks which, as it turns out, an
engineer _must_ know about to be able to bump revenues a little bit and to
call themselves a professional. Hell, even inside _one_ stack there are a lot
of special interest fields. Is every C++ programmer a graphics programmer? Can
a C++ programmer become one overnight? Highly doubt it.

>If a Python shop was looking for somebody technical to make them a pile of
money, the fact that I’ve never written a line of Python would not get held
against me.

How? How is that possible?

~~~
NiKMic
Because companies don't care about how 'clean' you code is, what design
patterns you use or what cool new technology you are using. They just care
that you manage to release quickly so the company can start making money.

So even if you don't know the best way to do things or the best pattern to
use, as long as you can hack something together that works reasonably well for
some time then you're good enough. Sure, it might be flimsy, break easily,
unreadable etc. but if the company is making money then business is happy.

Think about it...code becomes legacy so quickly. 2-3 year old code is
considered legacy, especially if it's not used/modified much. You could have
spent 15% more time to make it more maintainable but it will still be
considered bad code by the next guy who had to work on it because he has
absolutely no idea how the code works and what it is meant to do. Chances are,
it would be re-written anyway even if you spent that extra 15%. The in the
meantime the company might have missed their initial release date and some
potential revenue.

Not saying I agree with it but that is how it is unfortunately.

~~~
bhldev
Depends on the business model. If you sit on the bleeding edge all the time
maybe (even if you don't you should strive for the newest possible for the
skills and budget if only for retention and hiring).

But if the whole point of the company is to build some generic software that's
configurable then absolutely the inside and code matters because it's a hard
requirement. You could build specifically to one type of configuration but it
would not solve the other. And that means generic, abstractions, reuse as part
of the business case not just some nice to have for clean code.

So it very much depends. It's also possible to take it too far. As for
internal release dates I have always considered them bullshit ever since I
heard executives talk about how they pad the time. The more layers of
management the more padding and if everyone works separately in different
teams the more the padding. Developers are better off ignoring internal
release dates and building the best software they think possible to not
compromise on quality. They can cut scope but at the end of the day the
software better work. The only thing you shouldn't ignore is warning people if
it will go over time. Since 50% of software goes over time that's expected.

Either it's good or it isn't either it works or it doesn't and the timescale
devs are used to (sprints, days, stories etc) don't have any bearing on
reality. If it takes a month more because it has to that's how long it takes.
The concept of "MVP" or feature set is totally separate from a good piece of
software; once you get there you can release and iterate and improve. And it's
called "minimal" for a reason if you stop there your software is sunset. The
features and improvements have to keep rolling.

------
ensiferum
"Engineers are hired to create business value, not to program things." Yup
writing software should be the _last_ recourse and only to be used when all
the other solutions to problem are not viable.

~~~
matz1
Then who program the things? Yup thats right: programmer.

Program things and create business value can be two separate thing. Each in
itself can be really hard and require different expertise.

~~~
ensiferum
Yes programmers program but the point was that programming new software should
be the last option in solving a problem and only done as a last recourse.

~~~
matz1
>programming new software should be the last option

Sure, but thats not the concern of programmer.

~~~
ensiferum
Often it is when unfiltered business requirements come down to the engineering
department and individual programmers. Then the first thinking should be: how
can I avoid solving this problem? If the problem needs to be solved then the
next question is "how do I solve this without writing a single line of code".
If software is required then the question is how to use and apply already
existing software. If there's still need to write code then finally we can
start thinking howto write the least amount of new software.

------
dejawu
Sure, this post might objectively get you to a higher paying software job, but
good God I hope I never start seeing the world like this guy or ever have to
work with people who do. Am I really reading the same article as everyone
else? The one I'm reading is filled with these sociopathic gems:

> Add revenue. Reduce costs. Those are your only goals.

> You’re in the business of unemploying people. If you think that is unfair,
> go back to school and study something that doesn’t matter.

> A good engineer has a track record of — repeat after me — increasing revenue
> or decreasing costs.

> Much of Fog Creek uses the Microsoft Stack. I can’t even spell ASP.NET and
> they’d still hire me.

> You should be a good person to everyone you meet — it is the moral thing to
> do, and as a sidenote will really help your networking

> Strive to help people. It is the right thing to do, and people are keenly
> aware of who have in the past given them or theirs favors.

> This is how the game is played. If you feel poorly about it, you’re like a
> batter who feels poorly about stealing bases in baseball: you’re not morally
> superior, you’re just playing poorly

> Social grooming is a really important skill.

There are some bits of the article I agree with, but I can't help but wonder
what happened to this person to make them see the world in such a brutally
transactional way, where being kind and genuine are just hat tips towards your
humanity while ultimately serving to further your career. I can see this guide
as maybe useful for someone who wants to use software engineering as a means
of clawing their way out of poverty, but on HN, where I'd imagine most people
have a genuine interest in tech outside of or in addition to its potential to
make them money, I'm terribly disappointed to see the majority of people here
agreeing with him.

~~~
mplanchard
Elsewhere in this thread, someone posted this rebuttal to the article, which I
think is much more nuanced and well thought through. It also emphasizes the
value of relationships and kindness in a way the original article does not:
[https://yosefk.com/blog/do-call-yourself-a-programmer-and-
ot...](https://yosefk.com/blog/do-call-yourself-a-programmer-and-other-career-
advice.html)

I wound up subscribing to that blog’s RSS feed, because the articles, though
infrequent, seem to be generally interesting and thoughtful.

Edit: I also completely agree with you re: TFA.

------
WillDaSilva
I find it unfortunately that most of the advice here is good. That said,
contrary to what the author claims, the result of rolling a d100 falls within
the range [1, 100], not [0, 99].

------
djsumdog
I've always called myself a Computer Scientist when people ask me what I do
for a living. Not a software engineer or programmer, but what my actual majors
were. I have a bachelors and masters in it, I've published three papers
(although in Geography Journals .. because .. eh it's a long story), so I
might as well claim it.

------
truth_seeker
> Remember engineers are not hired to create programs and how they are hired
> to create business value? The dominant quality which gets you jobs is the
> ability to give people the perception that you will create value. This is
> not necessarily coextensive with ability to create value.

Sadly true. Its all feel good effect that trumps the genuine effort.

------
reggiew
This advice is is all well and good but to me it seems to optimise for someone
with an already successful career. Those of us with multiple long streaks if
unemployment can't really pick and choose when it comes to the next contract.
Nor can we really negotiate because we can't walk away from an offer.

~~~
llampx
1\. You can always walk away from an offer.

2\. Nobody wants to hire a loser, especially as a consultant.

------
SQL2219
I tend to agree with this guy, BUT, the gatekeepers are low-level HR people
who do not think "increase costs" and "decrease revenues" they are looking for
boxes to check. You have to get through AI and HR firewall before you can talk
B2B strategy.

~~~
williamdclt
Part of the point of the author is that if you're talking to the low-level HR
people, you're not talking to the right people. That's not how interesting
people and interesting jobs find each other.

~~~
lonelappde
Not everyone can be as famous as Patrick. That's not how celebrity works. Tens
of thousands of people get great jobs the normal way by joining a company as
rank and file and working their way up, and then getting invited to join their
former co-workers' new companies later.

~~~
rozenmd
Patrick wasn't _that_ famous when he wrote this.

------
gfs78
For most programming jobs experience in the the tech stack is the defining
factor, as most programming jobs do not require deep domain expertise
(whatever the domain is: computing, business, etc).

Of course general problem solving ability is still valuable but it is more
difficult to assess than a candidate´s experience in some tech stack.

So, for the general programming market the tech stack is the defining factor.
The only way you can navigate between jobs with different tech stacks is by
having an insider that guarantees the hiring manager that you have what it
takes to learn the new tech stack without trouble, or by finding some company
which is desperate enough to take the risk.

You can label yourself what you want.

------
avodonosov
In my experience programming interviews are done by programmers, so they
usually aren't about "the value you created in the past job".

------
timwaagh
This article is to me quite brilliant and hits most of the right spots. I
liked it. Then I see the picture of the author and cannot help but think:
practice what you preach. I would not be caught dead wearing a red tracksuit
on a bad hair day when posting a blog post about, among other things, how
grooming well and wearing a suit helps you make more money.

~~~
lonelappde
The bias goes the other way now. A lot of people with a lot of money wouldn't
hire a tech consultant in a "phony" suit with a stock photo -based website.
They prefer "authentic" people who focus on their work, not their clothes.

~~~
timwaagh
I guess it kinda depends. Usually engineers do not get hired by 'someone with
a lot of money'. They get hired by mid-level managers or a committee of
stakeholders. I can understand that some scaleups in social media where
hoodies are part of the corporate image are like that though. but would a
tracksuit be appropriate even there?

But I am going to be 'consulting' for my countries tax authority soon. I wore
a blazer to the take-in interview. I don't wear full suits myself as it is
above my paygrade, but people expect to see at least business-casual in that
kind of environment.

------
HellDunkel
I just realized „Engineer > Developer > Programmer“ seems to be the case with
most people. Understatement, where you at?

~~~
friedman23
It doesn't matter.

------
mcloide
”Writing bug-free code is not a goal. ”

Debatable. A poorly written software will generate as much cost as a manual
labor if not more.

~~~
clarry
> Debatable. A poorly written software will generate as much cost as a manual
> labor if not more.

Debatable. There's lots of poorly written and buggy software out there that
still saves people time. Fixing it might not be worth the cost.

And, on the other hand, for some company, fixing bugs is generating them
money. Broken window fallacy much? Yeah, someone has to pay.

It's sad to see that in our industry, selling pristine and flawless windows is
difficult once the party who has to pay sees its cost. Turns out it's often
much easier to sell a cheap window made by duck taping pieces of broken glass,
nevermind if there are some gaps and holes in it.

------
codegladiator
On the other hand I have come across people who describe themselves as "react
programmers" etc... And would seriously not touch a different framework or
just plain JavaScript.

And I don't understand it

------
leshow
You shouldn't be able to call yourself an engineer unless you have a BEng,
personally. Some places actually have laws against calling yourself an
engineer without one.

~~~
Sureai
I have a b.sc and a m.sc in mechanical engineering. Can I not call myself an
engineer now anymore?

~~~
leshow
Where I live, no, you need a professional engineering designation. It's a
license, sort of like a lawyer or doctor has,
[http://www.peo.on.ca/index.php/ci_id/2057/la_id/1.htm](http://www.peo.on.ca/index.php/ci_id/2057/la_id/1.htm).

------
jokoon
> “Programmer” sounds like “anomalously high-cost peon who types some mumbo-
> jumbo into some other mumbo-jumbo.”

Stereotypes. So it's all about titles and appearances? Who cares about such
things? Don't you think people should learn how to code instead of pretending
they don't like code because they hate math or something?

Your company builds software or it doesn't. Ultimately being able to use a
computer should not be limited to using word and an internet browser, people
should be able to learn how to code some python or other scripting languages.

------
jcoffland
Good advice on how to be a successful corporate drone.

------
mbillie1
A great article I read before every time I interview or change jobs.

------
daveheq
Fuck you 2011, I'm a programmer.

------
JJMcJ
An oldie but a goodie.

------
FpUser
Some interesting things are there.

------
diminoten
Is my coworkers aren't my friends, how do job openings travel at the speed of
beer?

------
SquareWheel
Tough read, but some solid nuggets of wisdom in there.

