
We are done with “Hacking” - jestinjoy1
https://cacm.acm.org/magazines/2018/7/229044-we-are-done-with-hacking/fulltext
======
wellpast
> Programmers have to know how to write maintainable code...

He implies that this somehow falls into “socitech” ability, which it is not.
Maintainable code is precise, well-factored code — almost pedantic — which
requires an orthogonal (if not counterpointed) talent to the more “social”
talents. I would go further to say that a mathematical understanding or at
least inclination is required to write maintainable code. (In the sense that
the same is required to write a readable academic paper.)

Another assumption he seems to make here is that somehow there are all these
algorithmic hackers who sit and write algorithms all day. No, I doubt this has
been some kind of norm ever. Most of what we (business software) programmers
write is business logic and data processing with an occasional, infrequent
need — but need nevertheless — to break out a unique algorithm.

You can scale up all you want and into the future but we are always going to
need to understand the difference between a O(n^2) and O(n) algorithm.

I’m sick of these kinds of pieces that are pure philistinism. The future isn’t
going to save you from your lack of technical skills, education and awareness.
Stay curious and develop yourself — your social self as much as your craft and
profession.

~~~
meesterdude
> I would go further to say that a mathematical understanding or at least
> inclination is required to write maintainable code.

Maintainable code is more an act of writing than of mathematics.

~~~
wellpast
And (good) writing is more an act of mathematics than what most people would
construe.

~~~
meesterdude
uh... no. Not that there aren't mathematics found within writing, but that
argument is irrelevant to this evaluation of taking a mathmatical, formulaic
approach to code vs. one that is descriptive, and caters to the ignorances and
shortcomings of the human reader.

~~~
wellpast
Serious question: How much writing have you done? I'm not at all talking about
writing _about_ mathematics. I'm talking about the structure of good writing,
from fiction to blog writing and everything in between--all of which, when
done well, require economy, form, structure and order. Talking to many writers
-- from successful screenwriters to blog writers, I find the same theme: a
very deliberate awareness of the _mathematical_ structure of their work when
that work is finally "working".

------
mjw1007
Summary: « the skills required of professional and successful programmers are
drastically different from the ones needed back in the 1990s. The profession
now requires less mathematics and algorithms and instead emphasizes more
skills under the umbrella term "sociotech." »

<author> is founder and CEO of software engineering and management platform
<blah>.

~~~
protomyth
So, I can expect this generation's CASE tool that magically generates all the
optimized code from requirements given to this years priestho..... SocioTech
Specialist?

I think their case for advancement of development technologies or how much
social interaction was needed in the 90's is a bit flawed.

~~~
rjsw
The CASE tool will generate code from Instagram posts.

------
zakum1
Having worked in corporate IT, with all its human and technical challenges, i
agree that the "sociotech" elements are critical for engineering, but I also
think that corporates massively misunderstand the value of the hacker culture
and underestimate the extent to which the "sociotech" challenges are a direct
result of having a weak "hacker" culture... we should challenge the "band aid"
approach to fixing corporate bullshit

~~~
mattdeboard
Agreed but due to the dynamic interplay between the two, balancing them well,
as leaders must do, takes both high EQ/empathy, and enough tech background to
be credible. (Even if that tech background is working as a non dev in
technical teams)

Based purely on my personal experiences, leaders who have both boxes ticked
are even more unicorn-y than the fabled 10x engineer.

------
craigsmansion
> Edsger W. Dijkstra's words [..] grow increasingly more valuable every year.

