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.
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.
"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
... 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...
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 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.
...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
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!
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.
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.
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.
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.
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
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.
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.
" 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.
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"?
"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.
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?
That's exactly what "these" people want. First they want to force more women into programming, then they want to force more children. Now they want to force Normal Humans into the trade. Newsflash author: learning programming is a low-cost barrier field so anyone with any interest in programming already knows how to program. If someone does not know how to program, they are not interested in learning programming.
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.
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.
It's two things, burn out and coming to your senses regarding shiny.
You don't need yet another way to write hello world. Not even if it's a web or mobile application.
Besides which, much 'new stuff' is just reinvented same old same old. The fact that some kid didn't know something was a solved problem and restarted development on a track (e.g. MySQL) is no reason for you to go back to DBase 3+ type technology. Let the kids fight with weekly preventive re-indexes. We already did it in the 80s.
John McAfee 'It was like that time I hired that Bangkok prostitute; to do my taxes, while I fucked my accountant'
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...
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
If you want a career in programming maybe, but most of the people writing spreadsheet macros and dbase forms in the 80/90 weren't professional programmers either. Excel and Access are still around, and can solve the same basic problems that they solved back in the 90's without the huge learning curve of ruby, rails, html, javascript, css, datastructures and algorithms, etc just to perform a couple fairly simple computations or graph some data, or create a couple basic input forms.
Sure the solutions created may not be professional programmer quality, or scale to millions of users, but they are often simple solutions created in a matter of hours for real problems being faced by real people.
Frankly, the web is the absolute worst platform for many of these kinds of applications because its takes a problem solvable by a non programmer in a few hours and turns it into a problem that can take a team months. I suspect that a lot of web developers would really have their eyes opened if they spent a few dozen hours slapping together a couple little applications in Access VBA.
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.
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.
I'm still waiting for the baby boomers to die off. Alas, since the Great Recession, they're fighting to stay on the job longer because they can't afford to retire. Bad enough I'm fighting off the whippersnappers biting at my heels for my job.
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.
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.
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
Thats what ubuntu is for.
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.
The web is not a runtime environment.
But web servers are.
The reason you can't use TurboPascal is because web pages run in the browser virtual machine,
Web pages are served by a web server, and the OP is exactly correct: TP was not updated to function well in a web server environment, unlike things like Perl that have modules to deal with CGI.
Of course TP doesn't execute on a browser like the javascript that is common, and web browsers will never see a pascalscript. but that wasn't the claim you responded to. "Make web pages" isn't just "run scripts on a browser".
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,
Right. And there is no reason that TP couldn't generate that output, except that it didn't get updated to to deal with CGI and you'd have to write your own library to do that. Or maybe someone has written one, I don't know. I don't care enough to look. I never programmed in it, I used TurboC.
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.
No, actually, he's quite right. It's a different method of programming, a different paradigm altogether. He didn't talk about programming the browser so that part of your statement is irrelevant, but as a design platform the web truly is different. At least before people tried to change a markup language into a full page layout and presentation language.
then you are an idiot.
You had a nice semi-informative argument but couldn't help but show your true color in the end.
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.
Which does not preclude an interpreter being written to convert the code into the browser VM readable code. Just because a language was originally designed to be compiled doesn't mean it can't be redesigned. Whether it's the best use of resources not withstanding.
All of your arguments are irrelevant to my comment. They might very well be valid but only because the people designing the newer systems made decisions that precluded the use of existing technologies. Which in fact validates my claim more than nullifies it.
"A person is smart. People are dumb, panicky dangerous animals and you know it." - K
https://www.youtube.com/watch?...
Not him, but I think you are the one that is not really informed about this.
First you keep mixing server and client side code. Client side is exclusively javascript, the other side does not matter, you can make a web app backend in any language.
And the web is indeed a runtime enviroment, as long as you are only talking about the client side,
You can consider web/browser just another compiler target/platform. And use Delphi or C++ or other "traditional" languages to develop to the web, using a compiler that targets JS as output.
There's nothing stopping you from seeing the browser as just another "platform". Indeed, with things like asm.js, you can treat it as just another cpu architecture. And with HTML5, most features that you need to make almost any kind of app are exposed (AFAIK, the main feature missing is proper sockets support)
No one forces you to use javascript, that's why things like Coffeescript exist. And for example with LLVM you can target browsers with any language that has LLVM support.
Note that I'm not advocating that it is the best solution, but in some special cases, like when you want to port an existing desktop game to the browsers, it is the best solution, like the guys from Unreal did with their engine, and the guys from Unity have already working on letting you use C# to develop browser games.
Also, no one stops you from using frameworks that abstract the UI stuff, so that you could perfectly make an app that runs on desktop and on the browsers, and works and looks the same, using any language (in theory of course, as long as tools exist). That's exactly what I'm doing now, I'm developing a 3d modelling app, using Delphi, and in future I plan to offer a demo version in the browser, so that people can try it without installing. And I'll just treat it as another platform to compile to, nothing in my app code will change.
So he is right, as long as Turbo Pascal was updated in 2014, you could probably use it to make web apps.
Targeting browsers with traditional languages that have small runtimes it is really not that difficult. Maybe you would find some framework or library that would not be compatible, but even in the web, I've found many frameworks that have trouble supporting all browsers, as some times they have features that don't behave the same or not exist in some browsers (this was worse in the past though, even IE is starting to behave way better in the latest versions).
And again, I'm not saying which approach is best or whatever, that really depends on the kind of app someone intends to develop, proficiency with different languages/tools, etc.
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.
"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.
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.
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.
"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.
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'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.
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-)
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
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"
Enuf said
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.
No, actually, he's quite right. It's a different method of programming, a different paradigm altogether. He didn't talk about programming the browser so that part of your statement is irrelevant, but as a design platform the web truly is different. At least before people tried to change a markup language into a full page layout and presentation language.
The problem with web applications - and the intrinsic problem of abstraction of the complexity that's solved by historical runtime environments that the OP likes, is that the render is independent. The whole article the other day about the Google device lab:
http://mobile.slashdot.org/sto...
Completely and totally underscores the fact that markup and rendering are separate from each other, and that the system doing the markup has to understand, and either have variant code that it outputs so that it renders the same in as many browsers as possible -- or you need an entire device lab, because you've given up on solving the problem, and are willing to employ someone other than a "Normal Human" (per the current article) in order to chip away on a per device basis, until you exhaustively cover all possibilities.
The separation on the render is the problem with the web, as a platform, and it's why it's * not* "a platform", it's "N back ends * M browsers" number of platforms.
This separation is the same mistake that was made when window management was separated from X windows, such that you didn't get the same look and feel on all applications based on having a particular X Terminal/X Server on which the render took place. In other words, the primitives were too primitive, and you ended up drawing boxes and lines and patterns, instead of "pop up menus" and "menu bards" and "dialog boxes".
What the OP in this article is bemoaning as being missing is a self-enforcing emergent property of the design decision to separate rendering from markup, and to separate markup from UI logic, and separate business logic from everything else. It's why web services are so complicated, and why they are so fragile.
The only thing that ever came close to dealing with the issue overall, at a high level, was WebObjects, and even then, it didn't try to do it in a way that was renderer/backend/middleware/security model/web server agnostic.
So again, I'm going to say that web services isn't a *platform* in the traditional sense of a computer running one of half a dozen 80x24 block mode terminals to front end a COBOL program was a platform, and that anyone who thinks it is ... is an idiot. At best, they are engaging in wishful thinking, if they think Microsoft, Oracle, IBM, and other vendors of these things are going to settle on a common programming paradigm, and turn themselves into commodities, which would result in about 1/6th the revenue they're getting today.
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.
Best post! LOL