
Sorry, Digital Ad Exec, I Probably Don’t Want To Work For You - gregjor
http://typicalprogrammer.com/?p=175
======
blowski
> I teach my kids that they can learn anything they are interested in.

I'm sure you have some caveats to that - like learning to read, and doing
basic arithmetic. And that's the issue here. It's the 'curse of knowledge'
again.

For anybody that doesn't already know how, "learning to program" mostly means
learning a bit more about how computers work. And universal computer literacy
would be a _great thing_ , much as universal literacy has been.

I'm guessing that some people thought "if everybody can read and write, then
we'll all become educated and be able to write great novels". Unsurprisingly,
that didn't happen, but other huge benefits were accrued. People could go to
the library and check whether that thing they were told was actually true.
They had a cheap and simple means of permanently storing and retrieving
information. Health, legal, and financial advice can be distributed much more
widely.

So I totally agree with you that "everybody should learn to program" sounds
very similar to "everybody can write a novel". It's wrong. But "everybody
should be computer literate" is a very worthwhile cause.

What's included in basic computer literacy? Things that help people make
better decisions every day of their lives. I know people that waste money, or
put themselves into very difficult situations, through not understanding some
of the following:

* An understanding of what happens when you turn a computer on or off. What's the difference between Office and Windows, and between OSX and Windows? Between iOS and an iPhone? I know people that have upgraded their 1-year-old computer, because they wanted the latest version of Windows.

* Basic security. Why is leaving a list of plain text passwords on your desktop (or even worse, on a Facebook note) a bad idea? Why should you avoid installing that funny game that comes with a cute emoticon toolbar?

* Difference between a markup language, a programming language, and a database. How do these systems communicate with each other? You've probably heard of people hiring a £1,000 per day IT consultant to make something bold on their homepage. Similar point about email, internet, web, and browsers. You could probably throw in the difference between being able to install Wordpress, and code a CMS from scratch here too, so that people don't pay £2K for a vanilla install.

It's fine to say "ask somebody who does know" but when you're totally
clueless, it's difficult to know what questions to ask which person.

~~~
alanthonyc
You make a point about general computer literacy, but it misses the point of
the article.

OP is specifically addressing the fact that employers are trying to increase
the supply of _actual programmers_ by encouraging more people to _learn to
program_ , not just learn the difference between on or off states.

It’s a non-altruistic push to increase the supply of something that is in high
demand.

~~~
blowski
In my opinion, the OP misunderstood the article to which it was responding.

From the original, original article:

> What we nonexperts do possess is the ability to know enough about how these
> information systems work that we can be useful discussing them with others.

He's not arguing that we should all become programmers to increase the number
of programmers. Instead, he's saying that you cannot be effective in any role
in the agency if you're not computer literate. I'm inclined to agree.

------
artas_bartas
OK, I am a business type guy and I have to say... I completely agree with this
article. In my experience, developers become good at what they do not through
learning languages, but rather through mastering three basic skills:

a) modeling business specs into discrete technical steps (loops, workflows,
calls, etc.); b) developing intuition for tackling bugs, e.g. knowing where to
look for causes and how to fix them quickly, even if it often sounds like a
completely illogical thing to do; c) developing and sticking to well-defined
procedures, e.g. documenting code, making timely backups, going through
security checklists and so on.

So whenever I need to hire a new developer for my projects, I try to assess
how well he fits those three criteria.

~~~
ericb
That is a great starting point, and will probably get you better than average
candidates _if_ you can figure out how to tease out that information without
knowing how to code yourself. Compared to the average non-coders approach,
that will get you really far.

I'm curious what you ask in interviews.

~~~
artas_bartas
Eric, I deal with my programming handicap in several ways.

The easiest thing to do is to ask new candidates to walk me through how they
would model a specific business problem we've worked on before. Since I like
to listen in on developer talk, I am usually aware of technical challenges
that different approaches entail and listen to whether the candidate spots
them or offers a way to deal with them when prompted.

I am also very curious to see how the candidate approaches the problem itself.
In my experience, average developers feel they are done with the task when
they explain how the program will work, while great developers are done when
they explain how the program will work even when something it depends on
doesn't work (e.g. how to you handle errors and outliers).

Obviously, I ask my developer colleagues to evaluate candidate's sample code.

Talking about testing is pretty fun too, just asking candidates what were the
most nerve-wrecking debugging stories they had, reveals how much experience
they have in this area. Then I would drill the candidate about testing
routines and heuristics he employs; rule of the thumb is that the more
specific candidate is, the more he knows about testing. Listening to
heuristics also gives you an impression of how creative/crazy people are.

Finally, walking through a specific project the candidate has worked on in the
(recent) past helps to understand what workflows & routines he follows in his
daily routines. Here though you have to remember to ask clarifying questions
along the way.