Using a Dijkstra quote in an article where sentences such as "The profession
now requires less mathematics and algorithms and instead emphasizes more
skills under the umbrella term `sociotech.' are used.

I wonder what Prof. Dijkstra would have to say about this "sociotech"
umbrella. Actually I don't, because that's the value of having an
understanding of a subject matter deeper than an Internet search and a copy
and paste: it prevents one from throwing quotes and invented words around that
sound good, but ultimately mean nothing useful.

> It seems that the future of programming rests less in math and more in
> sociotech relationships between people.

Or: it seems that the future of making your fortune with software rests less
in math and more in marketing.

True though it may be, I don't know how this relates to the discipline of
computer programming.

------
gjvc
The author of that piece quotes EWD, but not in full, which is odd -- were he
to have done so, it would have strengthened his thesis, viz.:

"Simplicity is a great virtue but it requires hard work to achieve it and
education to appreciate it. And to make matters worse: complexity sells
better."

\-- Edsger W. Dijkstra

~~~
edflsafoiewq
"Almost anything in software can be implemented, sold, and even used given
enough determination. There is nothing a mere scientist can say that will
stand against the flood of a hundred million dollars. But there is one quality
that cannot be purchased in this way - and that is reliability. The price of
reliability is the pursuit of the utmost simplicity. It is a price which the
very rich find most hard to pay."

-– C.A.R. Hoare

------
calahad
"Programmers do not need to write much code anymore; all they need to do in
most cases is wire together already available components."

As a general statement, I feel like this is objectively false. Just look at
how much code gets added to Github daily.

~~~
Volt
You're ignoring the operative word, which is _need_. You can't say much about
that point without actually doing some analysis. For instance, how much of
that code is wiring? How much of that code is rewriting existing solutions for
educational purposes? And so on.

~~~
AstralStorm
Easy enough to figure out. Count dependencies in given selection of software,
compare to older software in the same area.

I'm certain someone did such surveys.

Software isn't entirely driven by need, sometimes politics or licensing
preclude the use of libraries. Sometimes libraries are not specific for your
area and cannot be used - typical when handling hard real time applications or
when otherwise microseconds matter.

~~~
Volt
>I'm certain someone did such surveys.

Sure, it's easy enough. But until you can actually point to the surveys, we
can't say anything about the code on Github relating to the point being made.

------
mmaunder
This post tries to abstract programming away into the OSS community,
stackoverflow community, hardware providers etc, and takes the position that
programming today requires you to use and direct those resources. Programmers
create open source, write helpful SO posts and design hardware and OS.

This reminds me of the assumption that the 'cloud' is making IT personel
obsolete, when it's just someone else's computer and IT staff.

~~~
mmt
> 'cloud' is making IT personel obsolete, when it's just someone else's
> computer and IT staff.

Worse, it's just someone else's computer and mostly just hardware-IT staff,
and that's not the difficult or expensive part, despite the current mythology
among those who have never done it.

------
bor0
> Programmers do not need to write much code anymore; all they need to do in
> most cases is wire together already available components.

As if this stops you from re-inventing the wheel in attempt to understand
more. Understanding things is what distinguishes programmers.

I had exactly the same discussion with one of my friends that wants to become
a programmer. His argument was that programming is not fun at all because all
we do is use libraries and frameworks. My counter-argument was the paragraph
above.

~~~
wilsonnb3
I agree with your friend, for the most part.

Most days I feel more like a combination of a preschool teacher and a
switchboard operator than a computer scientist.

I'm not really sure how your first paragraph is a counter-argument to your
friend. Reinventing the wheel to learn is just busywork. Reinventing the wheel
because you need the wheel and don't have one available is fun.

Unfortunately the wheel is always available now.

~~~
bor0
Let's agree that re-inventing the wheel makes one more experienced, and also
that it helps understanding things better. I believe that this distinction is
what makes one a good/true programmer, compared to just lego play.

Edit: Also, I disagree that re-inventing the wheel is just busywork. Compare a
programmer that just uses .sort() and another one that uses .sort() and
implemented his own sort (disregarding the fact that he is not using his own
sort) and really understands the math behind it. Which one would you rely on?

~~~
bor0
Hacking for sure is different nowadays, but that does not stop anyone from
learning and understanding more.

------
commandlinefan
> This programming bible earned a famous comment from Bill Gates: "It took
> incredible discipline, and several months, for me to read it."

I know he's a trillionaire and all and probably smarter than me but still - as
somebody who spent a full three years reading and working through the problems
in the first three books, I wonder how deep an understanding he could really
have walked away with after just a few months.

~~~
paulpauper
I did a google search of Art of Computer Programming and see a ton of math
problems. I was expecting more along the lines of actual code like assembly or
machine code or something . Like actual code. How is summing an infinite
series supposed to help me code better (summing the series is much easier, ill
grant you that..combining ajax +css+php is hard )

~~~
vertline3
I probably won't be as good at explaining as others but I will try. I think
the books are like a synthesis of the art, and not designed for the teaching
of the regular guy. He has a book to help approach the math called concrete
math. Anyway the books start from nearly bare knowledge where the reader
creates MMIX a reduced instruction set he made for the books I think, which he
uses in the rest of the book to illustrate how machine level works. Anyway he
has spent his life working on these and they cover the breadth of general
things like algorithmic knowledge. Sorry if I got things wrong

------
njovin
The author repeatedly cites the availability of cheaper hardware as some sort
of savior of modern programming but fails to mention that the volume of data
and the real-time demands of modern products were not present for many older
systems that ran on more expensive hardware.

~~~
freeflight
Volumen of data of course increased, but how much of that increase does
actually account for "growth" and not just "inefficiency bloat" as a result of
cheap hardware resources?

"Website obesity" [0] is a phenomenon where this is especially evident.

[0]
[http://idlewords.com/talks/website_obesity.htm](http://idlewords.com/talks/website_obesity.htm)

------
kough
No mention here yet so I'll recommend: if you think this idea might have merit
and would like to read the relevant literature, check out Deming's The Growing
Importance of Social Skills in the Labor Market [0]. Here's the abstract:

> The labor market increasingly rewards social skills. Between 1980 and 2012,
> jobs re- quiring high levels of social interaction grew by nearly 12
> percentage points as a share of the U.S. labor force. Math-intensive but
> less social jobs - including many STEM occu- pations - shrank by 3.3
> percentage points over the same period. Employment and wage growth was
> particularly strong for jobs requiring high levels of both math skill and
> so- cial skill. To understand these patterns, I develop a model of team
> production where workers “trade tasks” to exploit their comparative
> advantage. In the model, social skills reduce coordination costs, allowing
> workers to specialize and work together more effi- ciently. The model
> generates predictions about sorting and the relative returns to skill across
> occupations, which I investigate using data from the NLSY79 and the NLSY97.
> Using a comparable set of skill measures and covariates across survey waves,
> I find that the labor market return to social skills was much greater in the
> 2000s than in the mid 1980s and 1990s.

[0]:
[https://scholar.harvard.edu/files/ddeming/files/deming_socia...](https://scholar.harvard.edu/files/ddeming/files/deming_socialskills_aug16.pdf)

~~~
drunkpotato
This seems to be the sterile academic description of the phenomenon of
bullshit jobs[0].

[0]. [https://strikemag.org/bullshit-jobs/](https://strikemag.org/bullshit-
jobs/)

------
paulpauper
3x salary inflation would mean $240k. This says it's only $90k:

 _The average salary for a Programmer is $89,128 in San Francisco, CA.
Salaries estimates are based on 238 salaries submitted anonymously to
Glassdoor by Programmer employees in San Francisco, CA...._

are coders really making $240k /year?

[https://www.glassdoor.ca/Salaries/san-francisco-
programmer-s...](https://www.glassdoor.ca/Salaries/san-francisco-programmer-
salary-SRCH_IL.0,13_IM759_KO14,24.htm)?

~~~
3pt14159
Even here in Toronto I know many making that much or far more. Core framework
devs make about $500k a year and AI devs with AI PhD's from good schools are
in the seven figures per year.

~~~
usmannk
What’s an example of a “core framework dev”?

~~~
3pt14159
Ember JS core team member, for example.

------
mycall
> In 2018, they are currently making three times more

That's news to me.

~~~
mmt
The article also quotes a misinterpetation of a misstatement of Moore's Law:

> "Computers [have] doubled in power every 18 months for the last 40 years."

This, along with the salary estimate you mentioned made all the numbers in the
article quite suspect.

That doesn't necessarily invalidate whatever point the author was trying to
make, but it does cast a shadow of lack of seriousness on the whole article.

------
antod
As an aside, was a gigabyte of memory only $1000 back in 2000? I seem to
remember it being higher than that.

~~~
mmt
You may be remembering proprietary (e.g. Sun) versus commodity (the prices for
which were even lower, according to the table in the sibling comment).

This sort of markup still exists in "enterprise" hardware today, which is why
moving to the cloud actually is a cost savings for some places. Of course,
operating their own operating their own commodity hardware instead would save
even more, but this is typically a political impossibility.

~~~
antod
Thinking back it was probably due to currency swings for NZD <-> USD. There
was a period of few years back then when the exchange rate could be anywhere
between $0.40 USD and $0.75 USD. So $1000 USD could mean very different
amounts in NZD depending on exactly when my hazy memories were thinking about.

There were also various Taiwanese earthquakes and resin factory fires etc that
probably caused me to remember the price spikes better than the average
prices. Well that's my excuse :)

------
Latteland
I think there are different kinds of programming jobs, and this article is
referring to the kind of dev job that puts together pieces to solve problems,
but it doesn't work at the fundamental level. to build a new operating system
using the capabilities of some new hardware aspect, or say writing a new
database that uses nvram and vector instructions to go fast, instead of the
older dbs that generated a query and interpreted it row by row. You can't
always get there by putting packages together.

There are still people creating fundamental new infrastructure or building
blocks. But probably a lot more people are just gluing things together to
solve a problem.

------
hazeii
>In order to win in this war, programmers had to be both trained and talented
in computer science...

Being long enough in the tooth to have been 'hacking' back then, I'd strongly
disagree with that since - and rather obviously given the era - there was
little training to be had.

Rather, I'd characterise it as being a time where anyone (irrespective of
talent or training) could get their own computer and be the master of it.

Personally, I resent the system trying to take that control away from us (in
this case, trying to pass us from an age of controlling our own computers to
having to be licensed, controlled and directed in what we can do with them).

------
afandian
Long shot, as this is a CACM article. Does anyone in Oxford UK want a 2ft foot
worth of paper CACM editions from 2012 to 2015 in Oxford UK? I have been
avoiding throwing them out but now getting round to it. Let me know.

~~~
sixstringtheory
If nobody takes them, there’s gotta be a small library somewhere that would
accept them, or even one of those Little Free Libraries (if you have them
there).

~~~
afandian
We have a local library run by the council, but I'm not sure if they'd take
donations like this. Can't hurt to ask, I suppose.

Then there's the countless libraries in the University of Oxford, some of
which might want to stock it, but I'd be surprised if they didn't either
already.

------
codeonfire
There is a dichotomy in tech between makers and takers. Some people try to be
a maker or a few years and can't do it for a number of reasons. There is a
common set of flawed thinking that causes them to decide that programming is
dead. One, their world view is different because they might have more wealth
and have decided that there is an infinite pool of makers to exploit. This is
obviously flawed. Companies go for years without finding the right person.
When they do find someone, the person they settle on is often a faker. Two,
they think robots build the constituent components that go into systems. Those
memory chips are made by actual people. Just because they are 300x cheaper
does not mean that it is unimportant to know how they work. Three, the status
quo is the end state of technology and now is the exploitation phase where we
use tech instead of make tech. Fourth, they think everything is done for cash
money instead of building capabilities.

This guy also seems to think programmers are so mentally deficient they are
unable communicate with the 'open source community' and that this is in some
way how programmers discover new technologies. He also thinks people did not
contribute code in the 1990s. Where did all this software come from? Typical
business view of open source. Originally b-schools actually lectured that open
source was anti-business like a trade union. Now I guess they think it is sort
of a crutch for too-dumb-to-breathe programmers?

There are tons of people like this guy in tech. Coded a year or two and found
out the were a taker and not a maker. Still pretending to be a maker though.
Their idealized programmer befits a corporation. Colors in the lines and
writes "perfect code" which has no meaning other than has been annointed by
CR's as to make it seem owned by the company rather than the individual. Their
ideal programmer is someone who doesn't need to understand the details, works
as a unit in a team, and gathers all of their knowledge by "getting help" from
the company. It is absolutely blasphemy in the corporate world to suggest that
anyone synthesize his or her own ideas. That's of course ridiculous but in a
business setting, the takers absolutely must discount creative thought of
employees 100% which literally the "product" up for grabs in tech companies.
Obviously if people knew the value and how to exploit their own original ideas
they wouldn't need the fucking company or takers.

As far as math and algorithms, those are more important than ever. The reason
you don't see people working on those is that those people are hidden from
public and private view, jealously guarded by the takers who think they
control them. Natural sciences did not fucking change since the 90's. A
surface to air missile or high frequency trading algorithm or advanced
simulation is as costly and valuable as ever. It's the author perception of
what is valuable that has changed. He's looking for code monkeys to exploit
who will "get help" and write "clean code" whatever the hell that means.

------
Svoka
Author, Yegor Bugayenko, is misogynist in worst of it. I listened to him being
guest on a podcast, where he told that women brain is unfit to perform logical
tasks, like coding or planning, and that women are much more fit at home
kitchen than in any office. And I wish I was exaggerating, but one of the
hosts was female programmer and he tried to convince her that she's inferior
as professional because of her gender.

~~~
chomp
Hey, I think this is an ad hominem argument and not really relevant to the
hacking -> sociotech argument the author was trying to make.

~~~
Svoka
Any article from him is about self promotion. He is trying to promote his
views among which are extremely sexist and disgusting ones. He also promotes
his startup and anyone backing it should know whom they're dealing with.

------
paulpauper
_They have to know how to get help outside of an office or even a project team
when working remotely and alone. Aside from Stack Overflow, which dominates
the Q &A platform for programming market, there are documentation and code
repositories that a professional programmer must know how to navigate. Those
who previously only relied on colleagues and friends will now lose to those
who know how to learn from the entire Internet._

Wouldn't programmers know how to code it themselves without req. Stack
Overflow? I would be pissed spending $100k /year on programmer who uses Stack
Overflow.

~~~
little_goat_boy
Have you ever employeed a programmer, or worked as one?

Stack overflow is a valuable resource. I'd be pissed if my boss told me not to
use it.

~~~
paulpauper
I have done both. It's valuable if you are a novice and need help creating a
loop or an event or something like that. If I'm paying then I'm assuming you
know how to do those things. Would google hire a coder who uses Stack Overflow
instead of knowing how to code without it? I cannot imagine a JavaScript coder
who works for Google needing Stack Overflow for JavaScript problems.

~~~
wilsonnb3
It's unreasonable to expect people to retain knowledge of every little corner
of a programming language when there's an easily available reference they
could use instead.

"How often they need to refer to reference material" is a pretty terrible
metric for measuring the abilities of a programmer.

~~~
slededit
Its not an unreasonable metric, if a round trip through Stack Overflow is in
your thought loop then you will be significantly more limited than someone who
doesn't need that. If you are doing something very obscure then its
reasonable, but most programmers don't do obscure things on a daily basis.

Its similar to being unable to do math in your head. You can get away with
always using the calculator but you'll be outperformed by someone who can do
it without dropping their pencil.

~~~
wilsonnb3
This is somewhat similar to the reasoning that leads people to use tiling
window managers. It's more efficient than a traditional window manager so they
think it makes them more productive.

They're not wrong about the first part. Tiling window managers are very
efficient. They are wrong about that making them more productive, though. It
certainly makes them _feel_ more productive, but this kind of micro-
optimization is solving something that wasn't actually a huge productivity
problem to begin with. You can add up all the time I spend switching windows
in a slightly suboptimal manner on Gnome or Windows and all of that time will
be lost by an extra 5 minute coffee break or the mental deficit from sleeping
less than 8ish hours a night.

Similarly, a person who doesn't have to look at Stack Overflow may _seem_ more
productive, but the tiny amount of time it takes to look something up instead
of remembering it is a very, very small part of the developers day. Even if
they have to do it 100 times a day it's unlikely to make any meaningful
difference in the big picture.

Not needing documentation would be helpful in a world where a programmer sat
down and didn't stop typing for 8 hours, but that's not the world that we live
in.

~~~
slededit
How long would you estimate it takes to search your question, find the result
and read the answer? I think it's optimistic to think it can be done in a
minute if you actually time it.

100*1 minute is an hour and 40 minutes. That is not a trivial portion of the
work day. Even if it were 30 seconds that's still almost an hour.

If that is truly a micro optimization then I shudder to think of the waste
elsewhere.

