
No such thing as “real programming” (2015) - yumaikas
http://www.brightball.com/development/no-such-thing-as-real-programming
======
lxe
When I first entered the workforce I started off doing embedded Linux
programming. Device drivers, kernel hacks, small systems with limited
resources, FPGAs, etc... This was difficult, and posed lots of challenges.

I ended up jumping all the way to the other end of the "stack" \-- web front-
ends. Webdev has been a side-hobby of a sort for quite a while, and I pretty
much expected it to be a lot simpler than the low level systems programming
that I've been doing.

I've been doing web client and server programming for some time now, and I can
without a doubt claim that it poses its own set of challenges that compare and
oftentimes exceed in complexity to those encountered in the "lower level"
programming fields.

I think the entire notion that one type of programming is more "real" than
others comes from lack of perspective. Once you dive deep into more than one
development layer, use case, architecture, language, or community, you realize
that the challenges each one faces are as varied, unique, and interesting as
the rest of them.

~~~
pjc50
I've done most of the spectrum from Perl webdev to chip design, with a good
chunk of embedded C and C++ in the middle. I basically agree, and I think
there's roughly these types of challenge:

\- Inadequate or high-effort tools. This is half the challenge of the embedded
world, and the cause of "I've destroyed my tools with my tools!"
[https://www.usenix.org/system/files/1311_05-08_mickens.pdf](https://www.usenix.org/system/files/1311_05-08_mickens.pdf)

\- Complicated business requirements ("do this every second Tuesday if there
is an R in the month, but not if the customer is using the US VAT system and
not if the product is a type of cake")

\- Critical system requirements (remember, using Java to control your nuclear
reactor violates the license). People working in this environment can easily
get elitist about it, until you look at their code and find Toyota spaghetti.

\- Problems that require Actual Maths or Actual CS, with known solutions. Rare
in the webdev world until someone remembers about ACID; more common in the
embedded world if you need control systems.

\- Problems with unknown solutions. Actually extremely rare; often the first
line of attack involves Matlab or Excel or some other "not real programming"
technique. Often the smart domain experts you need to solve the problem are
not also very good at software engineering.

IME the first two take up 80-90% of the working day. The third is only
applicable to some industries.

Different people are better at different types of challenge. This doesn't
matter unless you're trying to construct some sort of total ordering over
human beings in order to feel better about yourself.

~~~
sklogic
Funny. Most of my career was about problems with no known solutions. I wonder
why people keep calling them "rare". After all, why even bother solving a
solved problen?

And yes, most useful prototyping tools for me were far from C++ and alike - I
used Maxima, Mathematica, various Lisps with tons of batteries. Also not a
"real programming".

~~~
ownagefool
So there's two things:

#1 Just because you're constantly tackling interesting problems doesn't mean
they're super common. Most of us seem to be working on an application meeting
some trivial business need.

#2 Just because you don't know the answer doesn't mean the answer doesn't
exist. The world of development is filled with 20 somethings getting paid huge
sums of money to learn and deliver something completely alike to all the other
things they think are really different.

You probably fit into one of these categories, if it's the first then
congrats, because that sounds like an interesting life.

~~~
sklogic
> doesn't mean they're super common

I still cannot understand what justifies re-solving a solved problem over and
over again? Solved once? Automate it.

> Most of us seem to be working on an application meeting some trivial
> business need.

OP says it's somehow "not trivial". For some weird reasons.

Anyway, if the workflow is trivial, if required components are standard, if no
customisation is required - it does not need any _engineering_ at all. List
those initial requirements, infer the implementation automatically. It is hard
to comprehend why the CRUD world is so reluctant to do such an easy thing.

> doesn't mean the answer doesn't exist

It may exist in some highly secretive labs, but in most cases it cannot be
found in any of the papers or preprints.

~~~
ownagefool
So just because something is trivial doesn't mean that it doesn't require time
to implement the rules. You can be entering a bunch of convulted rules into a
GUI based system or you can be writing them in code.

I largely actually prefer the code way, believing it's much more flexible,
sane and safer. However, the problem is the average person who understands
these rules is scared of the code, and the average coder is much more
interested in solving a lot of inconsequential problems.

This makes it much harder to pay someone in who's just going to sit down and
churn out your CRUD and when folks find these guys, they're either keeping
them happy or think they're easily replaceable and will have a fall later on.

I'm doing devops at a big org at the moment. They have several dev teams
working on bespoke low-traffic resource managment applications. Most of these
have 5 developers, devops, delivery manager, user researcher, designer in
addition of going view a technical review process, pen testing, performance
review, and functional testing.

Basic math suggests that's going to come out at about £350,000 per project
over 3 months. A million quid later, they've all passed reviews without any of
these so called highly technical people realising they're dealing with a
common problem and that they're developing 3 of them. Also they're all shit
because they're done by MEAN stack tech hipsters who haven't quite realise
they're leaking important data.

~~~
sklogic
> You can be entering a bunch of convulted rules into a GUI based system or
> you can be writing them in code.

There are more options than just these two. The best way is to write your
rules in a nice, readable, dense DSL, designed specifically for that domain
experts who know the rules but are afraid of code. And such a DSL can be very
much free form and forgiving, helping a lot along the way, so the experts
won't need much assistance.

With such an approach, developers (i.e., those who are not afraid of code) are
either not needed or only concerned with maintaining this DSL, while the
experts can code their rules directly. It eliminates unnecessary elements of a
chain, and cuts costs quite significantly.

------
fallous
When I'm engaged in rapid prototyping or testing an idea, I almost exclusively
rely on the stack I'm familiar with that fits the problem domain. But I don't
consider that "real code" given the very nature of what I'm doing and the
understanding that once the problem has a solution, that solution can be
applied to whatever stack BEST fits the situation.

The author seems to engage in the same behavior, but conflates the "get things
done fast" with the production solution.

If you're a good programmer and your preferred tool is PHP, then you're
engaged in "real programming." If you insist on using PHP as a deployment
solution because it's what you're familiar with rather than because it is an
appropriate/optimal solution to the problem then you're engaged in laziness.

A good programmer can adapt their mental models and adopt the tools necessary
for the problem domain. A bad one always has an excuse for why their comfort
justifies tool choice.

~~~
dietrichepp
I'd like to use a broad definition of "appropriate/optimal". I could imagine
PHP being optimal only because you already have PHP talent in house.

~~~
fallous
Yes, if PHP is appropriate to the task at hand AND you have an existing set of
PHP talent in-house then it would be hard to argue that isn't an optimal
solution.

However, if PHP is not appropriate, that in-house PHP talent does not change
the fact that PHP is the wrong tool.

------
captn3m0
This hits home for me. I started web development in PHP, went up and down the
ladder a lot, but still continue to do PHP (Mostly Laravel these days).
However, I am fascinated by the web in general and all the abstractions that
make it stand up. More specifically, things like REST, HTTP, sessions, and all
the web APIs that you consider for granted on the browser. Even things like
CORS.

The nice thing about PHP is that it lets you play with these abstractions
_even when you are starting out_. For eg, a redirect in ruby/sinatra would be
`redirect [https://google.com`](https://google.com`), but stock PHP would want
you to use the header("Location:
[https://google.com");](https://google.com"\);) variant[0]. PHP doesn't
abstract out the web, but lets you build on top of it. Its close enough to C
so you know what is happening and how things are working (or atleast its
easier to figure out), and still dynamic enough to get shit done.

There are problems with PHP's design, sure. But these are getting fewer and
fewer with things like PHP7/Composer and the entire ecosystem still evolving.
And believe it or not: there are problems with _every programming language_.
Just pick the right tool for the job, will you.

[0]: I know comparing sinatra to PHP isn't ideal, but I am yet to see anyone
code in pure CGI in Ruby.

~~~
lucideer
Your observation on abstraction is interesting. I've always considered PHP to
be quite the opposite.

e.g. Going from PHP to NodeJS, NodeJS is a lot more direct and less abstracted
(handling the request directly, reading the request data incrementally and
handling reader state, setting headers and then explicitly writing to the
buffer, handling connection state, etc.) - note I do mean NodeJS here, not
something like Express

another e.g. PSR-7 I find is, counterintuitively, actually much less
abstracted than raw PHP built-ins as it goes out if it's way to map the
interfaces to the stack as intended, rather than completely arbitrary weird
abstractions. Like the retrieval of query parameters being entirely separate
and unrelated to retrieval of the body payload, whereas PHP tends to sort of
conflate these things in $_GET/$_POST/$_REQUEST and then doesn't really have
obvious intuitive handling of non-x-form-url-encoded payloads. And don't get
me started on query string array handling.

I do completely agree with the article though, and I still use PHP a lot.
Voluntarily.

But I just found your specific observation surprising.

~~~
captn3m0
Agreed, nodejs lets you build servers from the ground up using streams.
However, I am yet to see anyone build their first node project without
something like Express and just use http.createServer.

The PHP abstractions are not always clear as you rightly point out (REQUEST =
GET+POST+COOKIE...), but they are vastly different "magic" that you see in the
Ruby land, for eg where you would rarely be ever thinking about cookies at
all.

------
0xcde4c3db
The term "full-stack" has related problems. Most people, regardless of where
they center their expertise, have some idea of a layer of the stack beyond
which is Somebody Else's Problem.

~~~
lowglow
Can confirm, am fullstack: Physical layer is someone else's problem.

~~~
Cyph0n
Actually, even the three layers above that are likely someone else's problem
(data link,network, and transport). Full-stack usually means knowledge of the
application layer i.e. HTTP and client side.

~~~
ownagefool
Honestly, I think that's extremely cheeky usage of the term. I'm of the
opinion that you should be able to:-

\- talk to a datacentre, get servers, switches, power, network racked and
ready to go.

\- Do the devops to configure this infrastructure. \- Understand data-layer
requirements and generally host and manage a CP or AP system.

\- Write the apps that'll live on these servers.

\- Implement resonable caching to scale.

\- Write the frontend code to implement a design to connect to these systems.

\- Have enough knowledge to profile and debug the performance bottlenecks of
such systems.

At about that point, you can start to consider yourselve "full stack". Now
some could argue that you don't need rack the system or do the devops, but if
you don't understand what you're hosting on, how are you ever going to debug
an issue that outwith your application?

------
xjay
Alan Kay: "It turns out there was this term called 'coding' back when I
started, and the term called 'programming'.

So a programmer actually wrote flowcharts. That was the high-level language
used back then. These flowcharts would work on any computer, and what a coder
was, was a human compiler for those flowcharts."

Alan Kay @ SAP:
[https://www.youtube.com/watch?v=vXjpA9gFX5c](https://www.youtube.com/watch?v=vXjpA9gFX5c)

The quote is from the last few minutes, before the video cuts off.

~~~
epalmer
I still diagram flowcharts. Usually to convey to one of my internal customers
how we envision interfacing with a 3rd party system or solving some complex
business logic.

I diagram a lot of things. Mostly for my benefit. I have struggled over the
years with what symbol do I use for X but now I just pick a rectangle or
predefined process rectangle and label it well. Diagramming helps me get my
internal thoughts out and makes the systems I write better and less error
prone.

~~~
xjay
This was also a point brought up in a recent talk [1] on software engineering,
and what has happened since the "software crisis" was recognized in 1968.

The speaker, Mary Shaw, talks about Design Guidance, and how a decision chart
is "a better organization of a body of design decision knowledge" [starts
27:40] and how we still, desperately, need something like that, and that there
aren't any better ways to communicate such knowledge, that the speaker is
aware of, than "this ancient chart."

(UML is mentioned later, but under the context that it is dying, which was
probably a good thing.)

[1] Progress Toward an Engineering Discipline of Software
[https://www.youtube.com/watch?v=lLnsi522LS8](https://www.youtube.com/watch?v=lLnsi522LS8)

------
xjay
Programming is ultimately about systems.

There's a recent talk [1] by Mary Shaw from Carnegie-Mellon University (CMU).
It's about what has happened since the NATO conference in 1968 (dubbed the
Software Crisis), and what engineering means in software engineering.

According to their survey, the American workplace consists of ~90 million
"casual" programmers, and ~2.5 million highly trained software engineers, and
there's a need to get more programmers into the engineering aspects.

[1] Progress Toward an Engineering Discipline of Software:
[https://www.youtube.com/watch?v=lLnsi522LS8](https://www.youtube.com/watch?v=lLnsi522LS8)
There's a link to the slides in the description of the video.

~~~
morgante
> According to their survey, the American workplace consists of ~90 million
> "casual" programmers

I don't believe that statistic for a second, unless we're using some
convoluted definition of "programmers" which includes anyone who can open
Microsoft Word.

That would mean half the labor force can program. Ludicrous.

Looking at the slides[1], I'm pretty sure you interpreted that wrong. There
are 90M end users of software, not 90M "casual" programmers.

[1] [http://gotocon.com/dl/goto-
amsterdam-2015/slides/MaryShaw_KE...](http://gotocon.com/dl/goto-
amsterdam-2015/slides/MaryShaw_KEYNOTEProgressTowardAnEngineeringDisciplineOfSoftware.pdf)

~~~
xjay
I'll correct some things: 1) The speaker said projection, not survey. 2) I
interchanged "developers" and "programmers" at the top of the slide, but the
speaker lumps "programming like things" into the 90M "end users," which among
others include pretty much all the web people (scripting languages, database
interfacing, web server security, etc).

Please see the relevant part at 49:50 [1], but I'll bring it in next.

The speaker pretty much defines "end users"/casual developers as people who do
programming like things; "There are something like 90M people out there who
are doing 'programming like things'; they are building databases, they are
building spreadsheets, they are using _scripting languages_ , they are
building _sophisticated websites_ \--what are we doing to help them?"

It's a broad category, but I think the confusion is that programming is not
simply about writing code, it also includes the overall architecture, and
design of a system.

So what I get from this is that end users means anyone who didn't go through
the academic channels to learn the engineering aspects, and that's who they
need to reach. The speaker had a link to their software engineering programs
at CMU [2] in an earlier slide.

Also, see the context in view of the stackoverlow survey--which doesn't add up
if you look at the numbers, but the speaker explains it's because some people
reported in more than once.--It sought to be an example of how "end users" end
up doing "programming like things."

[1] Progress Toward an Engineering Discipline of Software
[https://www.youtube.com/watch?v=lLnsi522LS8](https://www.youtube.com/watch?v=lLnsi522LS8)

[2] Software Engineering Masters Programs [http://mse.isri.cmu.edu/software-
engineering/](http://mse.isri.cmu.edu/software-engineering/)

------
nickpsecurity
This article links to this powerful story that's worth a read and has some
life lessons in it:

[http://www.brightball.com/business/what-exactly-happened-
to-...](http://www.brightball.com/business/what-exactly-happened-to-
brightball-for-hire)

In gratitude, I'm going to be a nice guy that avoids the PHP vs "real"
languages part of the discussion. :)

~~~
brightball
Thanks! Glad you enjoyed it.

I wrote that up mostly as an explanation for a lot of local people who'd asked
me for the whole story over the years.

~~~
nickpsecurity
If I remember & stabilize my own situation, I plan to eventually ask you for
that story you hinted at that few would believe. I have a few of my own like
that which made me say agnostic rather than atheist. It was like...
something... was making possibilities connect.

Another time, though. :)

~~~
brightball
Another time

------
falcolas
If web developers think they have it bad for being razzed about not being real
programmers, they should talk to SDET folks.

------
jpswade
When I started out with PHP (cica 2000) it was just another scripting language
to make stuff happen on web pages and it was easier to work with than perl.

In 2003, Rasmus who created PHP said: "I have absolutely no idea how to write
a programming language, I just kept adding the next logical step on the way".

PHP has since been developed into a fully fledged programming language
borrowing many of its traits from Perl, C, C++, Java, Tcl.

Now at PHP7, having two major versions since 2000, I can say with some
confidence that PHP is a "real programming" language.

~~~
sklogic
PHP became a barely passable language only after HHVM was created. Before that
it only had totally pathetic implementations.

Edit: do downvoters really think the original PHP implementation was not a
pile of crap?!? Amusing!

------
finishingmove
This article is just common sense. In every area there are people who pursue
excellence and people who are slackers. People who look hard for optimal
solutions given the constraints, and people who try to sell whatever they
write as "smart solutions".

Web development is very transparent and in the spotlight these days, so it's
exposed to a lot of criticism. I wonder how many cases of "smart programming"
do we have in C code-bases around the world...

~~~
sklogic
Just take a look at Toyota scandal. There is a same bunch of slackers in
embedded, not any different from that pathetic lot that gave PHP a bad karma.

------
iolothebard
What works is what's "real". I don't care if you're building in php, .net,
ruby, or anything else. All that matters is does it work for the user.

Selling software for my own companies for almost two decades, wait, exactly
two decades, I've never had a SINGLE customer ask me "what language is this
programmed in".

The closest you'd get is anyone running a non standard OS (anything besides
Windows).

------
CM30
As someone who does a lot of basic PHP development and makes various sites
with WordPress, I think the key point people seem to forget in this debate is
that most projects are simple by nature, at least on a technical level.

I mean sure, making a WordPress site with themes and plugins is not as
complicated as coding a web app in Node.js or whatever, but the majority of
business sites don't really need much in the way of complexity. Just a few
pages that the client can add content to and maybe a blog on the site that
might send the content to social media sites upon being posted. In those
cases, why not use WordPress or another simple CMS system?

On another note, this is also kind of the reason I haven't really gotten the
chance to use much in the way of the latest or fanciest technology. Because
every idea I get turns out to be one that doesn't need it.

------
davidspiess
I had the same crisis two years ago. I was on vacation and couldn't stand the
thought going back to work doing the same odd and boring CMS PHP stuff i used
to code day in and day out. My girlfriend left me at the same time, so i
decided to make a move. I quit the job, i thougt i was good at, and went to a
company which programmed mostly in C# and F#. It was challenging, but at the
same time so satisfying to be excited again. I learned about functional
programming, looked beyond the horizon of my save little PHP and JS world. I
never looked bad to my old me and my old job. Stay curious and if the moment
comes you feel stuck, move on to something similar but yet unknown and
challenging.

------
mattvanhorn
Real programming ended with Mel.

~~~
jeff_marshall
Tell that to the people who debug new CSP/BSPs using binary search on "which
line did the boot sequence make it to" using GPIO to an LED.

Thankfully, most of us don't spend a lot of time doing that sort of thing
these days (even in the embedded world).

I also feel for anyone who ends up using an upside-down air can to debug
shoddy solder joints on a BGA device ;)

~~~
njharman
Be enlightened [http://www.catb.org/jargon/html/story-of-
mel.html](http://www.catb.org/jargon/html/story-of-mel.html)

------
EugeneOZ
Author is mixing programming for money and programming for enjoying of
algorithms, optimizations and little part of science inside.

------
brightball
Did not expect to see this post making HN this morning. Thanks!

------
bcarlyle
People like building their own solutions because it is way more fun then just
installing Wordpress and adding some plugins. But sometimes Wordpress is more
effective.

I've learned a lot about programming from a friend I worked on a startup with.
But the business part suffered since the focus was on coding instead of the
experience for the end user.

I have friends who are brilliant programmers who made excellent startup
employees and friends who know little about programming who are excellent
startup founders. I’m not even sure the best programmers make the best startup
founders. A friend of mine was amazed when I showed him how to view source
code on a website. His startup just raised a million dollars.

I think this has to do with the fact that people who don't program can't focus
on the code. They focus on solving the problem.

Sometimes the right solution might be to build my own solutions but since
thousands of people are constantly telling me that I'm not a real programmer I
doubt my own ability to do it.

People complaining that web developers aren't real programmers keeps web
developers from learning programming. The thought that web developers aren't
programmers paradoxically keeps me from becoming "a real programmer".

Because my work doesn't count as real programming I have to start every new
"real programming" challenge thinking that I don't really know what I'm doing.
This creates doubt that limits my ability.

I feel confident in my ability to build what I want on the web but I'm
actively doubting if I'm a real programmer.

Most of the web development work I do involves building interactive programs
for helping people cope with mental health problems. My clients only care if I
solve their problems. Previously we had a super advanced custom built system
that was a mess to deal with. I recently switched back to Wordpress because it
is way more effective.

I also think another reason developers don't like Wordpress is that it levels
the playing field between people who can and can't program. Suddenly anyone
can do what it took you years to learn.

People telling me I can't program because I work on the web makes me a
shittier programmer because it makes me nervous when I write code that is
logical. It is harder for me mentally to write javascript for my application
then for writing the css or html and it's not because the logic is harder. It
is because I mentally fear that I don't know how to program because the
internet keeps telling me I can't. But every time I do it it turns out that I
can.

I can feel it in my body when I switch to the js file in Atom. The feeling is
fear.

I don't have it for: setting up a new ubuntu server, building a responsive
website, styling with css or working with Wordpress because I know this is web
development.

I can't mentally figure out what to think about building apps in swift. There
is a lot of logic so that is technically "real programming" but there is a lot
of styling so that is technically not programming. So I guess I have a
moderate fear for it.

My point is that this isn't about the fact that it is harder to write logic
then html or css. This is about my own fear. And the idea that web developers
can't code makes it worse.

I actually wrote something related to this on my website.
[https://birgermoell.com/2016/01/30/solve-your-problems-
throu...](https://birgermoell.com/2016/01/30/solve-your-problems-through-
software-not-code/)

------
fit2rule
Real programming is anything you do in order to achieve the godlike state of a
user, using the computer, to do something.

Anything.

------
JohnLeTigre
If I remember correctly, Real Programmers use FORTRAN and Quiche Eaters use
PASCAL

------
tluyben2
I guess people generally call 'real programming' something that isn't
connecting up CRUD forms/pages. And although I would not call it 'real
programming' as a term, I do not see that kind of thing as a challenge or
interesting at all. I have made / helped make 1000s of sites over the years
(in many different technologies and CMS's) and most of them are just
incredibly boring and require no kind of programming skills really. So in that
sense they are not 'real programming'. If you can install WP, Google CSS
changes for the theme you buy or get from the designer and then Google the
plugins + few lines of code changes to make it work then that is not 'real
programming' in a sense. But it does pay the bills and it pays them well.

I am not sure about other countries, but in NL and DE, for _big_ companies, I
see the complex & inflexible (Java) Enterprise CMS software being replaced by
WP. Often not openly and company wide, but departmentally for sure. We get
asked to consume the content in the 'big corporate' CMS via a webservice or
even scraping and when that's done and the WP site runs and can be used to run
that part of the site, they ask corporate hosting to do some proxy passing and
rewriting. To illustrate (I cannot name names ...), let's say you have an
international online retailer and the ECMS contains a different site per
country like:

[https://retailer.com/nl/..](https://retailer.com/nl/..).
[https://retailer.com/de/..](https://retailer.com/de/..). etc for all
countries they are in.

Then the NL dep asks us to recreate their /nl/ site in WP with the content
from the ECMS and then they proxypass/rewrite /nl/ to the new server which
contains the WP installation.

Why? Because WP allows, for 'low cost' and 'no _real_ programming' to add all
the features they want and to allow workflow-free fast updates when they have
a special or deals or contest or whatever specific to that country. Not to
mention people understand how to use it right away; no courses needed. With
the ECMS that all runs via the head office and that workflow is too hard to
change so this is much cheaper/easier. Sometimes they don't even really notify
the head office but just do it on their own servers. This same thing happens
in many companies / institutions that have many 'sub-sites' managed by
different regions/countries/verticals.

It works, it makes clients happy and the fact I don't like WP (at all) and the
fact I find this kind of thing rather boring not to create code (like you
would in Django or Ruby) is not really interesting; the average 'corporate' WP
site we deliver has 1 custom WP file with functions the guys who set
everything up and integrate the design reuse and (rarely) append.

I would say that if I was to name something real or not real programming, this
would be it. And yet it makes a lot of money and, more importantly, it makes
clients happy & productive without extremely long processes of implementation.

Edit: Other than that I agree with the article; it is a matter of taste
though. Like said I would not call these things 'real or non-real (fake)'
programming but I do choose to not do most of this work myself as I like
embedded and native mobile work better. That keeps clients happy too anyway.

~~~
Joeri
As you have to be cleverer to debug a piece of code than to write it there is
a case to be made that production grade code should be rather boring to write,
so as to remain maintainable.

~~~
CM30
This is why WordPress recommends a few things that annoy a lot of programmers,
like using the longer if/while/foreach syntax and mixing PHP with HTML code.
It's not elegant, but it's a lot more readable for people who haven't actually
programmed much before. So that people whose knowledge of web coding is mostly
HTML and CSS related can figure out what to edit without programming expertise
or even syntax highlighting.

It's also one of the reasons WordPress (and quite a few other CMS systems that
are sometimes looked down upon in the development world) caught on... because
they were easy to modify and mess around with for people withot prior
programming experience.

------
crispyambulance
Your idealism is so sweet it makes my teeth hurt.

There's plenty of work for everyone. No need to call what other people do
"trivial" or demean them for not "automating" something after having done it
once.

FWIW, automating something can easily be a job orders of magnitude more
difficult than doing the original job. It might require capabilities and
resources which far exceed what is available at the organization.

Moreover, automation is a complicated continuum of solutions. If you're
talking about REAL WORLD computing problems more complex than can be handled
by a bash script, NO, you don't automate after solving a problem once.

~~~
sklogic
I am talking about things being repeated over and over again, far more than
just a couple of times.

And the only thing organisations are lacking is sanity. The rest _is_ trivial,
proven many times. I will regard all of them as lowly and stupid, because this
is what they are.

See my rant elsewhere in this thread - this stupid world is full of examples
of idiots in charge.

Are you trying to convince me that the morons who designed Oyster are not
morons and I should not judge them? No way. They are scum. Should not I judge
the deranged NHS bosses? No way! I'd be delighted to see them beheaded, no
less. Their incompetence cost human lives.

And I hate it when people are trying to play down the stupidity of others. In
my book there is no sin worse than stupidity and incompetence.

Won't you deny that most of the idiots out there cannot code at all, although
they call themselves "developers"?

See even the high profile apps for Android for example. Say, "BBC News".
Millions had been spent on it. And this shit locks when internet connection is
lost. Don't the retards who wrote it commute on a tube? Don't they know how to
code asynchronous UIs?

And don't let me even start ranting about the British Gas "Hive" thingy.

The spread of the ignorance and stupidity in this world is unforgivable. And I
won't ever be polite to the stupid and ignorant. They're worthless and they
deserve the most harsh criticism possible.

~~~
ownagefool
So out of interests, what's so wrong with Oyster in 2016?

~~~
sklogic
E.g., if you wave in first, read that your balance is low, and then go to a
ticket machine to top up, it will be counted as a maximum fare travel. Still
the case, after so many years.

Those retards did not even think that ticket machines may be available beyond
the oyster barriers, but this is very common on many suburban rail stations.

And if they were not such scumbags, they did not even have to _think_ about
all that at all. There are trivial formal methods to analyse _all_ possible
workflows. The fact they were oblivious of such methods is unforgivable. The
incompetent uneducated retards should never be allower anywhere near any
technology.

------
dschiptsov
Tell that to Linus.)

~~~
dschiptsov
I see. To be able to write world-class kernel code (or projects like nginx) a
programmer must posses at least practical knowledge of advanced data-
structures and algorithms (including implementation details), machine
architectures and automata theory (FSMs for protocols) - subjects about which
typical PHP/JS coder have no idea. That's why they are so sure that there is
nothing beyond their amazing coding skills out there.

------
sklogic
All your web stuff is not a real programming. Not because it is "easier" or
"less valuable" than, say, aerospace or automotive, but because you're doing
it wrong. Among all things, the entire web stack of technologies is the most
horribly overengineered one.

Most of the frightingly hard problems you're solving should have never existed
in the first place. And yes, web devs, it is _your_ fault, your collective
responsibility. Web could have been nice. You screwed it.

~~~
mikegioia
Is this sarcasm or just ignorance?

~~~
sklogic
If you do not think that all that web stack is horribly overengineered, then
you know nothing about engineering at all. If you do not see dozens of ways it
could have been orders of magnitude simpler without surrendering any
functionality, you know nothing about engineering at all.

~~~
mikegioia
This is from _your_ comment history:

    
    
        I have to admit that I did not do any web development
        ...
        I also know about it from interaction with frontend
        developers themselves and from toying around it
    

Do you believe that people who have never done something are capable of
understanding it well enough to have the abrasive and ignorantly arrogant
stance as your own? You either do and are ignorant, or you don't and are a
hypocrite.

~~~
sklogic
I am an engineer. I do not need years of experience in a technology to assess
it. And, btw., you may not know what my "toying around" really means in terms
of depth and exposure.

So no, it is _your_ astonishing ignorance here. You should stop pointless
personal attacks and provide only rational, technical arguments. This thread
is already such a code monkey circlejerk that there is no value in adding
anything to it.

~~~
mikegioia
How about you take your own advice then? Just because I and millions of others
don't think the web is "horribly overengineered", doesn't mean I "don't know
anything about engineering".

~~~
sklogic
No, it means exactly this. You know absolutely nothing about engineering, and
you keep proving it. As well as millions of other similarly under-educated
semi-programmers.

Know why? Because there is no place for democracy in science. It does not
matter how many people believe in some crap. As long as _objective_ criteria
exist, as long as a _formal_ proof is possible, any number of millions can
believe in whatever they fancy, and nobody should care about their idiotic
fantasies.

And it is dead easy to prove that something is overengineered. You may not
know it, with such a background, but _complexity_ is a well defined,
objective, measurable thing. If you're curious, look up what an "Algorithmic
information theory" is.

An existence of a formally simpler model with a more flexible functionality is
a very clear evidence that the other, more complex system is overengineered.
Just compare something like Tcl/Tk with your awful web stack.

And should I go into Javascript, the heart of your entire stack? This is
pretty much my speciality, I am a PL specialist, so you cannot accuse me of an
ignorance here. It is very easy to prove how bad Javascipt is, how horribly it
is designed from all the PL-theoretic points of view.

------
kalzium
omg I know I'll be down voted for this but... ugh, this guy hasn't gotten
anything and it's so super sad. I've a similar background like him, but I
kinda felt embarassed reading his post. Mannnnn... you can argue all day long
what programming is about and go crey crey on forums and write stupid blog
posts... but WHY the hell waste time with that if you could build something
awesome in the meantime with all the things that you know and all the tools
that you got - like argh come back when you build something awesome I dunno...
:/

~~~
kalzium
I'm sorry I was half asleep and drunk. I have no idea what I was talking
about.

~~~
brightball
Accepted :)