------
up_and_up
> Suggesting that just anyone can learn programming in a summer spent with
> Python tutorials and getting “acquainted with APIs” trivializes the amount
> of real time and effort required to learn programming.

I am a self taught programmer and began learning about 6 years ago. I have
spent probably a 1000 late nights hacking and learning in addition to working
fulltime as a developer. Most of the other developers/programmers/engineers
that I know have done the same. It takes MANY hours of debugging
projects/issues and problems to gain a core understanding of the art of
software development IN ADDITION to ones chosen language and associated
toolchain.

Anyone who thinks they can learn this and be hirable/good without INVESTING
serious time and energy is kidding themselves.

'Professional Programming' is a craft that takes time to cultivate and master.

------
mwexler
Wow, so many comments missed the entire point of both articles.

McDonald, in the WSJ, said that if you don't at least try to understand some
of the tech behind the scenes, you are basically a tool and won't get hired by
him and other modern CEOs for any of his business roles. He didn't say that
you have to BECOME a programmer, or even try; he just said to walk a mile in
developer shoes to recognize some of what it's like.

TypicalProg says that there is more to programming than just hacking on python
for a weekend...

Both are true, and both are different points.

So many comments on HN about "clueless bosses", yet here's a guy who says, in
the WSJ for all to hear, that he wants to eliminate that. He doesn't say he
wants to replace real devs with weekend-warriors. He says that if you want to
work in the real world, you need to understand some of the tech behind the
scenes.

How is this different from bankers learning finance, or doctors learning about
medicine? B/c, as it turns out, EVERY job touches tech, and his point is that
if you don't suck it up and learn some tech, no matter what job you do, you
won't do as well as you could in it. He's not expecting everyone to code, he's
expecting everyone to have some appreciation of _what it takes to code_.

I'm kind of astonished at the defensive comments, actually. I too require that
anyone working for me learn about the tech behind the magic. Why? Because it
creates RESPECT for the developers. Every negative comment about clueless
bosses reflects a time when a developer has been subject to a lack of
_respect_ and _appreciation_ for what it takes to make production-level
digital experiences.

McDonald appear to recognizes that flaw, and is trying to fix it. He admits
he's not a dev, and so he tries to understand enough to do no evil. Isn't that
the level of respect we would want from any boss, esp a CEO outside of the
"tech" or "engineering" group in a company?

I don't know him, but I agree with him. I'm surprised to see some of the
vitriol. We should be encouraging more folks to try programming to learn that
it's harder than it looks in some cases, easier in others, and overall,
deserves some more respect as both a technical but also creative art. And that
it's rapidly becoming a necessary knowledge for working in the modern age.

~~~
Deestan
> McDonald appear to recognizes that flaw, and is trying to fix it. He admits
> he's not a dev, and so he tries to understand enough to do no evil.

But as TP said, a bit of programming teaches you _nothing useful_ about
managing tech.

If I'm going to deal with builders in my job, it doesn't help anyone that I
spend a weekend building a bird feeder. They talk structural integrity and
insulation levels to me, and my experience based managing "How do you assure
the planks are aligned correctly? I have some extra nails in my shed - can I
reduce costs by donating them to the project?" does nothing but annoy and
insult.

As a techie, my job is to make technical decisions, and translate technical
considerations to the business people. I do not expect them to understand my
field; I expect them to respect my expertise.

~~~
Elhana
Clueless people are like kids - they will respect you more if they understand
you. You will end up explaining them why it is not a good idea to make a bird
feeder with a plywood and glue, like they want you to do.

~~~
walshemj
Of course not with my old mech eng technician hat on you use plywood, glue and
a BFO staple gun to hold it together while the glue cures :-)

You would be surprised how strong you can make a plywood structure using this
method.

To get curves you might need to steam the plywood into place though.

------
onemorepassword
If there's one thing worse than clueless execs that don't understand what
programmers do, it's clueless ego-maniacal execs that try to "educate" the
rest of the world about what programmers do.

Forget about the "probably". Most people on HN would want to avoid an employer
like that like the plague.

Most employers can be taught about how to get the best out of their
developers, and most of the time all it takes is programmers to open their
mouths instead of bitching on HN or proggit.

But with an ego like mr. McDonald, who shows so little understanding about
what it means to be a programmer but is totally convinced he knows it all, I
wouldn't bother trying.

------
Falkon1313
I think that the 'everyone should learn programming' idea conflates a few
things, most of which are good.

\- simple automation and tool usage

How many billions of hours of productivity are lost because people are
manually retyping or reformatting data that could be quickly and easily
scripted (with only basic knowledge) or done using commands/tools already
present on the system? Quite a lot. How much more effective could people be if
they could run even simple queries against the data in their domain? These
things aren't difficult, people just don't know that they can do them.

