Normal Humans Effectively Excluded From Developing Software
theodp (442580) writes Over at Alarming Development, Jonathan Edwards has an interesting rant entitled Developer Inequality and the Technical Debt Crisis. The heated complaints that the culture of programming unfairly excludes some groups, Edwards feels, is a distraction from a bigger issue with far greater importance to society.
"The bigger injustice," Edwards writes, "is that programming has become an elite: a vocation requiring rare talents, grueling training, and total dedication. The way things are today if you want to be a programmer you had best be someone like me on the autism spectrum who has spent their entire life mastering vast realms of arcane knowledge — and enjoys it. Normal humans are effectively excluded from developing software. The real injustice of developer inequality is that it doesn't have to be this way." Edwards concludes with a call to action, "The web triumphalists love to talk about changing the world. Well if you really want to change the world, empower regular people to build web apps. Disrupt web programming! Who's with me?" Ed Finkler, who worries about his own future as a developer in The Developer's Dystopian Future, seconds that emotion. "I think about how I used to fill my time with coding," Finkler writes. "So much coding. I was willing to dive so deep into a library or framework or technology to learn it. My tolerance for learning curves grows smaller every day. New technologies, once exciting for the sake of newness, now seem like hassles. I'm less and less tolerant of hokey marketing filled with superlatives. I value stability and clarity."
"The bigger injustice," Edwards writes, "is that programming has become an elite: a vocation requiring rare talents, grueling training, and total dedication. The way things are today if you want to be a programmer you had best be someone like me on the autism spectrum who has spent their entire life mastering vast realms of arcane knowledge — and enjoys it. Normal humans are effectively excluded from developing software. The real injustice of developer inequality is that it doesn't have to be this way." Edwards concludes with a call to action, "The web triumphalists love to talk about changing the world. Well if you really want to change the world, empower regular people to build web apps. Disrupt web programming! Who's with me?" Ed Finkler, who worries about his own future as a developer in The Developer's Dystopian Future, seconds that emotion. "I think about how I used to fill my time with coding," Finkler writes. "So much coding. I was willing to dive so deep into a library or framework or technology to learn it. My tolerance for learning curves grows smaller every day. New technologies, once exciting for the sake of newness, now seem like hassles. I'm less and less tolerant of hokey marketing filled with superlatives. I value stability and clarity."
Yup, we're all freaks!
Normal humans are excluded from a lot of things.
1. Olympic Gold Medal
2. 5x Jeopardy Champion
3. Professional Concert Pianist
4. Bolshoi Ballet
5. Supermodel
etc.
The idea is to find your niche in life and exploit it. Not call the whaaambulance.
Would you say that music excludes those who cant sing well, stunt acting excludes those with delicate bodies\fear of death?
You heard it here first, folks: if you're going to try to not suck at your job, you're autistic. Normal people don't give a fuck about trying.
just about every field above burger flipping requires specialization. Are you going to ask Joe Blow about your corporate tax accounting needs? Or are you just going to drop by Intel and see if you can lend a hand with some microcode? Work is becoming increasingly specialized across all fronts, time to get used to it.
So there is finally a job that focused, socially clueless people can excel at, and some want to take that away from them because it isn't fair for people who could do other jobs anyway.
yes, people should learn basic coding, reasoning, critical thinking. we do not need them making more useless web or mobile apps.
The last thing I heard 'everyone can code'.
Now an old man rants about learning curves, and how he used to be better in the old days.
There's a good reason I'm not a brain surgeon or a professional hockey player. Have you ever tried explaining even a 'hello world' example to someone who can't handle strict logic and math?
You have to be REALLY smart and good at pattern recognition and logic to be a programmer. And I mean extremely, unnaturally good. I completely disagree with the years of dedication and research, as I wrote an entire software suite that was pretty much flawless right out of college. Experience and training is not very important as long as you know how to write good code that's efficient and makes sense to others. The biggest determining factor is how smart you are. That's just how it is. I'm not a famous singer because I suck at singing and I'm not a famous artist because I suck at all forms of art. You don't see me writing a whiny article about it.
Having read his rant I gotta admit that I do not understand what that guy is trying to say
I mean, ever since Ada Lovelace and Charles Babbage labor over the first software / software combination, each and every follow-up of similar devices had been utilized by a very limited group of people who --
1. Have the interest to learn how the device works
2. Have the intelligence to understand
3. Have the time to do it
Of course, there is another type of 'computer' - the Abacus invented by the Chinese - but that device, unlike the Babbage machine and whatever followup devices it had inspired, - was kinda self-limiting
Muchas Gracias, Señor Edward Snowden !
Have this guy seen "normal people" use a computer? There are some people so uninterested in the thing (even when is their primary work tool) that they can't be bothered to learn so simple stuff as mouse dragging or keyboard shortcuts.
Hell, I've seen people using Spreadsheet software for 10 years without learning how to use formulas. Don't even try to show them what all that HTML gibberish is.
And Spreadsheet software is a pretty good introduction tool for programming.
I present Exhibit A: The army of skinny-jean, unshaven "Brogrammers" who use end to end, non-scalable, non-portable, all-in-one blackbox frameworks like AngularJS and a handful of selected NPMs or Gems commonly used amongst 90% or more of the existent Rails or NodeJS based sites, while writing flat MongoDB collections because they totally don't get NoSQL but love to use it because it's the new hotness and refer to themselves as "elite hackers" while fist-bumping and drinking beer at their SOMA office in SF.
But I didn't just stay mad. It's why I took it upon myself to create the "programming environment for the rest of us", which you can log onto for free from any leading PC, tablet or smartphone and create applications that will amaze and delight thousands or even millions of folks around the world....
"New technologies, once exciting for the sake of newness, now seem like hassles. I'm less and less tolerant of hokey marketing filled with superlatives. I value stability and clarity."
I will mod that one way up.
Seriously, does everyone think programming is a spatial relationships problem or something?
Let's put this on the table right now: Normal humans can build houses. Oh, you might not have any construction knowledge, and you'll build a horrendous little shitheap that falls over when the wind blows, but that's not the point. I can put construction knowledge in your head and, in a few months, you'll be able to properly select foundation for a site, properly frame a house, and properly build out the sheathing and siding and insulation and walls. You won't be a master craftsman, but you'll be able to do it right.
Humans are good with spatial things. Humans can look at a two-by-four and understand what a two-by-four is. The engineering concepts behind building a workable shed are a little different, but easily transferred. Given a little time and guidance, a human can learn to relate building materials spatially, measuring and cutting and nailing or screwing or gluing as needed, planning and building a proper structure.
Humans are terrible at numbers and algorithms.
Humans are so terrible at numbers and algorithms that they become *extremely* proficient at math if you teach them with a soroban--a machine that converts numerical problems into spatial procedures--and can't be taught algorithms without visual diagrams of trees and boxes and other shit to show sorting and transformation algorithms. Have you ever looked at textbooks or Wikipedia pages for stuff like PKI, red-black trees, or AES encryption? There's pictures of the simplest shit! Why? Because HUMANS CAN'T PROCESS ALGORITHMS!
The easiest process for a human programmer implementing an algorithm like a quick sort is to associate variables with objects in the visual diagram, associate their state changes with the movements in the visual diagram, and write code that carries out the analogous behavior. By comparison, BUBBLE SORT IS FUCKING HARD TO IMPLEMENT when your only guidance is: "iterate through each list element. Compare each element to the previous. If the previous element is larger, swap them." You actually have to think about how to do the comparison (greater than, less than? Wait, which am I comparing to which?), and how to swap them--usually with a temporary variable, although "A ^= B; B ^= A; A ^= B;" works. Most people visualize some kind of diagram while trying to understand the algorithm.
The real world requires interaction with space, mainly to avoid hungry tigers, kill tasty deer, and avoid driving your car into trees like you're fucking drunk. It doesn't involve shift accumulator left and XOR with memory at address $FC. It doesn't involve explicit semaphore locking and deadlocks if you fail to unlock the semaphore in a loop with multiple function calls and thread branching during the loop. It requires things you can put your fist through if they don't work right, and then continue with successfully.
We can't all be rocket surgeons.
Support my political activism on Patreon.
Normal humans are effectively excluded from developing software.
I've said that for years. You, however, seem to hold that against those with the rare gift and dedication to code. Kinda missing the point, dude.
a vocation requiring rare talents, grueling training, and total dedication. The way things are today if you want to be a programmer you had best be someone like me on the autism spectrum who has spent their entire life mastering vast realms of arcane knowledge â" and enjoys it
Yes, yes, yes, kinda, yes, and yes. Again - Your point? You've described exactly why normal humans will never succeed as devs, and to a degree, why many devs tend to look down on those who can't even figure out Excel.
And you call that "injustice"? I have a rare combination of qualities that let me do seemingly amazing things with computers, and in return, I make a decent (but by no means incredible) salary. You want injustice? Some of those same morons who can't even figure out Excel (much less writing their own override CSS) make millions of dollars per year telling me they want my latest app to use a differerent font color. Another group of those morons make millions of dollars per year because they can whack a ball with a stick better than I can. Yet another group of morons make millions of dollars per year doing absolutely nothing because Granddad worked a town of white trash (sometimes literally) to death.
And yet you would call me out for busting my ass to turn my one natural skill into a modestly decent living?
Go fuck yourself, Mr. Edwards. Hard.
"The bigger injustice," Edwards writes, "is that being a doctor or lawyer has become an elite: a vocation requiring rare talents, grueling training, and total dedication. The way things are today if you want to be a lawyer or doctor you had best be someone like me on the autism spectrum who has spent their entire life mastering vast realms of arcane knowledge â" and enjoys it. Normal humans are effectively excluded from performing surgery or arguing cases before a judge. The real injustice of legal or medical inequality is that it doesn't have to be this way." Edwards concludes with a call to action, "The web triumphalists love to talk about changing the world. Well if you really want to change the world, empower regular people to perform open heart surgery and argue cases before the supreme court. Disrupt specialist knowledge and training! Who's with me?"
Don't blame me, I voted for Kodos
This is just so full of stereotype, I thought I might as well post with a stereotyped title ...
Now, what makes him believe that all developpers are almost on the autistic side of the spectrum ?
... however, isn't software development akin to just about any other specialized field? With few exceptions, you do not find the average individual delving into the depths of fields outside of their daily focus. Usually when that does happen it is because it has become sort of a side-hobby of the individual. Granted, development work could be useful in day-to-day life, but it is by far not a requirement.
I myself am a software developer. I have spent years teaching myself new languages, practices, etc... I have a few hobbies that can make my life easier in other aspects, but they are just that... nice-to-have hobbies. I can change my vehicles oil, breaks, belts, etc... but you wouldn't catch me taking the whole engine apart. I take it to a mechanic. I also like tinkering with electronics, but I probably wouldn't wan't to waste my time fixing a television. Just the same as if I found myself in legal trouble, I like to keep informed on some legal procedings, and I try to know my rights, but I wouldn't ever represent myself in court. And I cerntainly wouldn't remove my own appendix or do my own dental work...
While the notion of opening the field up to more people is a nice one, I don't see it as practical...
Re: "Normal humans are effectively excluded from developing software. The real injustice of developer inequality is that it doesn't have to be this way."
I've seen the effects of allowing 'normal people' to develop software and have made quite a lot of money from this. I don't like these project, however, as they're usually a mess and can't be fixed without enormous effort. And you can bet the bad decisions don't stop at who management decides to hire.
Tom
Things are wrong if a group of people are excluded from something by others for no particular reason or a frivolous one such as: sex, religion, skin colour, ... However: we are not equal in achievement, I will never be a swimming great -- the young lads at the pool power past me, but I could prob write a better C program or shell script than they could. However if they were willing to put many years work they might manage that as well.
Life is not fair, different people have different abilities & achievements. What is important is that society provides equality of opportunity; it is up to the individual to exercise that opportunity based on the time that they are willing to put in and their innate abilities.
This is simple economics. If the demand for programmers can not be met then there is more opportunity and money for me. Why should I reduce my personal money making capability?
Normal people are mediocre. Why don't we just oppress and grind the normals into oblivion. Let us autists inherit the Earth.
Great to hear the rantings of other human beings *also* getting older and *also* temporarily unable to cope with the realities of it.
The article was called "The Real Software Crisis" (BYTE, January, 1996); you can read the original text here. (BYTE's archives are no longer online). I wrote a more extended discussion on the subject back in 2008; you can read it here. One might was well write that "normal humans are effectively excluded from composing and performing music"; if you've ever known a music major in college, you'll know just how true that is (I believe Music to be a harder major than Computer Science, having dated a Music major while getting my own degree in CS). ..bruce..
Bruce F. Webster (brucefwebster.com)
Program a widget for a smartphone using a already existing framework and pictures that'll display and whatever... Sure, sounds like something "we" should simplify. I'l get on it.
Building said framework? Cool, so you're going to need to know a programming language or two, how those interact with the phone hardware, what the phone hardware's limitations, perhaps some UI design and... hey, where are you going? I've got months more reading for you to do!
Ack!
From TFA (the friendly article, or whatever other F-word you prefer) . . .
> In the old days there was a respected profession of application programming.
> There was a minority of elite system programmers who built infrastructure and tools
> that empowered the majority of application programmers.
I think it is still that way. But now there is a third class who think that breaking into the application programming is some kind of godlike elite skill because it requires you to actually know more than the mere syntax of a language. Programming is racist and sexist because it requires you to even learn the syntax of a programming language. Why can't the computer just do what they say? Why do they need a special language? Why should it be necessary to learn to design complex databases, and understand in memory data structures and algorithms? Why focus on gaining lots of insight in order to come up with vastly superior algorithms?
In short, from what I see on some programming boards, what some people seem to want is a high paying position where an untrained monkey could get a computer to do what the boss wants, and then collect a paycheck -- um, no. Direct deposit.
I'll see your senator, and I'll raise you two judges.
Even with training most people could not paint a simple landscape or compose new music or even come up with an original joke. So why should everyone be "empowered" to be programmers? Who is stopping them anyway? Heck we don't even have the equivalent of AMA that can sue people for programming without a license. In fact that rant would have more validity against the legally chartered professional organizations that have the monopoly in issuing credentials and stopping people from practicing law, medicine, accounting etc without license.
sed -e 's/Chuck Norris/Rajnikant/g' joke > fact
A normal person is a person who's good at some things and bad at others.
99.99% of programmers, including myself, are normal people who are good at the things required to be a programmer and bad at others (like social things, perhaps?).
TFA is some self-righteous bullshit. Imagine if a garbage collector wrote a blog about "the insufferable unequality in his profession because it takes somebody with rare talents such as muscle-power and the ability to withstand excruciating smells, excluding all the normal people". We'd call that guy an arrogant prick. What is the difference?
Get of your high horse, mr. Edwards. Unless you are one of these Jonathan Edwards's, you're just a normal person like pretty much the entire rest of humanity.
Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
I got my first computer in 1986; I was 13, and it was a ZX Spectrum with a build-in BASIC interpreter. When you switched on, you could start away programming. In fact, the computer came with a little book with programming examples and little games. I spend countless hours typing in listings that I found in newspapers. To even load a simple game you had to enter a command.
Since then, I learned C, tcsh, C++, bash, Perl, much later also Python and R. It was a step by step process, and I would never have started it (and became what I am now, that is, computational biologist) if not for this one computer with the BASIC interpreter.
I have kids now, and they have Android tablets. The sheer power, their parameters and their capabilities are overwhelming. I don't know how many instances of a ZX Spectrum emulator I could run on one of these, a thousand?
But even though they run on a system that is related to the system I am using every day, I would not know how to write a program for them to save my life. In theory, I know how I would approach it, I even set up once an Eclipse environment once, but I never got to even start a Hello world program. If I were 13, I would not even know that I can write a program myself.
It is amazing, but I think that actually, my kids will have a much harder time to learn programming than I had, and they will get much less fun in return...
Some people in life find an "unfair advantage". This is very evident in professional athletes. They must start with natural athletic ability and then hone that through practice and training. And then a select few get paid huge dollars to essentially play a game.
People with natural problem solving and logic skills also have an "unfair advantage". It doesn't generate the quick wealth of the professional athlete but can lead to a promising professional career path. It still takes practice and learning to really take advantage of these skills much like the professional athlete learning their sport.
I will not apologize for taking advantage of my abilities any more than a professional athlete will give back the money they earned playing a game.
I only look human.
My mother is a halfling and my dad is an ogre, so that makes me an Ogreling
Those are jobs that involve a vanishingly small percentage of the general population. Programming is not. I couldn't stop laughing after reading this gem - "programming has become an elite: a vocation requiring rare talents, grueling training, and total dedication."
Does this egotistical idiot actually believe that?
Programming is not something that requires grueling training or rare talents. Algebraic topology, cardiothoracic surgery, and competitive chess require those. If you're writing code that requires elite skills, you're doing it wrong - no one is going to be able to understand it, and you will never be able to troubleshoot it. Someone with an IQ of 100 can become a perfectly competent Java or C++ programmer with two years of intensive training. Programming is more akin to a trade skill like plumbing or electrical work, than it is to engineering. And before everyone gets on my case that being a top 1% programmer is incredibly difficult, the same holds for a top 1% electrician.
Support microSD: in a post 9/11 world, it is unwise to carry your data on media that you cannot comfortably swallow.
> "My tolerance for learning curves grows smaller every day. New technologies, once exciting for the sake of newness, now seem like hassles. I'm less and less tolerant of hokey marketing filled with superlatives. I value stability and clarity."
Congratulations. You've stopped following fashion and started to become a good programmer.
And different people have wildly varying abilities by nature. To say that this is a crisis is officially today's biggest crock of shit.
The world would be much better off if we just encouraged stupid, lazy people to program.
"The bigger injustice," Edwards writes, "is that programming has become an elite: a vocation requiring rare talents, grueling training, and total dedication.
LESS TODAY THAN EVER BEFORE
Remember what Programming the PDP11 was like?
They also seem to have an above-average chance to push management to jump on some new framework bandwagon because they think that will solve all their problems. To be a really good programmer, you have to know how to program, understand the processes that you're automating with your code and realize that no silver bullet will allow you to NOT understand the processes that you're automating. If you don't understand what you're trying to do, you're not going to do it very well.
I'm trying to teach myself to set people on fire with my mind... Is it hot in here?
Regular people can build web apps. It's called "Microsoft Sharepoint."
Moderating "-1, Disagree" is simple censorship. Have the guts to post your opinion.
"I'm less and less tolerant of hokey marketing filled with superlatives. I value stability and clarity."
That's what we've been telling the Dev side for decades now. .
I had a back flow device inspected. This stupid thing requires a $500 tester and $200 annual calibrations and additional certifications. While as I agree that these things are needed to prevent contaminating the water supply, I think paying some Joe $75 for 5 min of work is way too much. I would be willing to have the city send someone out to do it. I am sure that the economy of scale is such that if we could have someone do this for $5, but then, the local city council has family who depends on my over priced fees.
We live in the golden age of low barrier to entry programming. I'm 31 (upper bounds of millennial). When I started, JavaEE in its earlier stages or .NET were the only choices outside of C/C++ that a typical graduate could get. Now you have Node, Python, Ruby, PHP, Groovy and all sorts of easy to use languages. FFS, JavaScript is now a serious career choice where it was considered a skill that no serious developer needed when I was in college (2001-2005).
I swear, some people won't be happy until the machine becomes sentient, writes the code they really meant to write (originally express in plain English, probably at a 6th grade level) and then gives them all of the credit at review time.
"Normal humans are effectively excluded from developing software. The real injustice of developer inequality is that it doesn't have to be this way."
Yeah, it kinda does. Face it, computers are the most complex machines ever designed and implemented by mankind. There is no way to make them much simpler without losing functionality and breaking a lot of things we take for granted.
I'm excluded from practicing law and medicine.... OH THE INJUSTICE. I should be able to take a 2 week course and read some picture books and perform surgery, right? IT and development are professional fields that require extensive training. Get over it.
We tried making programming accessible to the common man. These efforts were called things like BASIC, HyperCard and Applescript. And you know what? Common people couldn't even hack it with those. And they were braindead easy to develop in. They were fairly slow but novices could go from blank slate to working program quickly. And still..... most "normal humans" were confused.
"Normal humans" don't see how complex even basic tasks are to the computer itself. They think programmers just punch keys and click all day and it all comes "naturally". They think the job is easy. Computers are insanely complex. GUI's have just made the problem worse because the common misconception is that computers are "simpler" now.
The "normal human" computing skillset consists of opening Word or double clicking the blue E to get to facebook. Sorry, I don't want these people writing software. Most of them have no interest in writing software, either.
The biggest "injustice" is that IT/development folks are generally excluded from any other field after dealing with IT/development for a few years unless we can pull an MBA out of our ass. We are "excluded" far more than most others. And the common line of thought is "this stuff should be simpler so we don't need those weird IT people". The reality is "simpler for end users" means insane complexity under the hood.
"... someone like me on the autism spectrum who has spent their entire life mastering vast realms of arcane knowledge — and enjoys it. Normal humans..."
One does wonder what those "normal humans" end up doing with themselves? It can't be a big problem, since there sure aren't very many of them.
There's a reason it's called a *spectrum*; and, there's lots of other spectra.
...with the Finkler part at the end. I've gotten to the same point where I'm coming across "frameworks" that are supposed to be the be all end all of everything you could possible want to develop on to make your enterprise applications. They are designed so generically, and configurably, that they become useless and waste much more time trying to find the right combination of configuration to make things actually work, since they had to duct tape 30 different other kinds of frameworks together into their framework. Not to mention, the documentation falls apart in the end, and the amount of untested combinations leads you to just working your own hacks in.
I walk into a store to buy a hammer and I can find a sub-selection of the ones listed here:
http://en.wikipedia.org/wiki/H...
There's a reason why there's variations, because each one makes a particular job easier. Is this really a bad thing to have so many variations? I don't think there's anything wrong with it, and I certainly don't want to try to make a 1 hammer fits all when it results in a Swiss army knife in which people only use 2 or 3 parts of it.
So yeah, I really like the idea of stability, clarity, and I'd add purpose. Make the frameworks do 1 thing right 99.999% of the time and shoot for 100% before tacking on 29 other things to the side of it to make your Swiss army knife.
I know quite a few "normal" people who have developed software. I've worked with a doctor (MD) and CPA who learned programming on their own and decided to switch careers. No to mention a lot of people with non-technical backgrounds who got into designing web sites, then javascript, then backend work.
If anything it's getting too easy to get a "software development" job. Lot's of "programmers" work their way up to all levels of "software development" without expanding their understanding of software systems. Lots of others do learn along the way and belong where they rise to. But there is a lot of learning that needs to be done and many colleges don't even give a broad base to start with so even that's not always a good start. My guess is that healthcare.gov had too many people who knew how to program (i.e. "programmers") and not enough who understood systems/engineering ("software engineers" though that term is misused often since people don't understand the "engineering" aspect which takes a lot of learning )
If you want to see "exclusion" from a job try to help a sheetrocker, electrician, or plumber be allowed to be the lead architect for the next 70-story skyscraper. Or see if they can work their way up to that responsibility over the next 20 years without "requiring rare talents, grueling training, and total dedication".
"Normal" people are why we have security issues in the first place. So many bad design out there. Back in the "glory days" anyone could program, yeah, because few systems had databases full of all kinds of information about many different people with public network access.
In more modern times, systems are hooked up to the Internet and need to be properly designed to not have security holes that can be easily probed by bot nets. Security is now more important than functionality. Better to have something not work than to have a few million names, SSNs, and addresses leaked on the Internet.
On the other hand, I don't want to be stuck doing boring things, so we need normal people who are good enough, and we can't scare them away.
The bigger injustice is that mathematics has become an elite: a vocation requiring rare talents, grueling training, and total dedication. The way things are today if you want to be a mathematician you had best be someone like me on the autism spectrum who has spent their entire life mastering vast realms of arcane knowledge — and enjoys it. Normal humans are effectively excluded from contributing to the field of mathematics. The real injustice of mathematics inequality is that it doesn’t have to be this way.
Yeah... that feels about right.
the growth in cynicism and rebellion has not been without cause
This may be true from an elitist standpoint, but take the guy that built that Flappy Bird game for example. He's just some Joe Schmoe who not only is not an elitist, but ran away from the public once the slightest hint of controversy came up regarding his game. I think plenty of people can develop software from mobile apps to web apps to business applications, you just have to want to, that's all.
New technologies, once exciting for the sake of newness, now seem like hassles. I'm less and less tolerant of hokey marketing filled with superlatives.
Really? What to you so long? I reached that point long ago, like the last part of the last century.
My karma is not a Chameleon.
Eventually your priority shifts from learning new things to actually utilizing your knowledge to do and make things.
Coming up with 20 good ways to build a bridge is not as productive as coming up with one good way and doing it.
Oh, and check your incredible arrogance at the door - normal people are doing much more complex things than coding, and with today's dev tools the entry barrier is significantly lower (and initial learning curve shallower) than it was 20-30 years ago. You are not "special" because you "get" algorithms.
It seems that "regular people" are those that have more than one facet to their life. I wonder if brain surgeons or mechanical engineers ever think like this.
And of course the best answer is to dumb down the subject matter rather than educate the masses...
Douchebags!
The normal humans he talk about are "normal" only if you consider low IQ to be normal, which may be the case. Most of the world has an IQ average well below what the average 100-110 IQ among some populations.
What he is saying is absurd as well in that programming does require special skills so its sort of an oxymoron to say that people who do not have special skills should get involved in something that requires it. Its sort of like saying that we should whine about a heart surgery only being done by heart surgeons and how these heart surgeons should be reviled for having special skills and how we need to open up heart surgery so that any joe off the street can do it. Obviously absurd. With the disasterous affects of the say the OpenSSL bug, the UPNP bugs in 80 million routers at one point, these are cases in point of why you must have conscientous, aware, meticulous people who really know the ins and outs of what they are doing to develop software.
We should encourage people to have any interest, anyone who wants the knowledge, to be able to study heart surgery if they want to, and even become one.
The parent article displays sort of an anti-intellectualist as well. if people want to become a software developer, please do, its not an off limits thing that where only people pre-selected at birth can do it. Anyone can, you just need to learn the skill sets to do it. But he seems to suggest people who don't have a clue should meddle in something they dont understand and that we should almost promote such ignorance, that we have to dumb things down for people who are too clueless to understand things.
Hate to break it to you but the Autistic ARE normal humans. It's just another way of thinking that's slightly different that what a lot of people are used to.
Also, where the hell are you working? I know plenty of programmers that are just as stupid as everyone else. Vast reams of arcane knowledge? Are you using the Forgotten realms addition of C#?
How do you put a nail in somewhere the hammer doesn't fit?
How inappropriate to call this planet Earth, when clearly it is Ocean.
Remember when you could build your own airplane, or build your own car, or maybe your own radio set? Well I don't, but you could. Heck, people built their own computers for the longest time (some still do).
But the nature of just about everything is it gets more and more complicated until it's much easier to just get something prebuilt than it is to do it yourself and those who choose to do it themselves are doing it either as a hobby or because of their employer.
I've been writing code for 20 years though I've primarily been a sys admin. There are things that are much more difficult but many of the tools I used in the early 90s (bash for example, or C) are still around and follow much of the same rules as now.
Insert Pepperidge Farm Remembers meme.
a) there are no "normal" humans ...
b) there are also tons of other places where this applies, and applies even to a higher degree - like professional sports (both mental like chess or physical), or math, or philosophy, or research, or art, or teaching (unbelievable how many "teachers" suck at what they do), or
"Normal" people will just stare at you blankly when trying to explain things like if/else, (do)while, for(each), switch etc.. This isn't a career you can just walk into obliviously .. There was a lady in my intro to C++ class that sat with us for a week before finally asking "Is this BCIS?" .. How is that for normal?
I really don't know of many people that are going along through their lives as say, a welder, or a truck driver that go "You know? It's time to start programming."
So normal? Probably not, depends on what your definition of normal is. Is normal the median behavior of all humans? Is normal someone without mental "disability?" Is normal someone who has a certain set of moral views.. The question is broad. Bottom line is -- like many others have said -- people should follow their passion, programming, like any other specialty (niche) skill is not something you just pick up, it is something you have a desire to learn. The entire personality required to be good at it dictates the pursuit of the individuals knowledge and a desire to always know more.
It's not the languages and skill that make programming difficult... it's the demand required to fulfill the jobs!
Back in the day, you could learn BASIC, or COBOL and work your way into FORTRAN as a "normal" person. Or later in the 80's, you could get a ton of real work done learning Lotus/Excel macros, and dBase, and Turbo Pascal.
You could accomplish some really useful things as a "normal person"
YOU STILL CAN DO ALL THAT. The issue is that no one gives a crap about that one complex macro anymore... businesses want more complex, solutions, they want to process data and accomplish real things. The bar for what is required to be deliver is what has moved.
If you want to have the same level of usefulness now as there was in the 80's, learn Mathematica, MatLab, or Learn Perl,Python, or Ruby
As a "normal" person, this will get you much farther.
I started on a BBC micro a few years before you. I understand what you are saying but I don't agree. I think kids who are inclined to program find a way. My son is 12 and plays Minecraft; he built a 7 segment display with red-stone, then lots of mad things that I didn't even understand.
Now he goes to a computer club and writes games and stuff in Python and JavaScript.
The real injustice is that I'll never be able to fill that spot on my bucket list under "Perform open heart surgery in front of a judge while vigorously arguing a case on behalf of the guy who is having his heart operated on."
Microsoft Lightswitch is a great example of just such a tool. Visual Basic is still around, and the Express versions available for free today are better than Visual Basic 1-6 ever were. Mac has been stuck with Objective-C for years, but it looks like Apple is finally addressing that.
Web Programming? Yes, its the spawn of Satan. But if you want to point the blame for that look to Brendan Eich for the monstrosity that is JavaScript, and the idiots that decided that CSS needed to be so alien and broken compared to HTML.
--- Generation X: The first generation to have SIG lines inferior to their parents... ---
How much of the grueling training is done simply to be grueling and exclude people based on their lack of stamina? Think of law school assignments where they throw a 100 page brief at you Friday to be handed in Monday that requires analyzing dozens of circuit, appeals and Supreme Court decisions, maybe a few hundred pages of congressional record to determine intent and then some history for context? Or the marathon race of medical residency where 100 hours is a normal week and 36 hours straight is a standard shift?
I think in some sense these kinds of things are done not because they make the profession any better but because they are exclusionary and keep the pool of competitors smaller. If you look at less exclusive jobs that need to be done right in organizations that depend on them being done right you see training done for results in a saner fashion vs. some kind of weird torture test.
I don't agree with the article but...
Just programming requires a couple of years, like you said. The much derided coding monkey, if you will.
Competent application development requires both great design skills and great domain/business knowledge; this takes years to build up. Competent system development requires in-depth knowledge of the system, which also takes years to learn build up.
The gap between a programmer and the latter type of coders designer is quite large.
Too many people in this business already. Wages are depressed. Don't make this niche even more crowded !
The old dumb tools still work, if all you want is a couple of dumb web pages you're fine. If you want to hook it to dynamic content from an SQL database, fancy behaviors that require Java or Javascript or Ajax or whatever, you're going to have to learn the technology. TNSTAAFL.
No wonder I can't get laid. Sigh...
(Captcha: losers. Sure, rub it in /., rub it in...)
the more I watch the 'general public' become dumber and the technical elite get more self-serving, I think H.G.Wells had it right (The Time Machine).
He is speaking pretty specifically about web/app programmers and how there are a glut of convoluted and overlapping frameworks that seem to pop into existence overnight can discourage and confuse the average rube.
Just because thats where all the cool start up money is right now (see facebook, whatsApp, etc...) doesn't mean thats the only kind of programming. What about the people building this "internet of things", what about the people actually evolving the internet architecture, what about the people building the appliances to make sense of "big data"? None of those people should be "average". Joe Schmoe doesn't want to work on those things in his spare time.
Car analogy: out of all the makes and models of cars, this guy is talking about wanting Joe Schmoe to be able to build a backyard go kart. Fine, great, whatever. I suppose it would be cool if he could do that without goofy tools and processes.
There is nothing wrong with the "elites" building the BMWs though.
Quoting Finkler: "I don’t feel like I really grok the module system. I definitely don’t understand the class system. What the hell is a generator and how does it work the way it does? I am so lost."
It seems that the gentleman lacks some background IMHO.
Is a COmmon Business Oriented Language, right Grace Hopper?
Ken
That's fair, geeks are excluded from touching girls.
Table-ized A.I.
- There's no framework or language that does everything, and we end up seeing variations of the 80/20 split even in the best case, where 80% of functionality is easy or built in, and the remaining 20% is either horrendously complex or impossible. Advocating for one and claiming "Hey, watch me pull a rabbit out of a hat!" can only be answered, "That trick never works." Besides, you'll probably just end up with "Visual ColdFusion," and then I will have to apply a murderous thrashing to the individual responsible.
- We think about software and programs in many different ways; data flow, decision trees, objects, messages, functions, and so on. We've tried both large and simple instruction sets to model these ideas, and while the former tends to require a great depth of knowledge and fosters complexity that way, the latter guarantees complexity when we attempt to model naturally complex systems - see Scheme for a good example. It's very hard to make something only as complex as it needs to be and no more - especially when the goal of 'acceptable complexity' is subjective and moving. A new hypercard will only meet the goal for some subset, not everyone.
- We as developers are most effective - writing code faster, with less bugs or security flaws - when we're using languages, frameworks, and development methodology that we're experienced with. This is a serious flaw of the current framework of the week trend, and should be considered when operating within a SDLC process. However, the only ones who have the personal experience to understand this are the curmudgeonly, stuck-in-their-ways devs who will be ignored when they bring it up. The problem is simple; we love our toy languages and frameworks, until the next one comes out or we grow up and stop playing with toys. The solution is also simple; You have a good, experienced (not just capable) developer acting as architect, who guides everything from framework changes, to IDEs, to coding styles at a measured pace, and provides for training and familiarization. Otherwise you get yahoos wanting to rewrite key pages in a 12 year old legacy J2EE app in Ruby and running noSQL for absolutely no reason at all, and the increased upkeep cost.
- "Effectively excluded," is a poor way to phrase this, as many others have noted. There's no exclusion other than the requirement someone posses the skills, and prior to that, the necessary attention and desire to learn those skills, and that's just a choice. This is the same for any other trade, and programming's requirements are not especially weighty. Most people chose not to learn how to set the time on their VCRs, they were not "effectively excluded" from doing so.
In my personal opinion, the allegorical great unwashed masses that are not programmers are held back less by the amount of knowledge required, and more by their own lack of desire. Just like getting women into computer science degrees and jobs, this is not something you fix by introducing a new development tool, be it language or framework. You want more people making webpages? Get the government to pay everyone $25 per page, and I'm sure you'll see lots of folks choosing to no longer be 'effectively excluded'.
The real injustice is that I'll never be able to fill that spot on my bucket list under "Perform open heart surgery in front of a judge while vigorously arguing a case on behalf of the guy who is having his heart operated on."
No, but you could probably work that into an app!
GLaDOS for President 2016! "Well here we are again. It's always such a pleasure." -- GLaDOS, 2011
"Watch me pull a peer group out of my hat!! Nothi' up my sleeves....."
"Ahh, Bullwinkle, that trick never works.
1. Some math skills... rudimentary at best. It's odd math though, full of discrete concepts, sets, probability,
2. Some analytic skills, "Look what happens when I do this!"
3. Patience.
Most humans don't work to develop these skills. The web itself has facilitated our lack of patience. If a person clicks on a link and does not have an answer in 2.6 seconds then many get visibly frustrated. How can the same person sit and think about a data structure, algorithm, or DB schema without going crazy? How can they sit in front of debugger output for 3 hours and attempt to rewrite the same 4 lines of code in different ways to get it to work with no errors? Normal humans all have the capability to do this... most normal humans just CHOOSE not to. Again it is a CHOICE on their part. Well enough. Those people need me. I am the technical master that solves their problems, and I get paid well for it. Am I smug? Probably, but for those that won't go and put in the effort to develop a skill set, I will always be in demand.
Or the marathon race of medical residency where 100 hours is a normal week and 36 hours straight is a standard shift?
That's because people are cheap bastards. They'd rather have medical residents who are tired to the point where they make decisions like they are three times over the legal alcohol limit, than pay to have more doctors. Hilariously, the USA spends nearly double what we do in the UK, but a lot of it goes on administration staff because of the whole insurance and billing thing. This is why you guys have such a hard-on for electronic health records ; automate all that shit and things get a lot cheaper. In the UK we just avoided most of it by having a single-payer system.
I used to work those marathon weeks (here in the UK, where they are similarly cheap), but I quit due to stress. So the vast sums spent on training me went largely to waste ; although I do still make use of my medical background in my day job which is writing software for medical purposes.
* Learn Rocket Science in 24 Hours!
I'm not so sure that's such a good example. Books like that exist.
Flying planes is for highly-trained and naturally-skilled pilots, but the rest of us want to do it too. If someone ever makes one that's affordable, safe, and operable by the average person, they're going to make a fortune. Attempting to do this doesn't ignore the skill or training required of current pilots, it just plays to the desires of those who want to be able to do it without pilot training. At least to date, this is apparently beyond the abilities of our best engineers, and the same may be true for programming and app dev. But perhaps not; perhaps whoever pushes this beyond the current levels of intent would make it big. Personally, when I'm dreaming big, I think what I'd really like is to tell my computer in natural language, Hey, I want a program that does this and this and this, and it fires something up for me real quick.
In some ways it really doesn't stretch the imagination too much. Consider, "Hal: make me a program for my iphone that when I run it, it just says to me, 'Hello Willy'." Okay, so fine, perhaps a little too simple. Let's try something harder: "Hal: make me an app that lets me blog about crap and then lets random people talk about what I've said." Oh yeah, that's pretty much done, see wordpress and all the other blogger platforms. Okay, so it can get more complicated from there, but whoever takes this to the next level is going to make bank.
You're like an old man whining about nail guns(because what are those new kids going to do when they can't use a nail gun for a particular job).
I am old and you don't see me complaining about nail guns.
Even though, I am pretty sure 3D printers are just toys for spoiled youngsters that never saw the inside of a machine shop or know which end of a saw to hold.
"So much coding. I was willing to dive so deep into a library or framework or technology to learn it. My tolerance for learning curves grows smaller every day. New technologies, once exciting for the sake of newness, now seem like hassles. I'm less and less tolerant of hokey marketing filled with superlatives. I value stability and clarity"
This is just just classic burnout.
Note to all of you out there who code to live and live to code - yes, you live breath and eat programming, it occupies your mind body and soul, the vistas open to you are endless and yes your natural curiosity will carry you and sustain you through environments you otherwise would have weltered through.
But it doesnt last forever. When it starts to fade, when you find yourself no longer looking forward to logging on and busting it out, start to think about getting away from it for a bit. If you want to preserve your sense of joy and exploration and excitement from writing code, there will come a time when to do so, you need to back off and recharge for a while. I'm old enough I've had to do this twice now, for roughly 6 months or so at a stretch - when you catch yourself idly wondering again how you would code such and such a thing, thats when you know its coming back.
It seems to me the author is nothing so much as a victim of burnout - it happens. Youre so into it for years, then one day you come up for air and everyone changed all the other code around you. Just step away, avoid code/computers/logic - do whatever you need to do for however long you need to do it so long as you avoid a feeling of anxiety when thinking about programming. Because if you go too long feeling anxious about doing what you love, youre going to twist yourself into knots.
Isn't angular open source? I'm not sure i get the correlation between open source and black box as they are fairly diametrically opposed. The code for it is right there in the open maybe you just aren't smart enough to understand how it works.
The industry is already full of talentless programmers who read a book and barely grasped the concept of writing anything more than Hello World.
How do they survive? Easy,
a) post some half-arses question on Stack Overflow and wait for the people to write it for you.
b) Copy and paste from RoseIndia.com.
c) Steal code from your colleagues, remembering of course to change of the author.
It is tiring to read articles like this. Yes there is a lot of elitism in the industry, but rightly so, people work hard and invest a lot of energy into writing good code.
http://dilbert.com/strips/comic/1999-10-27/
as others have noted "normal" humans are excluded from performing vascular surgery, etc for a reason...
" I value stability and clarity." .That's called growing up. Next, before you know it, Jonathan Edwards is a grumpy old man ..., Hey, wait, he's already there :-)
.... Brain Surgery.
And that is even worse. While I can learn software development on my own. Make good money if I find someone who believes I am good enough.... I cannot become an autodidact brain surgeon. Heck, I am not even allowed to pull a simple tooth without a proper license. If that is not a real scandal....
Normal humans can become programmers if they go to a technical high school, and attend a science program in college. Typically on slashdot we call them "H1B Visa holders." That is literally the entire philosophy behind the "Bachelor of Engineering" college system in India.
As a peer interviewer:
about 5% of the people I interview seem like "Obsessive programmers" - like TFA suggests (I recommend hiring most of the obsessive programmers).
about 10% of people I interview are competent programmers who are probably normal humans who write code because they have to pay the bills somehow..
about 85% of people I interview have 7 years experience as a "programmer" and definitely could not write code if their life depended on it.
I have found no discernible patterns in resumes to predict these outcomes, but in interviews it is fairly easy.
Question 1 - "So, what was the last program you wrote for yourself at home? What did you write it in, and why did you write it?" - If they have literally any example of programming they did "for fun" or to solve a real life problem, (and they aren't otherwise unhireable) they are hired.
Question 2 - "Describe the last class/module/function you wrote for work, why you wrote it that way, and what was hard about it." - If they have any reasonable answer, we will drill down into competencies... otherwise, they are almost certainly in the 85% category of people who somehow make a living pretending to code.
Almost all of the 10%ers who are "competent" but not "obsessive" have computer science degrees and are very serious about work, but not in to the "hobby" these are normal humans writing code, and doing fine at it. Lots and lots of them were educated in India.
The 5% obsessives were born into it. They (and I am including myself here) would be writing code even if it wasn't their job. Frankly. I have seen all kinds of educational backgrounds in the obsessives, usually computer science, but sometimes music or English, or Math or Geology or no college at all.
I guess what I am saying is that India already realized this, and has a population more willing to stick to a difficult degree plan "just for a job"
Judging from the projects I maintain and the third-party libraries I've had to deal with, being a programmer doesn't even require knowing how to program.
That said, the author does make some good points. I cut my teeth on Java, and my standards were set by Sun's (mostly) well-thought-out APIs and comprehensive documentation. Now I'm an Android developer, constantly infuriated by Google's shitty APIs and half-assed documentation. Google's terrible design decisions have made Android is an incredibly challenging platform, and the industry's response to surging demand for Android apps has been to simply lower its standards for software quality. The author is right, it doesn't need to be this way.
He's exhibiting exactly the wrong attitude.
Everyone's excluded from something.
Different people have different inherent talents.
Some people, like me, are never going to go into politics - I'm excluded from it because I don't empathize with you and I'm not going to lie about it and try and make you feel good. Politicians are very good at that. That's their thing.
Some people are excluded from higher order math but they may have empathy. They may make good politicians or social workers. I won't but I am very, very good at things mathematical, engineering, programming, etc.
The trick is to know your talents and then hone them. That is how you become very good. I'm very, very good at what I do. But I don't bother doing things I inherently am not good at. It's not interesting or pleasurable. That is the natural order of things.
We don't all need to be equal. My wife and I are different. She has empathy. I have math. We each have some other talents too and some overlap plus common core beliefs and goals. Together we're a great team. That's how it works.
Celebrate the individual differences that let the group be greater than the sum of the parts.
And some people still code Cobol. Cobol was designed so that average person could program for business. Ruby, Python, or JavaScript might be up for the task to enable the average person to program for their own needs and pleasure. There is always Basic.
As long a real people can get things done with their computer/tablet/phone/etc then everything is OK. Everyone doesn't have to be a professional programmer. Machines must serve their masters (users) completely.
A lot of the special "knowledge" comes from less that its complicated but in that market forces and ADD (yes I'm over generalizing and using as a buzzword) driven consumers want new features constantly. The 24/7 blog press constantly whines about "lack of innovation" this pushes companies to push stuff out and the ability to work at these speeds does require increased skills and work. There are still people in various professions (particularly scientific) using even GASP Fortran to write their own code and not on the internet speeds needed in the general marketplace.
Yes the whole amateur thing came about in the mid to late 90's when everyone was trying to cash in on the "dot.com" boom and anyone who could spell HTML was getting hired as a "developer".
Hey everyone and their cousin can write Excel spreadsheet with Macros and business and there is a lot of Crap out there from people who haven't taken the time to actually learn the tool.
Normal humans are excluded from writing good software. Abnormal humans are excluded by HR. Hence the complaint, "We have a shortage of programmers".
For all intensive purposes, "whom" is no longer a word. That begs the question, "who cares"?
truly in the history of mankind, there have never been insanely complicated topics that one had to work hard, and abandon other pursuits to master.
exactly zero of those before the internet.
ROFL.
programma please.
"Well, the world needs ditch diggers, too" Judge Smails
Those people really far out on the cutting edge of new sciences are successful only because they have some major obsessive qualities. They are driven to learn, understand, and create. They understand things so abstract and esoteric that it would be all but impossible to explain some of these ideas to the lay person. And each of us has some secret weapon too. Mine, for instance is that I can code rings around most other CS professors. I’m not actually smarter than them. Indeed, most of them seem to be better at coming up with better ideas on the first shot. My advantage is that I can filter out more bad ideas faster.
A key important aspect of the areas that we are experts in is that there are underlying and unifying principles. Subatomic particles fit into categories and have expected behaviors that fit a well-tested model. CPU architectures, even exotic ones, share fundamentals of data flow and computation. CS is one of those fields that in invented more than it’s discovered, and as we go along, scientists develop progressively more coherent approaches to solving problems. Out-of-order instruction scheduling algorithms of the past (Tomasulo’s and CCD6600, for instance) have given way to more elegant approaches that solve multiple problems using common mechanisms (e.g. register renaming and reorder buffers). You may think the x86 ISA is a mess, but that’s just a façade over a RISC-like back-end that is finely tuned based on the latest breakthroughs in computer architecture.
Then there’s web programming. Web programming is nothing short of a disaster. There’s a million and one incompatible Javascript toolkits. HTML, CSS, and Javascript are designed by committee so they have gaps and inconsistencies. To write the simplest web site (with any kind of interactivity) requires that one work with 5 different languages at one time (HTML, CSS, Javascript, SQL, and at least one back-end language like PHP), and they’re not even separable; one type of code gets embedded in the other. People develop toolkits to try to hide some of these complexities, but few approach feature-completeness, and it’s basically impossible to combine some of them. Then there’s security. In web programming, the straightforward, intuitive approach is always the wrong approach because it’s full of holes. This is because these tools were not originally developed with security in mind, so you have to jump through hoops to make sure to manually plug them all with a ton of extraneous code. In terms of lines of code, your actual business logic will be small in comparison to all the other cruft you need to make things work properly.
When I work on a hard problem, I strip away the side issues and focus on the core fundamental problem that needs to be solved. With most software, it is possible to break systems down into core components that solve coherent problems well and then combine them into a bigger system. This is not the case with web programming. And this is what makes it inaccessible to “normal people.” The elites in software engineering are the sorts of people who extra grand unifying theories behind problems, solve the esoteric problems, and provide the solutions as tools to other people. Then “normal people” use those tools to get work done. With the current state of the web, this is basically impossible.
I was a music major, worked my way through from undergrad to the PhD level in music theory (my favorite topic.) Fortunately those same logical and analytical skills, appreciation of patterns and attention to detail, transfers quite well into becoming a programmer. After my first year in the PhD program, I suddenly came to the realization that being a professional music theorist wasn't going to pay a lot, and made the switch to software engineering, which I have been doing for the last 15 years. Best decision I ever made.
But I disagree with several points in the article (which I did read.) First I don't think that programming is particularly grueling or requires some elite level of dedication. That's not my experience, and my success as a consultant programmer (clients hire me purely for my skillset) is evidence of that. I think the most important thing is to have a predilection for logical thinking and problem solving. Other fields require different skillsets which might attract people with other strengths and personality types. I see nothing wrong with this. I don't understand why the author thinks that someone spending years to master a skill is a bad thing, or that doing so consumes a person's entire life. When I go leave the office, I pursue other interests that have nothing to do with programming. I don't think one must have a brain disorder to be a programmer.
The author shouldn't assume his personality and experience mirrors as a programmer everyone else's. He says "The real injustice of developer inequality is that it doesn't have to be this way." I say, it ISN'T this way.
While specialization for humans is becoming more and more of the "norm," I think Heinlein said it best:
"A human being should be able to change a diaper, plan an invasion, butcher a hog, conn a ship, design a building, write a sonnet, balance accounts, build a wall, set a bone, comfort the dying, take orders, give orders, cooperate, act alone, solve equations, analyze a new problem, pitch manure, program a computer, cook a tasty meal, fight efficiently, die gallantly. Specialization is for insects."
-- Robert Heinlein, Time Enough for Love
So, in that context, yes -- every normal human should, in some fashion, be able to program a computer or a web app or what have you. I believe you should always seek to bring the knowledge and abilities of those around you UP to your level and if they exceed you, great, hopefully they will return the favor. Idealist, aren't I?
Dream as if you'll live forever.
Live as if you'll die tomorrow.
~Anonymous~
Now how stupid is the title of this article.
Programming is difficult, doing it well is very difficult, doing it well in the modern world exceptional difficult.
Now making it easy is all but impossible.
From the article:
"it takes a skilled programmer with years of experience just to build simple applications on today’s web"
Counter point:
Wordpress
Drupal
Any number of other CMS'es
I believe it's now easier then ever for people to build powerful, feature rich, dynamic websites and they can even do with without programming.
"I think about how I used to fill my time with coding," Finkler writes. "So much coding. I was willing to dive so deep into a library or framework or technology to learn it. My tolerance for learning curves grows smaller every day. New technologies, once exciting for the sake of newness, now seem like hassles. I'm less and less tolerant of hokey marketing filled with superlatives. I value stability and clarity."
Yes, it's called getting older.
Get used to it - it's preferable to the alternative.
A good programmer
1) recognizes patterns that have occurred before
2) tries to hone his craft by following best practice
3) avoids novelty
4) looks for code online to apply to the problem at hand, rather than write it from scratch
5) values simplicity over cleverness
6) optimizes last
7) knows how to see past stated requirements to find the real business need
8) says "no" rarely, but when he/she does, they mean it
9) pays attention to words such as "always", "unique", "never", "required", "only one", "many" during analysis
10) doesn't grab a hammer, then start looking at every problem like it's a nail.
11) respects others! Not everybody may be the hotshot you are, but almost everybody in one situation or another can contribute insight or grind away on problems you'd find dull.
If you post it, they will read.
I think part of the problem is that lockout policies enforced by code signing, as used by Apple on iOS and by Sony, Microsoft, and Nintendo on their respective consoles, are designed specifically to prevent this sort of "casual programming".
I can communicate technical thoughts effectively, just not necessarily the "softer" thoughts that will get me past corporate HR.
I'm not interested in excluding people from programming. However, there seems to be an underlying assumption from many of the coding-for-all types that programming "should" be much easier than it currently is. I'm putting "should" in quotes here because when many people see that word, they start thinking in ideological or moral terms. That's not my intended meaning. I'm talking about the logistics of programming: specifically, the idea that we have unnecessarily heaped huge amounts of complexity on top of something that is actually quite simple.
In order to open up programming to the masses, it must necessarily be simple and easily-grasped at its core. This is not because most people are stupid, but because most people cannot afford to spend a great deal of time and energy learning the concepts behind it. As currently understood, programming requires a large investment of these things, and most programmers today, by far, are people who have made that investment.
Can that time investment be reduced? To some degree, it probably can. But there are limits to how far something can be reduced, and I'm not convinced that programming can be reduced to a degree that would bring it to the masses. My reasoning for this is that I'm not convinced that the core concepts are as simple and easily-grasped as they're often made out to be. They seem simple to me nowadays -almost second nature, in fact- but I've been programming for years, I studied for years before that, and things didn't really start to click until I was a few years into my studies. Even nowadays, I still get moments where something suddenly clicks and my skills take a noticeable leap forward. This is not a hallmark of a simple field.
I believe that most of the people who set out to "simplify programming" are not too different from me. They might have learned certain concepts at different rates, but the things that seem simple to them now did not seem so simple when they first began. This is, I propose, because they aren't simple.
I am not "elite." All I did was allocate my time a little differently, and in ways that not everyone realistically can. I don't begrudge them this, because a lot of them allocated their time in ways that I couldn't, especially not after I made my choice. I respect and appreciate the skills they have that I don't, and I don't think I'm out of line in asking for the reverse. What makes this state of affairs unacceptable?
Experience and training is not very important as long as you know how to write good code that's efficient and makes sense to others.
Except hiring managers trend to use the former as a proxy for the latter. They want to call previous employers to verify that a candidate's code works and makes sense.
Anyone can use it to build Web mashups http://design.inf.usi.ch/publications/2014/phd/saeed.aghaee
The problem comes when computing platforms have policies against programming at an amateur level. Platforms like iOS require purchase and renewal of a certificate before you can even run software you wrote on a machine you own. Video game consoles are even worse; even professionals new to the field may have trouble getting a devkit.
Heck we don't even have the equivalent of AMA that can sue people for programming without a license
Yes we do, as seen in Sony v. Hotz.
Then explain the "KERNAL" of the Commodore 64.
I'm less and less tolerant of hokey marketing filled with superlatives. I value stability and clarity.
That's easy. Just program in C.
You can't even start on iOS coding until you turn 18.
Actually even burger flipping requires specialization; but, there's a huge cut-rate market that's willing to sacrifice price for lesser quality. What most forget is that it's not just lesser quality of materials, it's also lesser quality of the workers.
and switches to OSX. Life is too short to waste it editing config files and compiling libraries just so you can play an mp3.
Finkler writes. "... My tolerance for learning curves grows smaller every day. New technologies, once exciting for the sake of newness, now seem like hassles. I'm less and less tolerant of hokey marketing filled with superlatives."
I feel much the same way, but I thought this was the result of me turning old, bitter and cynical...
The problem isn't that dumb people can't be programmers. The problem is the extent to which smart people can't be programmers if they want to have time for anything else. Really, how much of the complexity of the average coding task today is essential to the problem being solved, and how much is essentially having to know trivia about one platform or language (or version of either) versus another?
Well I'm making *two* Low Budget HDV Filipino Horror Movies in NYC.
Ignoring the racist whining, he has a point. Web programming really sucks. Even web design sucks.
HTML started as a straightforward declarative layout language. Remember Dreamweaver? Macromedia's WYSIWYG editor for web pages. It was like using a word processor. You laid out a page, and it generated the page in HTML. It understood HTML, and you could read the page back in and edit it. Very straightforward. You didn't even have to look at the HTML. Back then, Netscape Navigator came with an HTML editor, too.
Then came CSS. DIV with float and clear as a primary formatting tool (a 1D concept and a huge step backwards from 2D tables), Javascript to patch the formatting problems of CSS, absolute positioning, Javascript to manage absolute positioning... The reaction to this mess was to layer "content management systems" on top of HTML, introducing another level of complexity and security holes. (Wordpress template attacks...)
It's as bad, if not worse, on the back end. No need to go into the details.
All this is being dumped on programmers, with the demand for "full-stack developers" who understand all the layers. Cheap full-stack developers. Usually for rather banal web sites.
Not only is this stuff unreasonably hard, it's boring. It's a turn-off for anyone with a life.
... and never was.
Real programmers never touch those code walloper languages. A COBOL or Visual Basic 'programmer' is no more a real programmer than a PS3 Guitar Hero player is a real guitarist.
This. Thinking about the web apps I've written, most of them required fairly deep knowledge in the area of the app -- auroras, photography, specialized group management, history, genealogy, measuring instruments, Chinese, retail procedure -- all areas an interested party could potentially bring to the table.
But the tools to instantiate, manipulate and present those ideas? Those simply don't exist in "amateur" form -- I had to create them. And in doing so, I used knowledge starting with HTML and CGI and CSS, but which extended well into Python, (replaced Perl), C, SQL, a fair bit about the underlying structure of the host OS(s), knowledge of how to structure an application in the first place, and to wrap it all together, a fairly deep knowledge of what's efficient and what isn't.
Now I will admit that I am particularly resistant to Other People's Code, partially because I am unwilling to be subject to other people's bug fix schedules (or lack thereof), and permissions (or lack thereof) and functinonal choices (or lack thereof); and partially because the more stuff I write, the more handy tools of my own I have to bring to bear on the next problem that depend on no one but myself and the host language(s) -- which frankly is quite enough dependency for me anyway. Plus it's been writing all this stuff that's made me a decent programmer in the first place. So even if there *were* a library out there to generate general purpose readout dials, I wouldn't have used it; the result would have been the same. All my own code. Not the least bit reluctant to reinvent the wheel.
Still, the idea of making all that stuff both available and trivially usable (and that's what we're talking about here, because a non-programmer will have to hit this at a trivial level) seems to me to have been tried multiple times in multiple venues, and to have failed every time. Personally, I think it's because as programmers, we underestimate the complexity because we've internalized so much; we can't see the actual level of difficulty very well, because it starts out relative to our own skills. This has resulted in quite a few attempts to "make it easy", and none of them have hit any serious stride. The best any of these can boast is a small following making very limited applications, if you really want to stretch what "application" means.
I don't think the idea is ready to fly. The only context I can visualize this actually working is where you have some *very* smart software that can take an abstract description and write code *for* you. That software would have to be (a) very damned smart and (b) conversant with an enormous range of general human knowledge. Right now, as far as I know, that's the precise description of a competent applications programmer. And nothing else.
I've fallen off your lawn, and I can't get up.
Late to this thread but here's my flamebait:
I get it, javascript sucks. But what are the alternatives for a client side web app? I agree that Angular is a convoluted Java-fication of Javascript, Backbone is a buzzword compliant mess and Ember is sadomasochism. But vanilla javascript and JQuery for database front ends on the web ... what else? Actionscript? Call the server to recut pages every time?
I encounter a lot of hatred for Node - for instance php does everything so why bother - and while php feels yucky it seems to work, but Drupal makes easy things hard and Wordpress, once learned, is the only hammer ever needed ever, until I end up having to fix a broken site or, more likely, tell a new client that all they really needed all along was a few static pages and a JQuery calendar. The only issues I've encountered with node - mongo so far is php/mysql hosting is so much cheaper. But maybe I'm just a lowend web app guy and I'm missing the greater issues here.
Yes, but the proliferation of tools makes it harder to make sensible decisions about which one's are directly applicable. Copy pasting random stack overflow answers in and hoping they work is a regular practice, and it's the very embodiment of what's happened in the technical realms: information glut.
Worse: a lot of information, very little sense. Very few projects out there bother spending the time to trace their genetic roots, to find historical context where sense-making of information can even begin.
Application programming hasn't changed that much, nor has systems programming. OK, so the web was broken from the start. The answer is to stay away from the web and build something that actually works.
These are such tiny little warts. A) don't use global variables, perhaps 'use strict' if you want to be good. B) most languages have arbitrary bit limits. Holding up the floating point limit of 52 bits and making mock of that, but not holding up the 64-bit limit of integers? That's weak sauce accusations from sore fucking whiney babies. Oh you want to insist on arbitrarily deep numerical precision? Have fun crossing off a huge section of people that need moderately performant math.
Languages are all basically the same shit, with slight flourishes that everyone gets zealous and overblown about. Get serious. Go find something real to fight about, like how vim is so much better than emacs.
One thing to consider is the nature of the programs they use. Back when I bought my first home computer, the applications took keyboard input in well-defined ways and displayed characters and some very primitive graphics on a 16x64 screen. If you could program, and had a decent idea, you could write a program that looked about as good as anything out there. Alternately, you could change an existing program without breaking it (that's how my wife got into programming). A talented adolescent could produce something worthwhile, and get a feeling of accomplishment.
Nowadays, look at what's on my phone. Touch-sensitive, with high-quality graphics. The typical programmer simply can't do those graphics, and event-driven programming is harder to dive into than the old program-based control flow. The fact that these don't usually come with source code, and it's some work to build a development environment doesn't help, but I think these are secondary.
I've thought about simple programming environments (probably Python-based), but there's no way the average talented teenager is going to be able to produce decent graphics and sound, so they simply won't be able to make anything like what they can get for 99 cents or even free. What we really need is
"When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
Yes, well, the terminal was a much more sensible sane client that could take care of itself. We should _definitely_ go back to that on-the-line paradigm.
Those nasty jerks at the auto body shop wouldn't let me into their stupid club for losers because I don't know what a manifold is or how to change my own oil. Buncha motherfuckers! Excluding me from working on cars! Don't they know I'm a god damn software developer?! I'm IN that top echelon or some shit! I demand to be included in a field I have no fucking experience in, EVEN despite my lack of interest in it! Because RABBLE!
(And don't even get me started on those stuck up bitches at the knitting supplies store. Gertrude, Meredith and Susan can go fuck themselves.)
You are right of course it is similar to the 80's and 90's in that companies that wanted to steal the sales of other companies simply created new fangled languages and marketed the hell out of them instead of embracing what works and adapting it to the new paradigms. The only reason you can't use Turbo Pascal to make web pages is the compiler was never updated for the functionality but it very well could have been. In fact its progeny Delphi is alive and well and building apps for almost every popular platform out there today including the web. As long as there is competition there will be someone who chooses to create from scratch rather than use someone else's tool.
The web is not a runtime environment.
The reason you can't use TurboPascal is because web pages run in the browser virtual machine, and TurboPascal code runs in the TurboPascal runtime environment linked into the native code TurboPascal application.
You could target TurboPascal to NACL/PiNACL in Chrome as a target runtime environment, but effectively to run it, you'd be doing a JavaScript call into a JavaScript extension that then ran as native code in a sandbox within Chome. You'd, as a result, lose most of the TurboPascal runtime libraries supplied by the compiler vendor, and you'd lose all third party libraries and components, if the third parties weren't willing to port them (I assume you realize that you don't have all the Photoshop plugins on Windows that are available on Mac, right?).
Web languages, n the other hand, are predominantly for programming code on a server to generate markup, which is then interpreted by the browser to render output, or they are intended to run in a really limited environment in the browser itself, usually as unextended JavaScript (and, in the case of things like iPad/iPhone/etc., they are *definitely* NOT extended, since a UIView extension is not allowed under the terms and conditions for interpreting web content, since it's a huge security hole that's easily exploited with a DNS hijack).
Basically, if you are thinking your browser is a "platform", or you are thinking "the web" is "a platform" in the traditional programming sense, as the OP obvious is, then you are an idiot.
Follow any one stack of learning, "the Ruby way" or "the Drupal way" or "the JSP way", and you can create wonderful small-scale things that, while they might get mocked by the tech-weenie chorus, serve their function and make people happy.
Every hip language/framework/DB/deployment tool/bundler/markup language/food processor is designed to make your day better. Virtually all of them actually do just that (okay, a few will piss you off, but most are not intentionally evil).
The problem is supporting a world with 65 different technologies. It is indeed superhuman to expect someone to be a Groovy/Perl/Node.js/SASS/Hadoop/Puppet/XSLT/AWS/PCI-DSS/Postgres-tweaking/network-routing/desktop-supporting "web guy". (My current job wants that and much more, and, sorry, they don't actually have it in me. I hate faking it. I fake it.)
And, yet, much of the suit-wearing world doesn't understand that, and willfully doesn't want to figure that out. In 1998, they hired "a web guy". If they got successful, they hired five "web guys". Or 20. Those business-people are still looking for "web guys". People who are extreme generalists in "the web" in 2014 are either savants or on the hardcore burnout track.
If you've got a computer and net access, you can set up a good and well-documented development environment for free. You can access a vast array of knowledge in the field. You can get people to answer your questions. This is exclusionary only in that it requires a computer and net access, and while those are generally inexpensive and very common they aren't universal.
Once you actually get into the field, you'll find that you're in a fairly meritocratic community (it does have its prejudices, but TFS doesn't seem to focus on them). If you can code, you can be accepted socially. It can be more difficult to get a job, but that's true in every field.
Nor does it require being on the autism spectrum, or total dedication. The developers I know have strong outside interests and other priorities, and most don't seem to be on the autism spectrum. I'm successful in the field, and have been working and studying in the field for decades, but I don't remember any grueling training.
Edwards is, very simply, writing about a fictional situation. He may have a legitimate complaint, but I'd like to see how it relates to the real world before I address it.
"When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
I call BS on EMACS...
...and Emacs traces its roots back to something like 1972.
You can't "And Constantly Swapping" unless it's running on a machine with virtual memory and swapping implemented.
It seems that "regular people" are those that have more than one facet to their life. I wonder if brain surgeons or mechanical engineers ever think like this.
This tard actually thinks web programming is harder than mechanical engineering:
Yes programming is far worse than any field of engineering. I think we can quantify this, though I haven’t actually done the experiment yet. Stack up all the textbooks and reference manuals that a proficient web programmer needs to know. Include estimates for things like Rails that don’t even bother to have docs anymore. Compare the height to that for engineers in other fields like electrical or mechanical engineering. I believe our stack will be 10 times as high.
I'm a physicist. Before we get to the autistic thing, let's discuss this issue of wanting stability in tools. If you work in ANY highly technical field, you're going to see constant churn in tools and nomenclature. Some of it advances the field, some of it doesn't, but people will always be trying new stuff just to see if maybe it works better somewhere. That's the nature of a technical field. It will not stop just because you're tired. It may not be important to keep up.
You could say that "normal" people are excluded from physics because... all the same (incorrect) reasons in TFA. If you want to excel at anything, you'd better throw yourself into it. My brother is a contract lawyer, he loves reading and parsing contracts. My business partner loves networking, he is constantly looking for new ways to meet people and convince them to give us money. They each throw themselves into the details of their work to an extreme degree. They are also "normal."
It is beyond arrogant to assume that programmers have some special work ethic. YOU DO NOT. You're doing what everyone else does who loves their job.
Setting up environments and frameworks has never been more annoying and irritating in history. Even if I code something to be readable, I can't get anyone in my research group or circle of friends (all of whom HAD coding experience before 2005) who wants to take the time to get their entire environment setup just so that the code runs and things start making sense. I can't say I blame them, as they've all heard my screaming for days on end whenever I have to use a new language/environment/IDE/framework. The shit is brittle as fuck and is horribly unintuitive. Face it, the reason this problem is getting worse is because you "true" codemonkeys refuse to acknowledge that the barrier to getting anything worthwhile running IS getting higher on average!
The only thing I can still get noncoders to look at is LabVIEW. Because code is pictorial, even non-coders can understand what I'm doing. You are right that SOME people are not of the programming mindset, because even when the vast algorithm is shown pictorially (and of course is still nested with functions and libraries that you have to click through to understand), they can't (or refuse to) wrap their heads around what the algorithm is doing. HOWEVER, I'd say only 50% of the non-programmers I work with, friends and family included, show absolutely no interest in how the algorithm works, how to change/improve it, etc.
In my extensive experience in working with rusty/newbie coders, the algorithmic barrier of programming weeds out about 50% of the population. Maybe 80% if the algorithm gets ugly/big/bloated. But if you require setting up a kludgy/brittle environment, mountains of text, and bad documentation? Virtually NO ONE I've worked with who isn't already steeped in this shit wants to deal with it. At all. Ever. Most of the time I don't want to either.
Everyone here is already set in their ways though, so I'm not even sure why I'm posting this. My point is that once my PhD is done, I'm going to be building my own visual/pictorial/graphical language (no, not a "Visual" Studio, that is 5% visual) in small pieces so that 1) I can drastically improve my overall workflow and 2) make it so that the inevitable non-coders I work with can actually see what's going on and maybe even work on it themselves at some point. I've really been waiting for the community to step up and solve this in the past 6 years that I've been waiting, but things are instead moving in the wrong direction entirely and making the problem worse.
I've never been able to convince anyone to take action on anything, so the only alternative is to do the whole damned thing by yourself. Story of my life. At least I'll have something for my daughters to work with that isn't as ancient as I am.
AccountKiller
https://www.youtube.com/watch?...
Deal with it.
If you don't put in the effort or time to learn it, you wont be able to program. Plain and simple.
Regular people are excluded **all the time** from various professions because they're unwilling to dedicate enough time to learn it. Are we supposed to just assume that programming is different?
I'm so tired of this sense of entitlement where everyone they are entitled to everything with no effort. My guitar skills aren't that great - certainly not good enough to perform live acts to a roaring crowd - does this mean all musicians are elitist assholes and that music is simply unattainable because of it? No! It means I haven't dedicated enough effort to perfecting that skill.
BeauHD. Worst editor since kdawson.
Of lot of the problems in the computer industry stem from lack of proper well thought out standards. As well as the lack of licensing individuals and tool implementations. Diversity of implementations is good if the products adhere to standards. Everybody and their brother creating their own tool chains and proprietary (but open!) widgets that all solve the same basic problem has become the problem itself. We would still be in the preindustrial age if we were unable to standardize even basic things like thread patterns on bolts.
The software industry is the equivalent of recent HS grad noticing that his neighbor built a house using haybales (http://en.wikipedia.org/wiki/Straw-bale_construction) showing up at the city council and convincing them he can build a bridge over the local creek with haybales faster and cheaper than the local engineering firm. They proceed to hire, him and he in fact manages to build a bridge over the creek in an afternoon. Gets a lot of money, fame and further jobs. Its only 6 months later when the creek floods and washes the bridge away are the design tradeoffs apparent. By then, the kid has spent the money, moved out of state and is building cars out of cow manure for a large company.
No, they aren't.
*some* are...like HTML5 & CSS3, but those standards had to be developed *in opposition* to what the W3C wanted...which was, as GP pointed out...more of the same
GP's only problem is that they assume that the "enormous stack of kluges" was not done with intention.
Take the HTML standard and the fight between the W3C & the WHATWG....the W3C wanted to the new standard to include bits that make it easier to track what users do and use DRM, and they stalled any attempt to change the standard
Only b/c of the WHATWG do we have HTML5/CSS3, and a functioning internet to even discuss this issue.
My point? GP is right...why?
**many coding problems are by design to make artificial scarcity**
http://en.wikipedia.org/wiki/W...
Thank you Dave Raggett
"Perform open heart surgery in front of a judge while vigorously arguing a case on behalf of the guy who is having his heart operated on."
A Phoenix Wright/Trauma Centre crossover would make for an awesome DS game, though.
That's a misstatement. Sony isn't the equivalent of the AMA and they didn't sue him for programming without a license but for DMCA and copyright violations.
Sony had a simple rule "If you follow these rules you can play in our sandbox" He broke the rules.
What was Rob Limo's degree in? This PoS site was written in Perl. PERL?!?!?!
This whole idea that you have to be someone special to write a web app HAS to be a joke, because if you've ever tried to fix real web apps out here, you know the kind of "special" the vast majority of web developers are.
They are abnormal in the wrong direction.
"The bigger injustice," Edwards writes, "is that programming has become an elite: a vocation requiring rare talents, grueling training, and total dedication.
All the horrible shit going on in the world and you think the fact that people who are better and more dedicated to a thing get better jobs doing said thing than people who aren't very good or dedicated is an injustice?
Normal humans are effectively excluded from developing software.
If you're going to define "normal humans" as "people who aren't that into programming," what do you expect?
it doesn't have to be this way.
Why shouldn't it be?
systemd is Roko's Basilisk.
let's dumb down the job requirements!
The notion that common ordinary folks can't pick up programming today is ludicrous. The free software is available to anyone with a connection to the Internet. I taught myself Basic and assembly language at the age of 8 on an ATARI computer back in the mid-80s. Microsoft offers a free product called SMALL Basic that can be used to teach anyone to program.
the author's notion of "normal human" sounds like someone unwilling or unable to work to develop their talent. that might be common but it is not admirable.
computer science is young and will remain a fast-evolving frontier for many decades. as it is slowly tamed, less adventurous souls may participate. until then, anyone needing a profession where they can safely apply a set of unchanging, formulaic solutions learned in school would be advised to look elsewhere or be born far into the future.
I think we need ordinary people to write robotics programs to do open heart surgery.
So Programming is ripe with injustice because there are only jobs for people really good at programming, and a good attitude, kiss assing, and some charisma is not a substitute?
Troll is not a replacement for I disagree.
I'm saddened that someone who claims to have been programming since 1969 still doesn't get what it's all about. Programming isn't just sitting down at a keyboard and churning out reams of code. The whole process is incremental and involves good design, prototyping, testing (whether that's test driven development, unit testing, regression testing for existing projects, usually a combination of all), coding, acceptance testing. There was no mention of any of this, nor of source code control, nor build environments, nor continuous integration, nor release packaging and management.
And this is why "programming" on the web sucks so much: just like this article's author, management (and the general public) still thinks that programming is just sitting down and churning out a bunch of Javascript and Python code on top of MySQL and there's your "Internet Scale" application or game all done. Whaddya mean you can't do that today?
Q+A sites like StackOverflow are both a blessing and curse in this regard: often you'll find awesome answers to specific questions on StackOverflow, but those examples are rarely suitable for production systems since they contain outright errors and/or don't consider even basic things like security, multi-threading or scaling. The curse part of it is because so often you see people just copy-paste StackOverflow snippets into their project without any consideration for these sorts of issues. It works fine in development and testing environments but then fails in "interesting" and sometimes very dangerous ways in your production environment. The number of examples that allow for code injection and other vulnerabilities are staggering.
All people who consider themselves to be programmers, especially on the web, should read and understand the OWASP guidelines.
I hope it's not one of those complain about "my 'privilege' is not like yours so it's unfair"
"A computer is like a violin. You can imagine a novice trying first a phonograph and then a violin. The latter, he says, sounds terrible. That is the argument we have heard from our humanists and most of our computer scientists. Computer programs are good, they say, for particular purposes, but they aren't flexible. Neither is a violin, or a typewriter, until you learn how to use it." Marvin Minsky, ``Why Programming Is a Good Medium for Expressing Poorly-Understood and Sloppily-Formulated Ideas''
"The wisdom of the Patriarchs was that they *knew* they were fools." --Master Foo
How dare we not bow down to the expertise of those who know nothing of the topic. We should all start valuing the medical advice of common lay people & celebrities over elitist doctors as well. Why just the other day Jenny McCarthy was telling us about vaccinations...
That which is not dead may eternal lie,and in strange aeons even death may die
Several other languages have a 64-bit integer type. C++ does. Java does. SQL does. JavaScript doesn't. What's the best practice for a program written in JavaScript to represent the BIGINT type of MySQL?
they didn't sue him for programming without a license but for DMCA and copyright violations.
That's true in the same technical sense that Denys Vlasenko sues violators of the BusyBox license not for "GPL violation" but instead for copyright infringement. If the only way to program without a license is to violate Title 17, then in practice that's the same thing as banning "programming without a license".
Sony had a simple rule "If you follow these rules you can play in our sandbox"
One of the rules at the time was not to use hardware that was still being produced. The fat PS3 had been discontinued in favor of a new model without Other OS support. Assuming hypothetically that George Hotz had not exposed PS3 flaws to give Sony cause to disable Other OS in 3.21, where would one find a replacement for a fat PS3 console whose hardware had failed?
Normal Humans Excluded From String Theory Research!
Why should the slackers be prohibited from gainful employment in the String Theory field? (or is that supposed to be string field theory, I don't know I'm just a normal person)
Actually a more realistic comparison would be mathematician. Restricted to only those people who take the time to learn the minutiae, and yet there used to be openings for more normal people doing grunt mathematical stuff, compiling tables, working on a chunk of a larger calculations, etc.
People didn't complain about this stuff back before being a nerd became cool.
... but there is, unfortunately I should add, a difference between being able to program, and being able to program well.
The web *is* kludge built upon kludge. But when I see how younger programmers navigate this, they almost invariably fail at problems that have nothing at all to do with good tooling, or the web being a collection of kludges.
For example, people misapply cryptography, because irrespective of how many libraries you have that take away the hard coding problems, you need to understand the basic concepts to apply it well. Similarly, parallelism is hard - not because of a lack of tools, but because you have to think fundamentally different about algorithms. Now it's arguable that this is due to failures in CS education... on the other hand, most attempts at making these kinds of problems easier with tools have not met with huge success.
IMHO the article, while making some great points, also commits the common fallacy of assuming that just because simple programming tasks can be simplified greatly, that must mean that complex programming tasks must be similarly easy to simplify. Unfortunately, history has taught us so far that that's not true.
[Mind you, some things like composable concurrency are good starting points - let's have more of them!]
That may be true, but the real injustice is that 50% of normal people are excluded from having babies. It's a travesty, I tell you!
Typical AC - misinterpret what's there and add nothing.
Fuck you.
Or not if you were referring to the OP and not me :D
I don't like normal people.
The young'uns don't know any better (yet) and will go along with any latest fad put before them. If they get paid for it too, hey, bonus! And never mind the brain damage. Apparently all that counts is "shiny!" where TFA's author is growing out of that. He's getting old.
Personally I had to learn without a GUI because it was Just Too Heavy for my poor old 286, using it only for the occasional debugging session, when bearing the pain of debugging became worse than bearing the pain of the thing chugging along. Now, of course, just talking available computing resources I could well use an IDE, but though I tried several over time, the captive environment uniformly feels constraining and limiting rather than empowering. This perhaps isn't surprising given my programming style: Build from primitives, and moreover build my own primitives out of what underlying systems and libraries may offer, as appropriate for the program. This for a variety of reasons, like somewhat decoupling the program from its dependencies, but also, and not least, clarity of program and uncluttering my own mind. If you find yourself using foreign calls sprinkled all over your program you're not doing a good job of abstracting your program, and to unclutter that, yes, you may well need an IDE with all sorts of prettifiers, highlighters, indexers, correlators, support structure, perhaps even an AI someday. In contrast, to me emacs or even vim is overpowered and not what I want in a programmer's editor.
I've actually had servers say that to me.
Usual cause: trying to execute certain commands while logged in as a user that no longer exists in /etc/passwd.
Also known as "oops I overwrite /etc/password!".
Bonus points if you get this while logged in a root. An associate of mine discovered that it's bad to use system variable names when he had this one in a script he ran (as root):
deluser $USER
But on the flip side, it amazes me that some not-so-geeky people manage to make use of Arduinos. The whole package is a not-so-thick veneer over plain Atmel C programming, and yet it opened up the chance for many times more people than would have ever managed with the Atmel-provided IDE. And then there's Processing for an even less-geeky approach.
Web technology is just stupid... all the usual languages are bad ones, and even if you manage to find a cool language to develop in, you still have to use it to translate everything to XML and Javascript at the end. Web 3.0 will hopefully happen eventually. The language of the future should be declarative and imperative at the same time, extensible at the metalanguage level so that it can be adapted for every task on both client and server, and with elegant syntax too. I don't enjoy web programming as much as writing applications and frameworks, not because I couldn't learn enough about the technology but because it's kindof disgusting. And now it's hard to switch away from "the browser" to something else, because the replacement would have to be more compelling on so many levels that people would actually use it, and avoid getting corrupted too early with commercials and spying and malware and crap. It should be clean and elegant and there should be some kind of self-enforcing social contract that keeps it that way. I suppose that part is impossible though...
Yeah, you're so smart because you can code in 16 different languages, and do the same thing in 42 different ways. That's awesome. You're real special.
Except that this level of ever increasing and mostly proprietary complexity is neither efficient or functional. Much less modular, intuitive, particularly interesting, or enlightening.
Some people here say, well, he's just burned-out. Yeah, he's burned-out on the fallacy of being a rat on a wheel that goes nowhere.
You are delusion if you think you are elite as a programmer - you've sold a lie and you've swallowed it hook, line and sinker. You are as much a slave as any other drudge job. Of course, many ditch diggers really do like what they are doing; so too programmers. And this alone is why not everyone is cut out for programming and self-select themselves out of the profession.
The "exclusion" is no different than excluding people with bad eyes from flying planes, excluding people with who are blind from driveling car or excluding people with room temperature IQ from Mensa. It's utter moronic to say everybody gets to participate in all professions or activities even when they don't have the skills or predilections for it.
Do you really want substandard or non-self-selected talent creating mission critical software to healthcare, economics or manufacturing just so you can say everyone "participated"? Fairness for its own sake is bullshit if it results in suboptimal and cost or risk to everyone else. "Equality" of this sort isn't worth the price.
I totally agree with the article. For the application I am designing (admittedly a pretty special one) this problem means that it turns out to be easier to cut everything out and build a complete new system from first principles. ... and that makes it an almost impossible job to reverse engineer to build a new clean OS for even the most basic operation. The OS layer is the real reason that everything above has become so complex.
At the top level there just isn't quite the level of control there and delving deeper on how to do things at a system-API level reveals a nightmare world of complexity and still insufficient control. At the next level Microsoft is totally out because everything is proprietary and hidden and the licence basically forbids it anyway. Even Linux isn't much better once you dig down deep enough (though the documentation is there) - most practical installations depend on proprietary code - but even when that barrier isn't there this is a system (ie effectively a big program) that has evolved organically for decades. It gets immensely complex if you have to rewrite an underlying part of that system. But all of this is only getting to the real punch-line, that thicket of evolution doesn't end at the OS and goes right through the driver and into the hardware
If you really want a clean system for programming then its simplest to go with embedded microcontrollers like Arduino, or machines like the Raspberry Pi that is complex but is designed to hide it. Or if a little braver you can use Verilog or VHDL and use FPGA to literally build the whole thing up from the ground level. That way you can control everything. Of course doing it this way is why my dev timeline is 5 to 10 years rather than 2 or 3 years - but then my project is at the frontiers of research ... (cackles manically and runs off)
Below the speed of light Special Relativity is one of the most accurate theories in physics - above the speed of light..
The world is a complicated place. Everyone's job is complicated, it's just that after doing it for a while you get used to it, and it starts to seem easy.
Then when you encounter a new place, it seems unusually complicated. But it's not, any more that any other, it just new to you.
The reason that programming is hard, is that the world is hard. Better tools will help, but they woun't change the world.
If you think other jobs are easier, then try running the big single-disk floor polisher that the cleaning crew use. If you don't injure yourself, it will still provide much entertainment for the bystanders... 8-)
In 1980 I programmed operating systems by typing card images on a CRT through a primitive editor. Version control was a program which stored programs on a disk ( which has been renamed a hard drive).
The scenario you describe is how I worked in 1970.
I have never worked on an architecture which did not have an assembler. A primitive architecture was one which did not have a compiler for some high level language or other.
---------------
Steve Stites
I've been in the industry since 1981. In that time, I've been a programmer, a configuration manager, a systems engineer, and a computer science instructor.
It really does take a "special" person to be a computer programmer (or, if you prefer, software developer). I can usually spot the glint in these special people across the room. Are they autistic? Maybe, but I'm not a psychologist. They do have a special SOMETHING that drives them, whether it means they must learn the intricacies of JCL, Assembler Language, COBOL, or Ruby on Rails, to learn how to make a computer do their bidding.
It takes native intelligence (I've NEVER met someone with an IQ of only 100 who could program), organization ability, and attention to detail to be able to write programs successfully, whether the "programs" are in BASIC, VB, Java, or XML. I would say less than 1% of the population at large has the mental ability to learn to do it! Then, they must also have the drive and desire to get through all the hurdles to learn how to do it. Vive' le difference'!
I think that most comments in their thread miss the real story, and the issue of the OP does too. The real story here is that the economy has come to be reliant of an elite of engineers and developers who not only have discouraged other groups of people, but are by their very efforts making is harder for a majority of people to find rewarding roles in society by which they can support themselves according to the expectation that the job a person is paid to do or can create is valued. The digital revolution has erased many more jobs that it promised would be replaced by more creative and rewarding ones. This hasn't really happened. Instead more and more people have been marginalized, under-employed and just pushed off into poverty. Business people don't notice this because they see the efficiency gains as a short-term benefit while they don't have to deal with the longer-term effects. The income gap and the lopsided income distribution is a direct result of the application of computers to economics, whether to make a tiny group account for all the productivity in the economy or to allow for new forms of speculation and fraud in the financial sector. The other shoe has not dropped, but I think it will, and the population as a whole will begin to see the dark side of engineering and programming, not the rosy predictions made of technology boosters. It is not that we should put a stop to technology, no, only that we need to get much smarter about defining and measuring the side-effect and not listening to engineers who are very bad at predicting the future.
Much of this problem is due to old-fashioned political economics and economic theory that is like the blind man and the elephant. We let the people who see the short-term gain dictate our thinking rather than asking them to plan for five years or a decade. That is the fault of computers driving the emphasis on short-term ROI and of the tendency of people to be selfish. When the shine is off, these people with be made to pay in having a far less secure world. I would outlaw HFT and put a latency of all equities trades. I would discourage venture capital and other investment in areas where infrastructure is already stressed. I wouldn't let plutocrats move in and pressure the whole regional economy to meet the desires of elites. To simply argue that greed is OK is to invite the historical remedy which is not nice, it is what we are seeing in Central America right now, so heed the warning signs.
Software complexity follows Moore's law, an exponential law. So with a fixed set of tools, you are bound to reach a point where you can't code effectively. That's why we need either new sets of tools on a regular basis (e.g. C -> C++ -> Java -> ...) or tools that evolve over time (e.g. Lisp).
See http://xlr.sourceforge.net/Con... for another take at tools that evolve over time.
-- Did you try Tao3D? http://tao3d.sourceforge.net
Did I just wake up in a world where the only programmers are an army of autistic geniuses a la minority report precogs?
This is one of the dumbest things I've ever read gg.
This article feels a little egoistic. The author is saying "Only special people.. like me."
Are also excluded from professional basketball, being CEOs and astronauts. Anywhere that there is competition, there will be emergence of traits that are dominant for that domain. It's not little league. Not everyone is a winner.
I've seen code produced by non-programmers.
"No good deed goes unpunished"
Every high paying profession, and some low paying "callings", restrict acceptance and success to the peculiar people who fit a hexagonal peg into a hexagonal hole. Athletes to sports, good students with self discipline to medicine, outgoing good looking sexy people to entertainment and sales, semi-badasses to law, and Asberger spectrum folks to computing. I'm grateful to live in a time when My People can have the opportunities for social respect and high pay. (Think about it: the internet was built by guys in the MIT Model Railroad Club!)
Enuf said
Normal humans are dumb-asses who can't wipe their asses properly.
Who gives a shit if they can't code.
Besides, PHP has inflicted enough damage and made too many amateurs think they can be professional programmers.
Orthononality vs. Power of a language/toolset has ALWAYS been an inverse trade off. He wants very orthogonal (think "easy") stuff to be powerful, sorry, but that's not going to happen. Please go back for your degree if you want to really understand why.
Your modern bank still uses COBOL, but they don't develop all their front end apps in it, sorry. He's complaining about the web, but if he was right there would be something like Apple's dev environement for iOS (just to pick an example) that was just the bees knees and "anyone could do it!" Except there isn't and there never will be.
So, as crappy as platforms like AngularJS and jQuery are, all the other powerful platforms that actually don't suck as badly have the same exclusivity, even though they're less insanely kludgy.
What I got from the article is that the flood of people that call themselves Software Engineers when all they actually know how to do is configure 3rd party tools and at best write a few scripts to run stuff on the internet are finally being called out.
I think thats actually a good thing for restoring some value to the job description and to the currently low perceived value of skilled Engineers that actually can/do develop software from scratch.
when you said: "the Dewalt Model XJ-9 nailgun lasts 5yrs you can finish a helluva lot more roofs in that time than you could with a hammer" you missed a three critical points:
1. Those roofs do not require the continued function of that nailgun. If the tool is a piece of junk that will enable rapid productivity but then fall apart, those rapidly-buit roofs will none-the-less stand on their own and be perfectly good - while the tool can be treated like the first stage of a rocket: discarded having done its very productive job in a practical and economic way. This is not true for many software tools. Much of what passes for "good" code today is being used to build a very buggy web and often it either includes parts of itself into the result (as though parts of the nailgun your example cited embedded into those roofs and needed to keep working) OR it's used to build huge pieces of infrastructure for corporations, NGOs, Governments etc that are so wedded to those tools that re-doing them using different tools later will be a nightmare.
2. Even the worst nailguns do not typically have lots of random bugs their designers were not interested in fixing (because they'd moved-on to more exciting things, or fixated on the "look and feel") and which caused them to do things like randomly launch nails through the hands and foreheads of their users.
3. Nailguns do not come with a hundred dependencies (each of which has a list of dependencies of its own, each of which also has dependencies...) and they are typically designed by people who have designed the whole machine. Nailgun dependencies: [a] nails [b] power [3] a user. Far too many of today's so-called programmers have not written large parts of "their" code - they've included piles of libraries and tools (often coded in various different languages) which they often have not taken the time to fully-understand. The resulting codebase is more like a Jenga game (shortly before the end) than a Frank Lloyd Wright Building, architecturally-speaking. Will ANYBODY be able to re-build and use thes tools in a decade when all those thousands of dependencies are changed and many are abandoned projects? How about in 20 years? I still use FORTRAN "apps" from the 1970s... that's FORTY YEARS later. (I LOVE referring to FORTRAN programs as "apps" in the presence of younger coders...)
One great thing about the old piles of FORTRAN and COBOL code that used to underpin things was that it was robust, maintainable, fully-understood, and dependent upon very little... which is why so much of THAT code is still in use while people are already moving-on from things like Ruby or Rails (just examples, not an attack on Ruby or Rails or Ruby-on-Rails...)
Best post! LOL