\- making things more efficient

Related to the above, a basic understanding of how to handle data in a way
that can be processed, and how to make things organized and open to
processing, could go a long way. It doesn't take much programming to realize
that text files are much easier to process than Word documents, or that a
consistently-formatted spreadsheet is reusable while one with the data
scattered around for visual effect is not.

\- learning to distinguish between things that are easy or difficult to do
with programming

Lots of good ideas get nixed because someone doesn't want to spend a lot of
time and money, or bother the developers, when in reality it's something that
could be done in about the time it took to describe it (or less). And we all
have plenty of examples of people assuming that something difficult should be
quick, easy, and cheap. While it takes a lifetime of experience to be good at
estimating such things, and it varies greatly depending on domain and tools
used, a little bit of knowledge of how computers work could go a long way in
some cases.

And for those who say that programming is not for everyone, think of basic
math and accounting. Everyone may not be a professional accountant, but
everyone has to deal with money. Would you want someone in charge who doesn't
even understand that costs need to be lower than revenues to generate a
profit? Or that doesn't know how to calculate 5% of $10,000? Some basic
knowledge is useful regardless of what you do.

------
whiddershins
I've spent most of my life working in production (graphics, ads, publishing,
music) environments which had no software developer on staff, nor should they.

Every single one of those teams would have benefited from having someone who
can do at least basic scripting for automating repetitive tasks.

The thing is, if you want to build a custom file rename-er in python, you
cannot google the answer. You don't need the skills and abilities of a
professional developer, but you need far more than an afternoon.

So yeah, that's just one example of why many, many, more people should learn
to code. The computers are tools and there's no reason why 99.99% of the users
should be only pointing and clicking while a chosen few are the sorcerers
behind the scenes.

~~~
greenyoda
However, if you're a graphic artist who is the only person in the office who
knows how to program, you'll quickly get stuck with all the computer tasks,
which is not necessarily the work you like to do.

------
sopooneo
I think general computer literacy is important for everyone nowadays. One
complication I see is that it is a long way from the general to the applicable
with computers, and the applicable is somewhat arbitrary and changes quickly.
As a contrast, a general primary school math education automatically sets a
student up to understand compound interest, which will almost certainly be
relevant to their lives.

However, starting from logic gates, and getting to spreadsheet usage or the
basics of HTTP is almost as far, and would require starting very early. It
wouldn't be bad to do that, but would be a big change, and would probably have
to take time from something else.

------
arbuge
Alot of the people exhorting people to program are prospective employers like
the one quoted at the beginning of the article who don't program themselves
but need labor, or cheaper labor. Always look at the incentives behind the
speaker.

------
eksith
Yeah, this "everyone must code" malarkey has gone too far. If anything, it
should only be those who can find genuine interest in code. I mean I'd be a
pretty terrible medical student.

I will say that the ability to find patterns is crucial to learning natural
languages as much as programming. As is the important of finding context.
Likewise being "technical" as in being comfortable with technology and a
willingness and patience to learn it are important as well. But I would take a
car to the garage instead of trying to fix it myself (knowing about how the
car works a little bit helps me avoid getting ripped of).

------
keppy
> That isn’t writing at all, it’s typing. — Truman Capote

I'd like to point out that this quote was originally directed at Jack Kerouac.
This possibly helped establish the myth that On The Road was actually produced
in three weeks[1].

[1][http://en.wikipedia.org/wiki/On_the_Road#Production_and_publ...](http://en.wikipedia.org/wiki/On_the_Road#Production_and_publication)

~~~
gregjor
Gore Vidal made a similar comment insulting, I am pretty sure, Norman Mailer.
I can't remember it though.

------
gregjor
I work mostly on web applications. Everyone is a web designer when they are
paying the bill, despite knowing nothing about design, graphics, typography,
usability, or web technologies. Knowing a little bit of Javascript would
almost certainly make them even worse to work for.

~~~
evan_
"Are you using a for loop here? Why not, I learned that for loops are
basically the best loop, I don't want to pay for your $.each nonsense. And I
want to see you use some switch statements over here too."

~~~
gregjor
Don't laugh. I worked on a multi-million dollar project that was derailed for
a couple of weeks by an analyst who insisted that doing a bubble sort on
unsorted results from an Oracle query would be faster than using a SQL ORDER
BY. This was based on a half-remembered class that used bubble sort. Pointing
out that bubble sort is usually given as an example of an expensive sort had
no effect. Ultimately Oracle won, of course -- it's orders of magnitude
faster. But many hours were wasted and tempers flared.

~~~
JamesAcorn
Just curious.. why didn't anyone run a quick benchmark of both methods?

~~~
gregjor
Project politics. We did run benchmarks and Oracle's ORDER BY clearly came out
ahead, but the analyst espousing bubble sort was entrenched and dismissed all
benchmarks as special cases.

------
protomyth
At this point, I believe a director at a movie / theater director or an FX
Supervisor would make a better manager for programmers than most management /
business professionals.

------
thruflo
The title "Sorry, Digital Ad Exec, I Probably Don’t Want To Work For You"
resonates with me more than the post.

I expected an article ridiculing the expectations of agency execs with
nonsense comms projects, i.e.: that addresses the spuriousness of the
commissions, not the incompetence of their management.

------
clark-kent
I agree saying everyone must learn to code is just like a designer saying
"everyone must learn graphics design and photoshop".

~~~
jasonlotito
Yeah! Or like saying every needs to learn algebra or geometry! Biology or
chemistry! Or heck, history!

~~~
pidg
Exactly. I can't help feeling some people are conflating the few people saying
"everyone must code" with the larger number of those saying "anyone CAN code"
here. Everyone should know a bit about coding, just as everyone should know a
bit about design and a bit about how to write well.

There's nothing wrong with encouraging people to give it a go, and there's
nothing wrong with learning the basics of coding regardless of what role
you're in.

Just be prepared to let the pros do their jobs and don't assume your small
amount of knowledge is equal (or superior).

------
rollingthedeep
Spot on! I've been programming for over 15 years and I feel the same way..

------
yaok
In the future, only programmers have money.

>I never learned to skateboard. I can’t dance. I can’t play a musical
instrument. I struggle learning foreign languages. I know people who can do
those things well.

The reason people need to become programmers is because, while people love to
skateboard and dance, that shit don't pay.

Programming gets money. It's the only white collar job that doesn't
artificially limit the number of people entering the field--in fact
programmers seem to actively support importing foreign workers to compete with
them for jobs. That's a new development in history. A group of professionals
eager to give a helping hand to low-wage competition.

Expect more dilution of the talent pool.

~~~
michaelochurch
The economics of programming are complicated and still unexplored. We're the
leading front of the clash between labor finitism vs. labor progressivism.

There's infinite demand for problem solving: making existing processes better.
The limiting factor there is trust. How do you make people trust your
judgement enough that they'll take your suggestions seriously?

Where there is finite (and plummeting) demand is over subordinate labor: pre-
defined work that someone has already decided to pay a fixed amount for. All
of that stuff is getting off-loaded to machines or off-shored to low-wage
countries.

Labor finitism is the idea that there's a finite amount of paid subordinate
work to go around and that we're doomed to compete for a waning quantity of
it. Labor progressivism is the idea that, when one block of grunt work is
automated, it frees up energy to move to something more interesting (and less
subordinate, but more profitable).

Fifty years ago, it didn't matter whether labor finitism or progressivism was
a better model of the "true" underlying behavior of society, because we were
at full employment and technology didn't change as fast as it does now.

Now, it's a genuine and unresolved question: are we doing the right thing when
we, in earnest, do the best job we can at making existing processes more
effective? Are we building the skills and credibility that will help us
graduate to better work, or are we programming ourselves out of jobs and
shutting down the middle class? Right now, it's not clear which. I'd say that
labor progressivism is winning, but just barely. For labor progressivism to be
true, people need credibility and trust and risk allowance (savings) and those
were traditionally won by taking subordinate jobs for ~10 years, but those
_are_ disappearing because labor finitism _is_ correct over subordinate labor.
The result of this is that the terms of subordinate labor are going to hell,
and the people most likely to win in the new economy are those who can find a
way to leapfrog that increasingly unprofitable slog.

~~~
SatvikBeri
_How do you make people trust your judgement enough that they'll take your
suggestions seriously?_

While management at most companies is dysfunctional, this problem is 90% our
fault.

Try asking a hacker how many dollars they contributed to the bottom line at
their last job, and they'll give you a blank stare.

Try asking 10 hackers what their top 1-3 most valuable contributions were at
their previous company. Most of them will immediately dive into the details of
_what_ they did rather than _how_ it affected the business.

Ask them to quantify those achievements in terms of dollars, or user growth,
or any metrics that the business cares about, and maybe 2 will be able to
answer.

I'm not talking about asking for immediate answers either. Most hackers can
take days and still have a hard time quantifying their contributions.

This gives the impression that the most programmers-even great ones-either are
completely unaware of how they affect the business, or don't care.

And if you don't know how something impacts the business, no one will trust
your ability to prioritize.

We as a community need to learn to speak the language of dollars, growth, and
business objectives if we want to be taken seriously. Otherwise we're just
tossing out ideas without articulating how valuable they are.

