Let Joe Average Help You Code
ploose writes "Apache co-founder and CollabNet CTO Brian Behlendorf says that programming should be opened out to non-developers. Bring them into a development community with proper feedback forums and bad code will get flamed anyway, so it doesn't matter what they write. From the interview: 'Mashups are really Excel macros 2.0 - with the rise of Web services, the more vehicles that are out there that expose data through programmable APIs, with Office 12.0 and Firefox with AJAX, the more people you'll see create applications. The line between hardcore developers and the average Joe will start to get very fuzzy.'"
Anyone remember back when every PC owner was expected to know at least a little BASIC? Back then computers were used for custom programs just about as much as they were used for shrink-wrapped applications. And if you didn't have the skills to write your processing program in BASIC, you could always hire someone to do it quickly and cheaply. (Program requirements weren't exactly high back then, so finishing a program in a day or two was quite common.) The question is, what happened to those days?
I suppose part of it was that shrink wrapped software got better. Where as you originally might have had trouble finding the software you needed, today you can get software for just about anything! The other part of the problem was that programming became far more complex of a task. Instead of just taking data in and spitting out a report, it now has to provide a cool GOOEY interface (MMmmm... chocolate), and real-time interactivity. These types of features are not so easily grasped by the average person, and require training to master. Thus programming has been squarly placed in the hands of experts.
If Brian Behlendorf wants non-developers to write code, he's better have another BASIC up his sleeve. (AJAX BASIC? Hmmm... I might have code like that lying around...) Because I don't think I could possibly take another round of Fourth Generation Languages.
P.S. Excel VBA was a lousy attempt at getting non-coders to program. Don't do that to us again. Please. Make it truly home and SOHO focused like BASIC was.
Javascript + Nintendo DSi = DSiCade
"bad code will get flamed anyway"
Everyone is welcome to join in hand help but if you do not live upp to our standards we will flame you forever! and call you a turd.
Many of the eager and excited hacks are by beginners, I think (^_^)
I'm still a beginner in python and I always intend to be a beginner
in one subject or the other. Maybe someday I'll be a beginner in the
apache project.
But alas, if he wants to collect patches from my mom, he better get ready
for a logic bomb.
--exa--
This is a fantastic way to achieve negative productivity. I know, let's put a thousand monkeys in a room with a thousand IDEs - that ought to get us some code! Most non-programmers are simply not trained to think in a rigorous way. Hell, most programmers aren't trained to think rigorously. That's why it's so hard to find good ones.
...none of us is as dumb as all of us!
Joe or Josie Average can barely walk and talk on a mobile phone at the same time. If you want to make toys for them to play with and create "neato thingys" great, but keep them out of programming before it dilutes the talent pool even more. I can just see these "average" programmers being duped into creating the next generation of malware.
GetOuttaMySpace - The Anti-Social Network
Many times peer review (or just review by someone else) can lend a lot of ideas and improve performance. Better performance --> Better Product -->(hopefully) Better Sales. Sounds like a good incentive for a company to put ideas out there. It is kind of the same thing as beta testing, but beta reviewing instead.
Not only "land of the free" but "land of the lawyers" who love a good old 1st amendment smackdown. Shihar 153932
The article links to another article, Why Johnny can't program, which is really good. That article has a good concept: That what we call "programming" is actually a hierarchy with shades of gray. C++ is programming. But is writing an Excel macro programming? How about programming a VCR? What if I write requirements and then code-gen a class hierarchy or a database schema? Programming is more than just writing code.
But the ZDNet article has the highest hype per paragraph ratio of anything I've read for a while. Web 2.0? Is that the buzzword replace Internet2? "Programming collaboratively?" And of course, AJAX & web services will make everyone a programmer. Some editor just linked a bunch of articles on similar subjects, threw in enough buzzwords, and jumped to a conclusion. Yes, everyone is now a programmer. "Sure grandma, I can set the clock on your microwave for you. I'll be right over."
Buy Steampunk Clothing Online!
Most of the developers I work with in contracting positions know less than the average Joe, even an excel macro would be stretching their abilities. Yet they all have Senior Programmer II titles or some such thing.
It started with VB, and will continue... More and more of these non-programmers start thinking they are developers, and getting hired into positions they don't belong in.... and America's corporations are paying for it in cold hard cash and wasted time.
Hopefully there will be a new paradigm in developer evaluation sometime in the near future, so that there will be a clear metric to determine a persons ability, and thus hire-ability.
Big ones, small ones, some as big as yer 'ead!
Give 'em a twist, a flick o' the wrist...
...it is with 'joe average' using only the tool he knows. For example, companies that use spreadsheets where they should be using databases. Heck, using spreadsheets with macros for 'code' even. You want joe average involved? Make him work with a DBA for the storage, but let him work on the 'interface' to that data using whatever tools he is comfortable with. That would be great because mr. average is definitely the expert in making an interface that makes his own job more efficient, but having the right back end ensures that all groups can effectively share their information (or not share as security dictates).
It takes a long time to become a good programmer, and even good programmers can produce some pretty sloppy code. I fail to see how encouraging the unwashed masses to pick up a copy of Visual Studio 9.0 and the latest "Learn To Program in 3 Minutes" book will actually result is less-buggy code. It would certainly create lots of crappy code.
Programming has changed since the days of assembler, but for anything more complex than a macro to calculate your GPA from an Excel document, it's still a mighty tough job. 25 years ago, you'd write something in assembler or C, it would take you 3 months, and it would do the same thing you can do today in a week in Java. Nowadays, you just spend 3 months doing it in Java because the applications are far more complex.
I can code data entry macros faster than anyone south of the Mason-Dixon.
[QUOTE]The line between hardcore developers and the average Joe will start to get very fuzzy[/QUOTE]
Not really - the hardore devs will be far more productive and be able to implement complex programs requiring algorithmic insight, the joes will be able to to implement stuff that requires simple logic and interfaces. Of course there will be lots of useful stuff that a joe could do, it just won't be the same kinds of stuff that the hardcore dev will be doing.
LetterRip
No.
So, with 1000 open source programmes working at 1000 dummy stations, they should be able to produce Duke Nukem 3D?
Funny sigs make your Karma go down.
I'm sure we all remember the Simpsons episode where his brother thinks that an "average guy" can design a better car then the "eggheads" he has working for him?
I don't expect the results from this venture to be as good as that.
Nuff said,
=tkk
Bill Gates - Creationist?!?
99% of users don't even want to open the help. This guy's smoking some collaborative utopia crack.
Sure, Average Joe would benefit greatly from even using marcos or knowing regular expressions, but the fact of the matter is that He would've 10 years ago too. What has changed in 10 years to somehow make scripting more accessable? Data accessability? Web apps? I don't think so.
I think I'm getting it. This is like turning every project
to Gnome, right?
Some evil voice inside me says that if you increase the number
of monkeys, random code generation still won't scale,
the number of possible codes increases exponentially with
code length.
What's worse, you need to increase the number of critics as fast,
so reproducing Shakespeare with a million monkeys strapped
to the keyboard isn't possible with that sort of "flaming
away". If you don't believe me, just browse the WWW.
Now, there is the hypothesis that the average joe will do
better than random code generation. I like that idea, but
in the end that just mean that learning how to code is a no-brainer.
I don't quite buy that.
--exa--
It is announced that the role of the "programmer" has ended. Either the new stuff is just so simple that anyone can do it without any training at all, or the machine will program itself as it learns what you want to do.
This has been going on since the beginning of 4th generation langauges, which came about in the late 1970's. There were actually some reasonable achievements which have been utterly lost now. But nothing that would replace programming completely.
While there is lots of benefits to including users into a project to make sure it remains useful and usable, this doesn't mean trying to help non-programmers join in the programming effort. It isn't the programming training they lack, it is the programming orientation towards thinking about the problem they lack.
What a horible idea,
wouldn't this just overwhelm the reviewers who now have to filter though all the noise?
nothing like bringing productivity to a grinding hault
The line between hardcore developers and the average Joe will start to get very fuzzy.'"
.NET snippets - Much
to the dismay of those of us who need to make everything
magically better when an "average Joe" actually tries
using some of these features and blows away the entire
2005 regional accounts receivable ledger.
No, it most certainly will not get fuzzy.
Billy G has tried for years to get the average office worker capable of making their own macros, then blobs of VB script, now inline
Like it or not, the average Joe can't do DIVISION. He can't add up a line of numbers without a calculator. Fractions hurt his poor widdle head. While we debate about whether or not to allow version numbers to go 1.8 1.9 1.10, the Average Joe doesn't even grasp why that poses a problem in the first place.
The average Joe likes the Imperial system of measurements. I rest my case.
So no, the line between coders and users will NOT blur anythime soon, or ever. Coders understand what those code snippets do. Users can barely manage the hotkeys to activate those code sequences.
Now... If you ask, "Will making it easier to write code snippets in common apps draw out a few more people with undiscovered coding skills - Yes. And Albert Einstein worked as a patent clerk. Don't make too much out of the connection.
Anyone who has done serious development knows that this is nonsense. Large software projects depend critically on skilled developers to provide a sound overall design - you can't just throw more people at the problem. The book "The mythical man month" argues this point quite convincingly.
Our organization currently has a headache when non-developers make an Access database, get their department relying on it, and then leaving the organization. When things break, the developers get sucked into having to maintain this monstrosity.
We're trying hard to disavow them completely, but it's hard to say no when the customer insists its part of a vital healthcare function. For those, we've sometimes rewritten them using a real SQL back-end, web browser client, and code we can support and maintain.
Making tools to let non-developers do things isn't necessarily bad, it's just that there has to be clear expectations as to support. Writing web applications isn't the same as typing up a Word document or making an Excel spreadsheet with a couple macros. It's easy for non-developers to quickly get in over their heads.
Why is it that nobody, including, apparently, slashdot editors, respects software development as a proper scientific or engineering discipline.
Do you think it is even possible for someone to suggest that a mass of "average Joes" (you know, those people that hardly passed SAT's) would provide useful feedback to mathematicians or physicists to improve their research? And yet it appears perfectly normal that they suggest to "programmers" how to make things better:)
Personally it appears to me that the value of user (that is what average Joe is) input is high when we discuss WHAT the software is going to do and how it will interact with the user. That is where his input ends and software design begins.
In fact I beleive that it is precisely this "utilitarian everyone-can-do-it" approach to programming that breeds scores of iterative solution (i.e. those solutions that are found by iterating over the entire set of possible results, for those "average Joes" that did not know).
Call this a flamebait if you will, but make sure the damn average Joe keeps his sweaty little brain out of my work!!!!!
I've always liked to think that good programming is 50% skill and 50% art. Why? Because sure you can get the final results (which mostly depend on skill) but what also matters is how you get those results.
Take a look at code written by well-know code shops, CS graduate students, etc. I'm sure that even though the code works, one wouldn't find a good percentage of that code acceptable by "good" programming standards.
Getting back to leaving the fate of the world to Joe Blow, assuming you can get past the "I can't understand programming logic" barrier, and you assume the availability and use of excellent programming apps (then you're just giving them something that enables them to generate code automatically while designing in a word processor) to make up for lack of skill, you will get code that is badly written, very inflexible and extremely unoptimized.
Hardly what I would call "programming".
Maybe we should let Joe Average try his hand at other things, too, like air traffic control or surgery. Hell, we already let him pretend to be president.
Eloi are stupid, throw morlocks at them!
#1. Either someone re-writes your code for you (unlikely)
or
#2. Every time you make a mistake ("mistake" being defined as doing it a different way than the person flaming you), you'd be informed of your ignorance via insults and told to RTFM.
WTF? That sounds more like a reality TV show than writing code. Only a masochist would spend time learning code that way (and being "taught" by sadists and people with ego issues).
There is no fuzzy line between programmers and people that can put together some basic Excel macros. Or more specifically, there's no fuzzy line between Application developers and people that can write macros. Writing a macro, for a real programmer, is trivial. Writing an application, for someone who only knows how to write excel macros, on the other hand, is an impossible feat, for the most part.
Application development isn't just understanding some basic logic and a few commands. It involves understanding a complex process, having an understanding of algorithms and patterns. It's understanding complex interactions between parts of the system. These are not things you learn when you write a few Excel macros now and then. Anyone who thinks otherwise is fooling themselves.
There's a reason colleges and universities offer B.S., M.S. and PhD degrees in Computer Science. Because it takes a long time to learn this stuff and it can't be learned without spending a great deal of time studying it.
Hell, there's not even a fuzzy line between someone who can write little C utility apps and an application developer.
The day when Joe Average can build real applications isn't coming anytime soon. That day won't arrive until computers can actually think for Joe Average and fill in for the huge gap in understanding.
There's a HUGE community of visual basic developers. All they do is pass around their ignorance. The community doesn't weed out the weak when the whole community is filled with the weak. I should know. I was a member of that VB community for 10 years. In my spare time I learned much more and moved on. But I'm not going back and helping out that poor community. The best learn more and move on. Darwin doesn't apply.
Developers: We can use your help.
Yeah, lower-level programming will continue to get easier. But by then the really slick programmers will all be working on....SPACE PLANS.
Seriously, imagine the problems yet to be hurdled in computer and software engineering, and consider the layman's ability to tackle those problems.
The sky is not falling because Joe Average is getting more computer-savvy. It's the other way around.
I can put on a bandaid and apply antibiotic ointment, but I don't claim I'm a doctor. I know what hearsay is, but don't claim I'm a lawyer. I framed my basement over the last few weeks, but I won't be building houses any time soon.
Ooh, a sarcasm detector. Oh, that's a real useful invention.
I say the coding by the common man wouln't be any worse then engineers codeing. Wich in my opinion is only worse then my spelling and grammer. ...
DUCK
If something is so important that you feel the need to post it on the internet... It probably isn't that important.
Although there will always be a need (or at least a desire for easy top level tools that user-persons can control, edit, and use), I don't think critical systems should have engineering input from inexperienced individuals of any job function. These individuals should spend their time better defining and documenting what they need to be done for them, not how something should be done.
It seems to be a cyclical thing - where some particular language/technology/idea is going to revolutionize business processes and eliminate the need for most software developers... I have yet to see such a tool/technology/language/idea work on a long-term basis.
The bottom line is that there is no substitute for trained/experienced minds wrapped around a software development effort - even basic things like development patterns (formal or intuitive) are not generally within the grasp of Joe/Jane non-developer.
In summary, I applaud folks for continually trying to improve development processes... but I think that users should deal with user "scripty" stuff, and leave the critical/long-term/important software development to folks who understand the task best. Similarly, if there is someone who "blurs the line" between developer and user, and does a good job of building maintainable solutions - I think they are really heading towards software development anyway.
A Passionate Independent Musician
I know an accountant. This guy is not a programmer by any manner or means.
Yet his spreadhseet are filled to bursting with simple summation formulae, and more advanced results. He even has a few if statements sprinkled in for good measure. He also records macros, carefully and with thought applied.
He also codes a lot in Access databases, regularly dipping in and out of the raw SQL. On occassion, he will even dip out to the command line, to what he refers to as "DOS".
After several years, he tried to get into VB programing, probably to try some VBA programming. It didn't work out so well, but the key point here is that this guy was a BS student. Not an honors BS student mind. The classic, "booze through college", BS student. Yet, to be frank, in a very real sense, he is a type of computer programmer.
He creates programs for computers.
He's able to do this because the languages he used are accessable to him. VBA through macros, spreadsheet commands, SQL through Access GUIs. If you asked him, he never realise he was actually "programming" anything.
Other people do it all the time. People create filters for their email. Shortcuts on their keyboard. Macros for their games and office apps. Change settings on their microwave or video or cellphone. Use TiVo. They are all creating, or more usually modifing, programs for computers. They just do it in a more restricted, but more accessable way than "real programmers".
End users need to be able to create programs if they are to really unlock the potential of the computer. They need to be able to easily create the most simple of programs, in a "language" that is so simple they don't even realise it's programming. They're not going to learn BASIC or Ruby. But they just might learn a little "Digital Radio Tuning++" or "TiVo on Rails".
Fisher Price Programming? Maybe. But it's better than nothing at all.
May the Maths Be with you!
I seem to remember in the early hype about OOP that OOP would end the role of the programmer. OOP was supposed to lead to a utopia where the end user would be grabbing and assembling objects to customize their environment and that the distinction between programmer and Joe Public would blur.
It seems to me that the actual effect of OOP was to raise the bar. Joe Public seemed to have a much better inuitive idea of procedural programs.
BTW, I've always seen the distinction between programmer and public as blurry. Every company I've worked with has had people engaged at different levels in the process.
programming should be opened out to non-developers.
Isn't that what PERL is all about?
/me ducks.
Stick Men
Joe Average can suggest ideas for a program, but there's no way in hell that I'm letting him work on it himself. I have a hard enough time helping those who are supposed to be CS/CE majors understand basic Java programming at my college.
Even at my internship I see terrible programmers, I'm updating a simple calendar program used internally. The code is done so horribly, with super redundancies and back assward logic, that I'm not sure how it got put into production in the first place. I've wound up just rewriting entire portions, instead of just adding the features requested (partly because I couldn't do the latter without some of the former.) Granted, I'm no highly-trained expert, but this stuff was just plain bad.
And this was made by a supposedly "real" programmer in the corporate world (in Coldfusion, no less).
I say we work on getting people who are already programming, but doing a lousy job, up to snuff before we start letting everyday people into the process.
Heck even an average code monkey is stupid. He can remember how to follow templates , use crystal reports, use select_ from_where, do for loop and drag widgets in MSVC . But they do not understand anything which goes beyond repeating a few proven formulae's. Good engineering or design? -forget about it . Many of them cant even properly use the tools they supposedly were trained on (you know how to effectively use debuggers, profilers ).I knew quite a few ppl doing databases whose designs were absolutely atrocious - they never could grasp such concepts as normalization ,consistence and good data modeling . About 90% programmers I met have no clue about object oriented design and architecture, yet they think they mastered it because they can grab an event from button press. Granted not all coders are that stupid , but many of them are, and those are professionals ,who supposedly learnt CS in college , and has years of coding experience .
.Like network administrators. Many of them have no clue about operating systems , networks ,software - they just know how to properly react to buzzwords . They are pavlov-trained how to use mmc applets, a few web interfaces , ping command and that's it . I met some who couldn't configure firewall even if their life depended on it - Anything which requires even slightest bit of knowledge they contract out - . And that's relatively good ones .Bad ones just ignore problems they are resistant to any new deployment /upgrade/maintenance for the fear of change till the network falls apart completely and/or stops fulfilling business needs.
,yet majority of them do incredibly stupid things (like pretending excel sheet is database and putting many thousands of rows in it , with lookups replacing select ,resulting in macros which runs for hours and crashes every other time ,while 2 dozen lines statement in SQL on a normal database does same job in 45 seconds )
,lol. They are completely lost when recycle bin is moved to different place on their desktop , or a menu item moved a few lines away. Jeez ppl need be realistic.
p.s. Same can be said about other IT ppl
Some smart ppl can do some macro coding
And this article talks about average Joe programming
Whassa matter? All you "citizen journalists" who relish tearing down the walls between 'old' and 'new' media, 'fan' and non-copyright-infringement fiction, and who enjoy 'empowering' 'musicians' and 'artists' with [your] software get kinda touchy when the job security seachange is on the other foot, eh?
"Art" is easy, of course, if you have the right software. But programming is "rigorous" and non-programmers need not apply. But... but... wait! I thought "code is poetry?"
This is all quite amusing; thanks for the chuckle.
I think the idea is NOT to make so-called "average joes" into programmers like today's programmers by giving them a copy of intelli-j or whatever.
The thing to do is to have really good tools that allow domain experts to "program" for their needs, and thus take out the middle man-- you, the grumpy "rigorously-thinking" programmer.
Honestly, I can't believe the arrogance of some of the comments I read on here. Some of you asshats think you are god's gift of logic to the world.
line between hardcore developers and the average Joe will start to get very fuzzy.
no, its still there. plain and clear. hardcore programmers write the API, and the script kiddies still write lame little "hacking" utils that really dont do much of anything useful.
The line between hardcore developers and the average Joe will start to get very fuzzy.
But if your job or your life depended on it, I think the logical choice would be to go with a hardcore developer.
He who knows best knows how little he knows. - Thomas Jefferson
Using http://javascript.internet.com/ makes you a DHTML *programmer*? Or do we need more fodder for http://www.thedailywtf.com/?
Somehow, this scares me...
Programmer: "So what features should we put in this accounting program?"
Joe Average: "I want a horn here, here, and here. You can never find a horn when you're mad. And they should all play 'La Cucaracha'"
The line between hardcore developers and the average Joe will start to get very fuzzy.
:( ). However, I am utterly unqualified to design, and even less construct any worthwile artifact of mechanical engineering (like, a well-designed bridge crossing a normal river).
Says who?
The line might change into one between software engineers and 'casual' programmers. The last group are people who previously would not write computer programs, but are now also able to create quick solutions to practical everyday problems. Which is definitely a good thing IMO.
On the other hand there are what I would call software engineers: people who know how to design and construct software in a well-structured manner, who know what they're doing because they are experienced and know the tools of the trade: the capability to choose the right level of abstraction in their designs, and to select the right programming languages/frameworks etc. for the job at hand.
I think it is possible to draw a very clear line between people who have these capabilities, and those who don't.
You could compare it with normal, mechanical engineering: I know the general laws of physics, gravity, some basic things about properties of concrete, wood and steel. Using this knowledge, I could probably build a bridge across the 6-feet wide creek in my backyard (except for the fact that my house doesn't even have a backyard
I would say the line between those two is pretty clear-cut, right?
Every expression is true, for a given value of 'true'
I never understood this backwards idea that as time goes on everyone will be a programmer! (when really, there was a time all computer users could program...)
Has everyone become a mechanic? Has everyone become an electronics repairman?
The point is most people can hardly turn their computer on. It's getting *harder* for them to use computers as they become more complex. Computer programs have also become much more complex. Therefore computer programming is becoming more and more specialized. Now you have programmers who only program certain types of things and it's going to move this way more and more.
Until you invent that magical compiler for that magical programming language which "just knows" what to make, this is never going to happen.
"If you are a dreamer, a wisher, a liar, A hope-er, a pray-er, a magic bean buyer
I totally agree. It's so easy to say, "why aren't more people helping out on open source?" Many people want to, but the programs don't lend themselves to easy modification. So what if I get the GIMP source code? Does that tell me how to find where to modify transformation X and then recompile the whole thing? Honestly -- how many people *who know C++* are capable of actually making sense of the source code for an F/OSS program written in that language? As a fraction, wise guy. If we just made the program code more accessible and easy to understand, torrents of new people would assist on any and every project.
Rank my idea: http://www.sinceslicedbread.com/node/531
Gee, are we suffering a programmer shortage? Is anyone being paid big bucks and stock options to jump companies this year? Were recruiters lined up at your door and ringing your phone off the hook with job offers last time you were looking for programming work?
I don't think we need more programmers yet.
But this would be great fodder for Dilbert -- Scott Adams are you listening?
"It's the height of ridiculousness to say for those 9 lines you get hundreds of millions."
Man, if Linus thought Dijkstra hated him, imagine what Dijkstra would have thought of Mr. Behlendorf.
Joe User doesn't even know how to make an Excel Macro.
Joe User thinks computers are "magic".
Joe User and all his buddies laugh beer out their noses after one of them gives the local nerd a wedgie.
Even if you teach Joe User to write code, he will never care whether the code is Good.
What you say is true, but there are two fundamental problems:
1) These types of users sometimes attempt to create a fully realized system. Then when it gets beyond 40 users, and it starts tanking (recent real world example), then what happens? Either they're just hosed, or they have to call in the big guns - real Application Developers. We usually find its easier to start from scratch than attempt to work through the code to figure out what exactly it does. I can't tell you how many of these I've seen in a production environment.
2) More importantly, in many cases, management thinks these guys know what they're doing. They manage to create some little access process that stores a few thousand rows of data, with an Access Report frontend, and suddenly these guys are "Programmers". Then they give them an assignment that ramps up beyond a few hundred thousand rows, the "app" blows up in their face, and now there is a great big emergency and my team suddenly gets a priority shift to replace the stupid Access process in an unrealistic amount of time.
Access, excel; they're great as long as you stay under a certain level of complexity. Most users/corporations don't know where that line lies, and when they step over it, the consequences are often disasterous.
// harborpirate
// Slashbots off the starboard bow!
...and you'll get a lot of idiotic code. Hell, it's hard enough finding trained programmers who don't write idiotic code, I can't imagine untrained "Joe Users" using consistent design patterns and not reinventing a lot of square wheels.
In order for bad code to get "feedbacked" into good code, it will have to be read and understood and commented on by people who have the skills to have written it in the first place. Who is going to do that to "Joe Users" code when they could be more productive writing fresh code in the first place?
The next Cmdr Taco duplicate will be ready soon, but subscribers can beat the rush and see it early!
Did he ever actually ask himself if the average Joe WANTS to do this?
How about asking me first?!?!
Joe or Josie Average can barely walk and talk on a mobile phone at the same time.
I agree 100%. This is why they make "hang up and drive" laws.
but keep them out of programming before it dilutes the talent pool even more.
And I kind of disagree here. I think having a lot of crappy programmers out there will dilute the talent pool - but that's a good thing for us.
Let's say ABC Corp. wants to hire a new programmer, but back in 1990. Odds are (because the pool isn't so diluted yet) they can find a decent one fairly quickly. Now fast forward to today with the diluted talent pool.
XYZ Corp. wants a programmer. So they hire one at $X, which is the going rate. And odds are, he sucks. If you've ever hired a few paper MSCE guys, you'll know what I mean. So XYZ is going to have a much harder time finding someone who can actually get the job done. After wading through a few lousy programmers, if they have even a half a clue they'll up the salary once they find someone who actually can do the job. After a few bad experiences XYZ will learn that paying a good salary is far preferable to hire-fire-get nowhere.
And as far as I can see, this will be the trend. To illustrate the point, I have a BSEE and write software drivers for a living. Not too long ago I was thinking about going back to school and getting a Comp Sci degree, since that was what I was basically doing anyways. And found out my university had changed their core programming language from C to Java. I bailed. My first thought was "who the hell is going to do the next generation of drivers and low level code?" Not this lot, I can guarantee that.
The next generation of programmers are screwed. Before long, a prerequisite to a decent programming job will be grey hair. You watch.
Weaselmancer
rediculous.
Everytime somebody writes some VBA or Excel macro code, another consultant gets a BMW.
All you GOOD programmers out there-- think back to the first year of programs you wrote back when you were not much more than an average Joe. >
For all the Joe's out there: Anybody can carve a steak, but that doesnt make you a brain surgeon. Anybody can write one or two lines of code. But somewhere around 4 lines, things start to break or act funny if you don't know exactly what you're doing.
Try taking a look at the current crop of SEDA style ESB's like Mule. Programming a sophisticated, scalable, application is nothing more than wiring components together.
Its been 20 years since the idea of "Software IC's" was proposed, but I think we are getting close.
Of course, if non programmers wanted to program, they would be programmers.
>> programming should be opened out to non-developers
Anyone who worked in a large software company (such as Microsoft, for example) knows this is already so. There are tons of people who can't write good code to save their life and have only one skill - they excel at brown-nosing. And they do pretty well. They do drain life out of those who can code, so if their percentage increases beyond certain threshold those who can code leave for greener pastures and projects fold.
So, is it time for a new Hypercard ? I'd say yes. Do we want to make it Ajax ? Probably not, or at least non-visibly. JavaScript and XML have terrible syntaxes for non-programmers and way too many pitfalls for everybody's good. But yes, I'd say now would be a good time to reintroduce L4Gs, preferably open-source. Heck, if anyone is willing to start a project on this, please contact me, I'd be interested in joining.
Oh, and just for the sake of design, I'd say that this language/ide would need
Anything else ? Anybody interested ?
This troll is over. You can now resume a normal activity.
Microsoft managed to extend it into a monster, but that's Microsoft. (Visual Basic, like FrontPage did not come from Microsoft; those were acquisitions.)
It's amusing that the Wikipedia article for "Mashup" begins with "To meet Wikipedia's quality standards, this article or section may require cleanup."
Ok...The average Joe can't program a VCR perhaps thats why we now have DVD's.
As development gets dumbed down, it lets guys like me kludge together stuff but, for the average person, they have no interest in programming anything.
and let my cat finish my code
Joe Public was able to create some rather complex database applications with the Paint Feature in Advanced Revelation. It seems to me that many of the DOS based 4GLs were starting to live up to their promise. The hype of 4GL was only a little bit beyond its reach.
The advent of OOP was accompanied with a large number of business articles about how OOP would re-engineer the whole world. There were quite a few books like Taylor's Business Engineering with Object Technology that were promising a complete transformation of the business world. I had attended several presentations that suggested business leaders would learn to speak UML and out would pop full robust applications.
While the techology itself was not overpromising. There was a substantial amount of pie in the sky hype in the business community.
Actually, job security would probably be assured in the situation he describes. Anything "Joe Average" writes, beyond a certain level of complexity, would be so bug ridden and inefficient as to be unusable. So complex code would either require a trained (or talented self-taught) programmer to write in the first place, or require the same programmer to debug (usually rewrite) the crap churned out in the first place.
Worst case scenario, slightly less overhead is involved in the process (less managerial and "process" jobs) if Joe Average can code well enough to give the skilled programmer an interface model for the program.
Back when computers were new to the desktop people would spend all day long f**king around with them trying to get something to work to produce results that could have been done by hand in a shorter period of time.
Managers would spend all their time dinking around with their computers instead of managing. It gave the illusion that they were busy, busy, busy, but in reality the amount of work that was actually getting done was dismal. I saw more than one perplexed manager get dumped this way.
I don't think people are as deluded today. Of course the software is better, and people are smarter with it, but when something special comes up, people are more willing to delegate it to those who can deal with it, and content to wait for the results. That's the way it should be.
Proverbs 21:19
There could be something to this. Until this year, my only experience as a programmer had been in high school. As in, I wrote BASIC scripts on my Atari 800. It was a big part of my identity at the time, but it hasn't been for about 20 years. Now, all of a sudden I'm finding myself doing all sorts of things for the small company I work for. I'm just finishing up a medium-scale system that will track our fairly complex accounting systems. I took it upon myself to do this: A) because I saw how inefficiently it was being done previously, B) we can't afford a real programmer and C) I saw that I could do it, even though I haven't been in the programming game for ages, because I had started toying around with Rails just out of curiousity. I'll admit out front that any of you could probably write the application I'm building more quickly than I could, and in the language/platform of your choice, and it would likely look a lot better and more flashy than my version of it will. But my version functions perfectly so far, and it'll still have some advantages. I know our needs first-hand, so I know going in what we need done -- we don't have to explain things to an outsider. Down the road, if we need to tweak or extend it, I'll be able to do it myself. How much of this is due to Rails and how much is due to the fact that there was a buried little programmer inside me itching to get out -- that I don't know.
This is absolutely right! I personally had to deal with a monstrosity of a user-developed Access database that was "unofficial" at one of my previous clients. The time wasted on support was unbelievable - tens of thousands of dollars. Some of the neat things we had to deal with, were things like a person's name being stored in one field instead of first, middle, last. You know...database 101 crap. And the reason we had to deal with that is because that's how the database started. When users are involved in development, you have to deal with BS like this. With experts, you don't. That's why we call them experts. They know most of the "gotchas" (or at least they try to know).
The company? A fortune 500 power utility company. The application? Their entire bill-generation system. Scary. But 100% true.
Though, to be fair, you'd need an understanding of DOM as well.
John McAfee 'It was like that time I hired that Bangkok prostitute; to do my taxes, while I fucked my accountant'
. . . Access is teh bomb!
I have a degree in Computer Science and worked for about 5 years as a software developer for an aerospace company. I then went back to school and did my MBA. I am now a business manager at a college. Yes, I have now become Average Joe.
In my new Average Joe life I find that have almost no reason to program what-so-ever. Sure I can write C++ code but since I went back to school I have only had the need to write the occassional Excel macro (and only about one a year at that).
The point is, that while it may be possible to build tools that allow Average Joe to program, he has no need to. Yes it might make software development easier - but don't tout it as a means to bring the non-developer into the fold.
Whoever decided that calling these things Mashups should be taken out back and shot. Whenever I read that word my brain does a little fart and I think that I'm a little bit stupider for it.
The thing that makes a programmer valuable to a company is that they design their solution. They don't just hack something together real quick for the boss to make themselves look like a genious.
I work as a software developer at a very large company. It just sickens me when a manager contacts our team and asks something like this, "Hey, I was going to have one of my employees throw something together real quick in Excel but I'd like it to be more dynamic and on the web. Can you make a quick web version for us?" First of all the "quick" version is just that - a Band-Aid. If it is to be done right a few days of thought and design is required before any code is even written.
MS Office solutions (Excel/Access) amount to only poor working prototypes. They rarely support more than 1 user and security, performance and maintainability is aweful. It also gives the illusion that software development is quick and easy.
A good software developer will develop a proper solution to the problem not just a simle spreadsheet macro or MS Access program.
No matter how "easy" you make something, people will inevitably figure out a way to not have to do it. As has been pointed out by other posters, there's a certain capacity for programming that the "great programmers" seem to have but the wannabes don't. So what if more people begin to use application scripting or visual markup languages? Who cares?
There's some special characteristic of natural languages that make them more expressive than the artificial formal languages used in science. Although the natural language is more expressive, it also allows for ambiguity, which programming languages do not. I believe that in order to be a competant programmer one must be able to think and reason formally in one's own natural language. Many speakers of English I have met who claim to be "hackers" can not even write a program in English. The idea that, in a dialogue between two people, one can beg for understanding with a phrase like "oh, you know what I mean," does not fly when your interlocutor is a machine. This simple fact alone is enough to frustrate all but the most determined computer programmer, regardless of the task at hand.
Anyone can learn to program, but it takes a lot of hard work, and it helps to start when you're young. You don't even need to know a "programming language" to be a programmer, you just need to know how to write a program, especially in your natural language. Learning the syntactic translation from your natural language into programming-language-X is like learning how to set the microwave timer. Learning how to cook food is a lifetime pursuit for most people, but it can be done in a matter of months or years with a little bit of talent or effort. Once you know how to cook food, learning how to set the stupid little timer on your microwave is a piece of cake.
And another thing, also already mentioned in other posts... What the hell is up with the buzzword bonanza in that article? Some of the more buzzword heavy sentences don't even make sense to me. Could that be a bit of irony? As if to say "yeah, even the author of this horribly written article could be a programmer".
Oh shit! I forgot to click "Post Anonymously"...
"the average joe knows how to divide and use fractions you elitist snob."
Know doubt. The GP underestimates the average Joe. In fact, I recently read that 5/4 of all middle-school students have mastered fractions!
Seem to recall that only 3% of college freshmen have the mindset to code anything non-trivial. That means there are at least six billion ape descendants out there who should never, ever be allowed to write a program.
The problem is there are too many "Average Joes" *now* who either think they can write programs, or who think they can manage programmers. Many of these people are so totally clueless it's pathetic. Part of the problem is Microsoft who leads the way by its terrible example:
* Ship a program with known bugs, and act surprised when the customer finds it. Gives them more time to figure out a fix, you see.
* Deadlines and ship dates are made by the Marketing Department, or Customer Service, not Engineering.
* The first thing to be eliminated when facing an impossible deadline is testing.
* No functional or technical specs: tell new programmers to "just read the source code: everything you need to know is in there". Also known as "I'm sorry, EU, but we can't share any documentation for our protocols, because all we've got is the source code"
The worst Average Joe programmer problem I've seen (and it's common):
* Bad Visual Basic programmers who think they can write good, working OO code ("What do you mean I'm not supposed to use GOTO?")
Now, if you'll excuse me, I gotta take a core dump...er...I mean I gotta take *care* of a core dump...
"My country, right or wrong; if right, to be kept right; and if wrong, to be set right." --Senator Carl Schurz (1872)
Let Joa Average Code. Let underpaid indians code (or run your call centre, or maintain your systems). At least the indians are trained, even if they show no initiative and act like computers themselves (do only what is asked, or perform exactly to the documented process, and nothing more).
Any day now, actual talented programmers will be relegated to being hermits, perhaps writing open-source systems for the hack value, and a very lucky few may be able to feed their families from it. The rest will be making a living as high-rise window cleaners, staring at all the Joe Average coders in their former offices, who in turn are staring at Windows displays of Minefield 2007 and not actually coding at all.
Why would any good developer want to waste his/her time rereading/fixing/suffering from the same garbage over and over and over and over and over again. Because that is what you are going to get when you let a bunch of non-developers 'help' you with a project.
You can't handle the truth.
A small amount of good code is worth a lot more than volumes of crap.
Engineering is the art of compromise.
I think the headline of this article is simply deceptive in order to bring in the sort of publicity that the article has already received (say, from slashdot?) because he is not saying normal people should program, he is saying normal people are now able to get results similar to programming from things that programmers are making. Including users in the "development process" is vague enough that it doesn't mean anything. That could just mean that your salesman has to talk to the users and tell you what they want. Hey, they've been included. The practice of having a headline that says something only somewhat related to the actual content of the article is starting to become more commonplace. These kinds of articles get more buzz, because they say that the article contains content that is more interesting than it actually does. The content of the article itself is simply too vague to be saying anything of real value.
Behlendorf is a smart guy, and who knows what spin the reporter put on his comments. I'm sure Behlendorf is happy to see mashups and people getting into programming with a more simple programming language then, say, assembly. But this concept in the mind of a pointy-headed boss can lead to unpleasantness. I worked as a sysadmin once in a level 2 environment where they were trying to or thought they had made an idiot-proof wrapper around everything for us, but the idiot-proof wrapper itself had problems, so we not only had to deal with broken systems, but with the broken idiot-proofing they had tried to wrap around the systems.
SQL was designed originally so that even non-technical managers could use it. I have worked with SQL for many years, and still have to look for examples on Google whenever I need to do a LEFT JOIN or something like that. The concept of "anyone can program" can be dangerous in the wrong hands.
I remember when the Marketing team would tell the Project Management team what they wanted, analysts would spec it out, and developers would write to the specs. Then Quality Assurance would test it. There is a growing trend that Marketing believes that any change in the specs go directly to a developer, Project Management believes that you really aren't coding as much time as you are logging and thinks that throwing the coolest new programming concept is the way to go, and Quality Assurance no longer wants to just find out what doesn't work, but wants to see the code to help you find problems.
Everyone wants a hand in the development at one point or another so that they can get credit when it goes right, but crap on a developer the second something goes wrong.
You are in a maze of little twisting passages, all different.
When they said that Cobol was so like English that
just anyone would be able to code in it.
emt 377 emt 4
You just had to keep them well away from compilers (other then FORTRAN), any sort of project management software and most especially Access.
I'm sure I will smoke many turds in purgatory for teaching them how to OLE automate their crusty old Access apps. Thereby allowing them to kid themselves into thinking of them as Objects they are reusing. Which is in a sense correct. They're amazing brittle, high overhead objects from hell's annex (Redmond). They continue to run them today though I've long sense run away. Nothing that gets installed on a customers computer will ever just go away, you need to hunt them down and kill them or someone will be supporting them forever (the herps forever, not marriage forever).
John McAfee 'It was like that time I hired that Bangkok prostitute; to do my taxes, while I fucked my accountant'
Hey! Don't make fun of Imperial Measurements! They actually are functional, in that they require the "Average Joe" to do less thinking.
... and so on.
Ever wonder why 12 and 60 were "magic" measurement numbers? It's because they've got lots of factors, so you don't have to deal with lots of fractional values. For example, 12 can be evenly divided by 2, 3, 4 and 6 (yeah, I realize that 2x3=6). 60 can be even divided by 2, 3, 4, 5, 6, 10, 12
All this helps people like carpenters avoid evil rounding errors - something all geeks should be more than familiar with.
Imperial Measurements are a good thing, with very pragmatic reasoning behind them.
I think that many people who are programming today, and even leaving code long term deep into production systems, should be kicked out of the field, when they don't really know what they're doing and have had a two years training of "programming-is-a-bit-like-spelling-out-a-cooking- recipe" style Java drill.
Programming requires an intellectual discipline, and an understanding of abstract mathematical concepts that is just not anybody's. Then we'll see systems working much better.
>> programming should be opened out to non-developers. ..and from the same think-tank:
Brain Surgery kits could be sold at Home Depot
Sure any monkey can program, but there's a world of difference between hacking out code and architecting a solution. Just as in the real physical world, anyone can put together a bridge, but when you really engineer something you take into account other things that contribute to the lifetime and integrity of the solution. For making physical bridges this might include materials science, physical design modeling, stress analysis, usage modeling, etc. For software development this includes data modeling, business workflow analysis, network/load simulation, data performance analysis, etc.
Not too long ago I was thinking about going back to school and getting a Comp Sci degree, since that was what I was basically doing anyways. And found out my university had changed their core programming language from C to Java. I bailed.
Computer Science doesn't teach you how to program. CS teaches you how to think like a computer scientist. The core language taught is immaterial. For example: Big O notation is the same in C or in Java. Data structures don't conceptually vary. Doubly linked lists are doubly linked lists. You would fault the CS program for abstracting away from implementation (i.e. a higher level language)? Getting a CS degree will make you a better programmer no matter what language it uses
Disclamer: I majored in Computer Engineering and hand optimized token ring networks and constructed CPUs in VHDL on FPGAs before I learned Swing. Now I am a Java programmer. College teaches you *how* to learn, not what. University!=trade school.
Why, o why must the sky fall when I've learned to fly?
If I had to interview people for a developper position, here's what I would do : I would ask them to write a "sort" function, preferably in whatever language they would be assigned to work in. And then I would review their code with them, not really paying any attention to whether the thing actually works or compiles or not. What I would ask them is "tell me why your code works". From there:
- VERY BAD ANSWER : "It works because look, I wrote a quicksort"
- QUITE BAD ANSWER ": "It works because it compiles and look, I give it this particular list and lo! I get a sorted list back."
- SOMEWHAT REASSURING ANSWER : "It works because I wrote this test unit and I analyzed the range of possible inputs and generated this stimulation set that covers all the border situations".
- WHEN ARE YOU AVAILABLE TO START ? : "It works because what I want is for the resulting list to contain all the entries in the input list, and only these, and that I want each element of the resulting list to be less or equal to its successor. When I call function qsort, as you can see here this particular line in my code means that the result will have its pivot in the right position, so by applying this invariant recursively, etc..."
Access does'nt just blow up 'one day'.
It blows up more and more regularly untill one day it won't run at all.
So for it to get really bad, they have to ignore the fact that they have been working around bugs often for years, for example, falling back to a nightly online backup of their key Access database about once a week. Competent managment sees this as a problem and has a replacement in place before the Access/Excel process fails completely.
Sometimes just importing all the objects in their app into a fresh 'database' will buy you the time to build a replacement. Just don't let them think 'With this new workaround we'll be able to continue running billing in Access for years more!' If they've let it go to the emergency stage they'll likely try. Watch carefully, find the weasel, corner the weasel with his/her boss in a private meeting, be carefull.
Back to my main point. Access apps in key places are only one symptom of a chickenshit organization. Scratch a little further and you will find many more. Never be employed by such places, contracting for them is another question.
John McAfee 'It was like that time I hired that Bangkok prostitute; to do my taxes, while I fucked my accountant'
But yes, my college professor once told me that there is a "Software Misunderstanding" in which the software development process is underestimated. That's why you have Mr. Pointy Hair coming in and asking Mr. Tech to cook up something quick just for him to have something to write in the performance review. Or when you have a bachelor's in CS and compete against 2 year programming school technical programmers for the same jobs. Or when you see listing in your favorite job hunter website asking for somebody with a MSCS, know how to code device drivers, create programs in Open GL, known system administration in S-390, Unix, Windows, MacOS and BeOS; known 4 different RDBMS and get paid 20K a year. Regrettfully a lot of managers do not understand what it entails to provide good quality software other what they learned in school or while managing a pig farm.
I also think that everything has its place. Full blown commercial grade software must go through software implementation methodology, being this Traditional, Extreme Programming or any other new programming paradigm that some MBA clown comes up with.
But, there are times that you need something simple that you want to use to solve an immediate need. I think that when Average Joe could concentrate into realistically learning how to solve his/her computing problems using easy RAD tools. Nowadays basic computer understading is taught through schools, I do not see this as far fetched and RAD tools have been available since time inmemorial. I think that at this end, this might be a realistic goal for Average Joe if they do not want to become computer scientists themselves.
My 2 cents...
Vi havas e-poston.
You've missed out on top-spot anyway, so why not go read the article before you post?
First, this is in no way "novel" or "new". It already works (sometimes it's called Open Source, although that's not what the article is about), and in my mind works a whole lot better than programming what you think the users need and then getting complaints because you was dead wrong (as you always are since there is no "avarage user" and even if it where chances are that the "avarage user" is not you).
Second, nowhere in the article can I find the part where he suggest that you just let Joe Avarage hack away at what he likes to "make better" ( =screw up). There are parts of a program that will be easier to program and stuff that probably require a team of hardcore devlopers to do properly. Let the hardcore developers concentrate on the stuff they're needed for, and chances are they will do this better than if they had to do all the boring stuff they've done a hundred times before.
Third, you might have missed it, but there's actually a whole lot more to software development than just hacking code. Designing user interaction and interfaces comes readily to mind, since most programmers outright *sucks* at this, but why not help those willing to do boring stuff like testing or documenting program? I know I would be glad to have someone do this stuff, but what do I know, you might think that's the best part of a project.
Fourth, people are usually more content with what they've helped create, so this is in fact a great way to keep the end-users happy (assuming this is in-house development, but that's what I think the article was about).
Now go and be elitist someplace else!
"Let Joe Average Help You Code" No cause I want to keep my job.
Not even Wikipedia is that stupid as to apply it to MediaWiki. We should try it with Slashdot:
Slashdot: News for Nerds. Stuff that badger badger badger
[This website is a stub. You can help Slashdot by adding to it]
Tubby or not tubby. Fat is the question
...then we'll see who should write software.
Will this be before or after Joe Average learns what an application is?
Stupidity is like nuclear power, it can be used for good or evil. And you don't want to get any on you.
I'm sure this will take off. Let's think of a time when someone decided to market a language on the basis that anyone could understand it...oh yes, Java! It is the paragon of expressiveness and power! And super simple to boot!
Eventually, programming will not be a programmers job. Like in Star Trek (bear with me...) in the end it will only be about concept and getting the point across to the computer. I think when Joe comes in with non typed higher level languages, this is just a step towards that. It's just evolution. However, there is not much new in it. 1982 BASIC as mentioned above is less complex than Joe's tools today the guy is talking about. Also, remember that Joe's stupid brother Bill could be a web developer in 1998, but today it actually grew more complex (scripting, XML, AJAX, etc.) and shuts all Bills out. The original HTML was for Bill. (Although there are some nice tools for Bill now.) I'd argue we took a step backwards as I'd not underestimate the complexity of the explosion of interlinked technologies an average web developer must cope with. I've programmed in assembler when it was frowned upon to use C (for the lame and stupid) back in the 80ties, I've done C/C++, LAMP and now LAMP/AJAX, and let me tell you, there is no such thing as a lack of complexity in web development, it mostly exists in the heads of hardcore C/C++ programmers who like to think of themselves as higher on the evolutionary scale. So, hey, I managed to (dis)agree with both guys at the same time. No I don't think it should be a programmers job. But, yes, unfortunately it is and has become more so.
I am sure that everyone that programs for a living has encountered code written by the 'Average Joe'. There usually is little, if any, documentation, nothing planned, and bad structure etc. Shortly after the program becomes useful to the company, 'Average Joe' is no longer around to maintain the code, or he can not get it done in a timely fashion.
This program is now a requirement in the company, and it needs a major overhaul to get it working with the new Ordering system, or what ever application. Professional programmers are now required since no one else but the 'Average Joe' can understand what was happening. Also the code is so inner mixed with other processes, that the maintenance is now almost impossible.
Professional developers bring a level of sophistication to the program, and maintainability, re-use, that today's software environments require.
Get a good professional programmer, and then 5 'Average Joes', and give them a current project that is more than a complex macro in a spreadsheet, and you will see why this idea will not work. You pay good money for good programmers, and there is a reason. There are still bad professional programmers, but they are hopefully the exception, instead of the norm.
More == better, if you're getting paid per line.
"Yes boss, those new lines after ever word are necessary. And those comments containing the entire text of the Lord of the Rings series, well... I hear our customer is a Tolkien fan"
Stupidity is like nuclear power, it can be used for good or evil. And you don't want to get any on you.
This kind of attitude has caused the largest problem with the public's perception of software development.
"I got it to work, so I must be a programmer. See it isn't that hard."
I have worked at a company that used one of those 4GLs and actually had subject matter experts writing code rather than driving requirements. Some of the constructions that got put into the core product were very hard to maintain and caused certain customer driven customizations and enhancements to be either impossible or extremely difficult (one of the selling points was that you could customize the software somewhat to fit your business model).
This attitude was also a big cause of the dot bomb. If you could spell computer you could get a "software engineering" job.
These people don't know the history of computing and so end up re-writing things that have already been produced and are well known.
Of course I've also seen this kind of thing work well for Microsoft as they actually brag about SMP (Symmetric Multi-Processing http://en.wikipedia.org/wiki/Symmetric_multiproces sing) and CLR (Common Language Runtime http://msdn.microsoft.com/netframework/programming /clr/default.aspx).
DEC had asymetric processing with their VAX 782 processor in the early 80's. If you insist on Intel hardware, we had multiple 80186 and 80286 processors sharing memory in one enclosure running our business in 1985 (80186 and 80286 processors are 8086 processors with extended instruction sets) running a multi-processor predecessor to MS-DOS called MP/M (CP/M, the single processor version is what MS-DOS was based on).
Common Runtime Libraries (RTL) were the way everyone else has always done it as far as I can tell. You called the run-time library or operating system the same way from each language (the syntax was different, but the resulting signature was the same). The compiler took care of making the linkages correct. Microsoft finally normalizes their languages to use a common RTL and pretends it's a totally new concept.
C++ is programming.
No, C++ is self-flagellation.
College teaches you *how* to learn, not what.
I realize that. Hence, my success in software development when my degree is a BS in Electrical Engineering. =)
University!=trade school.
True enough. But learning Java first, and C later on as an add-on IMHO will leave people unprepared. To me, learning Java first makes the university seem more like a trade school. Seems like if you learned how to program having, say...a garbage collector behind the scenes doing its magic, you might not write good C code having to meticulously pair up your malloc and free calls. You have to learn to do that first, then having a garbage collector seems magic and liberating. As it should be.
And while it's true that college isn't a trade school, after you get out of school you're going to want a job. Best to be prepared, and all that.
Weaselmancer
rediculous.
The line between hardcore developers and the average Joe will start to get very fuzzy.
The people that think this are not hardcore developers.
It is akin to believing that because modern dietary supplements are so good, the line between hardcore Olympic athletes and the average Joe will start to blur.
Nonsense.
Don't put advice in your sig.
... and judging from the sheer volume of garbage software out there, most programmers are ALREADY on the wrong side of the line!
He's obviously never tutored an info-sys subject at uni. Marking programs submitted by CS degrees vs commerce degrees in the same subject clearly shows you need training to write proper programs.
Are they trying to test the theory of having a thousand monkeys produce Word?
Sure, and while we're at it, let's let any dude off the street design bridges, perform medicine on people or pilot aircrafts. It's not like you really need this people to be professional engineers, doctors or pilots, right? What could possibli go wrong? Errr... Possibly go wrong.
On the other hand, I, for one, am looking forward to the torrent of new content on The Daily WTF.
Sounds like 10000 monkeys typing for 10000 years will turn out another MacBeth. So we just need a little bigger IT staff and a little more time..... Or maybe go back to letting the pro's do it. You remember us, the ones that write the code the whole world runs. Why does anyone become a developer these days. You get all the respect of a janitor. People bow down before engineers that usually couldn't write anything beyond "Hello World" without screwing it up but still the idea that anybody can write software persists. Anyone can write a novel too guys but how many Steven Kings are there?
My experience with spreadsheet macro developers (MS and Lotus) who grow bold is that newbies have horrible "prediction" skills and factoring skills. Prediction skills is the ability to guess where future changes are fairly likely and make the code able to handle those without needing total overhauls or lots of rework and digging. That ability generally requires experience in maintenance.
Second is factoring. Newbies are just plain terrible at factoring commonalities into subroutines and other sharable/resusable code techniques. They use mass copy-and-paste even more so than a trained-but-green programmer.
Yes, people can probably repair their own car, but doing such may not be economical when you factor in total labor and cost. Doing X and doing X economically are two different issues.
Table-ized A.I.
> MS Office solutions (Excel/Access) amount to only poor working prototypes. They rarely support more than 1 user and security, performance and maintainability is aweful. It also gives the illusion that software development is quick and easy.
What about the 90% of cases that only need to be working prototypes? They rarely need more than 1 user, and security, performance, and maintainability don't matter. MS Office gives the user the ability to develop simple programs quickly and easily.
Sure, it means less work for us programmers, but I mean... if they can do it, and it's good enough... then let them. Save your skills for the problems that they can't solve... there's enough of them for you to make a career of.
My other car is first.
. . . if these "average Joes" want to learn to program, why don't they just get a book on Java or C++ or something?
www.linuxpenguin.net
My girlfriend was looking into changing careers, so I suggested looking into programming. She knew nothing about programming, so I picked up a Visual Basic starter book, and she read the first chapter. She actually got something working and even played around with it after the first few hours, but after that she said, "Screw it! This is boring!"
Even though she probably could do programming, she doesn't have the personality type that wants to program. At best, it's a chore for 99% of the population... but more honestly, they would probably despise programming. Most people hate programming VCRs.
Making programming more accessible to regular Joe's is not the right solution. Leave it for the experts. I would say 80% of current programmers out there right now suck as it is, and these people even enjoy programming.
> They rarely need more than 1 user, and security, performance, and maintainability don't matter
NO DOUBT! If I had to create every Crystal Report that someone wants at work, I'd shoot myself.
While CR isn't a language, it's not much less complex than VB.
Apache co-founder and CollabNet CTO Brian Behlendorf says that programming should be opened out to non-developers.
Dude - if you want code that sucks major dick, just do what every other major corporation does and farm it out to India.
Glonoinha the MebiByte Slayer
state both their business problem
When did "application logic" transmute into "business logic"? Not all the code I write is to solve a problem relating to business.
Any program relying on (nontrivial) preemptive multithreading will be buggy.
What happened to the golden days of shipping the development tools to all? Apple IIs came with a debugger and a BASIC implementation in ROMs. Early Macs had HyperCard. There was a lull, and then AppleScript started floating around. (Apple seems to have recently figured out that improving application support for their platform was a Good Thing and shipped Xcode, and has had Cocoa out for a while.) When QuickBasic was a little more up-to-date (DOS days) it was pretty useful.
Now, sure, I can go use gcc on a Linux box. But there aren't really currently any useful development tools on a stock Windows box. If you use QuickBasic, you have a very crummy little IDE to use. Microsoft really should ship some kind of remotely decent and up-to-date development environment *with* Windows that the average Joe can learn to use to some degree. It doesn't have to be high-end, but it should be something that people can whip up quick little apps with to solve small problems.
Charging for your development environments never made sense to me. It's like charging people to make a mod for your game. It only improves the value of your platform -- why would you ever discourage them from doing so? What about DEVELOPERS DEVELOPERS DEVELOPERS?
Unix is the king of this. The command shell itself has a (useful for very limited tasks) programming environment, and most Unix folk have a collection of perl one-liners. Perl probably isn't the greatest choice for a beginner to learn -- the huge array of syntax makes it difficult to learn, IMHO -- but the idea of having a handly little language that lets you accomplish useful scripting and programming for free and bundled with the OS is, I think, quite valuable.
Any program relying on (nontrivial) preemptive multithreading will be buggy.
Just because you wrote something in VBA does not make you a developer. Most VBA code in Excel is just plain crap. Those who wrote it are the same folks who use access as a backend for there database app. Again pure crap.
Why not just program via a BOT.. let it write the crap for you. it's cheaper..
Like my AIM bot DFWEBBOT... just add him to your contacts and program away.
Back in the days of Lotus Notes version 3, it was very possible for Joe Salesguy to write a viable business application in formula language on the plane ride home. Many of those guys ended up in IT development writing Notes applications. A small percentage of them survived when object oriented programming languages started to show up with Notes 4.x and became real programmers later, learning Java and other languages.
My point here (and please, lets avoid a "Notes Rules/Notes Sucks" thread) is that with that tool, enough of the business value was present in environment, that a little formula based scripting could create secure, useful applications.
That's missing in most of today's tools. Some of the Portal projects had lofty goals of bringing it back -- take a bunch of corporate web service based widgets and stitch them together to build business logic. So far as I know, none have really succeeded.
The problem with quotes on the internet, is that nobody bothers to check their veracity. -- Abraham Lincoln
... an analogy as to how programming is done today and how much easier it can be and why it needs to be.
http://wiki.ffii.org/IstTamaiEn
AS a matter of dealing with software patents and the scope of non-novel...
some additional relative reading on teh patent issue:
http://lists.osdl.org/pipermail/priorart-discuss/
Which is a mailing list trying to address how to make existing open source software available to teh USPTO in their searching for prior art.
But if Programming is made easier, even automated, then it becomes common place like using the hindu-arabic decimal system today, instead of the Roman Numeral system for math,.
Software will never be genuinely free until it is easy enough to create that the typical end user can do so by directing the computer to do most of the work (like the fictional Star-Trek holo-deck is programmable by a child).
the subject says it all.
"I know, let's put a thousand monkeys in a room with a thousand IDEs - that ought to get us some code!"
Bill Gates called, he wants his half-baked idea back.
Please note that no monkeys were harmed by flying chairs during the writing of this joke.
Good point. I'd say a large percentage of what corporate end users need are 2 things. 1) Reports and 2) Workflow solutions.
The sticky point about reports is that the reporting is easy it's the data input interface/program that requires expertise (GIGO). And there is really no simple workflow solution out there. That almost always requires a programmer of at least medium skill.
Humans are well-equipped to accept visual input. We have good pattern recognition and high bandwidth for visual processing. So it is no surprise that people are happy in a graphical environment that shows them much of what they want to know using rich graphics. What is surprising is the eagerness with which they discard language as a medium for outputting information.
Most people are bad at expressing themselves exactly using pictures or gestures. It is only using formalised systems like language (or sign language) that we gain the abstraction necessary to express ourselves about things we cannot see or that have not happened yet. Common problems can be solved using nice interfaces that allow you to do only 'the right thing'. Once you reach Turing completeness, however, it is provably impossible to stop someone from screwing up in ways that are undetectable by the system.
This is the core of the problem. Most people want to give vague directions to an expert and have him use judgement to deliver an acceptable solution to the problem. These people are not heavy computer users or see the computer as a means to an end . They are probably best served by custom apps that do the things they want to do very well with low risk of error. Other people need computers on a daily basis to complete complex tasks that are unique to their situations. Analysts, accountants, engineers all need computers to do exactly the thing they need done in exactly the way they want. For these people, a system of choosing the 'correct' options soon turns into an extreme challenge in itself. Excel is Turing complete, but it is damn near impossible to imagine elegant ways of handling some of the problems I have solved with a few lines of Python or Matlab code.
What I am trying to say is that this idea of people being reluctant to program is only valid because we have actively discouraged the use of precise language to describe problems. We have encouraged people who lack the means to express themselves by saying that they should be allowed to use a more 'forgiving' interface. There will always be a trade-off between power and ease of use. Somehow, we have come to believe that it is ok to spend 15-20 years mastering a native language, but mastering an environment that allows you to communicate with a computer should take no less than a few days. What kind of expressive power can we expect then?
Languages aren't inherently fast -- implementations are efficient
Hi everybody,
I don't know if I am an average Joe but I am decidedly a non programmer.
I certainly hope you wouldn't hold this against me.
I vaguely worked with basic and logo turtle and didn't get very far then.
I am now working in the medical field.
I always had the inclination to do some programming.
I always have ideas that say if only....
I fully support the notion of having non programmers for programming.
I think those people(non programmers) certainly need the inclination and the technical mind to translate basic human daily problems into programming logic and then code.
For example, I want to program a rota for a hospital. I want members of the team on the rota to change it and for other users to view it. The best way to do this is on the web.
I have a plan of my design. Then I am stuck in what software to use. How much I have to pay(any good open source software?) and what effort I have to go to.
I think these are the main issues surrounding getting non programmers to code.
By the way do any of you would care to help in directing me?
-jan
May Peace Prevail On Earth
When I see the amount of horrendous Notes/Domino databases, Excel macros, SAP reports and weird Intranet web sites, I think it would be time to have some tools that allow people to write good programs (whatever that means...), not more to write bad programs.
I could write a long rebuttal to all this crap, trying to explain why it is so important that "non professionals" are involved in programming, but it will probably be a waste of time since it will get a -1 flamebait rating. And here on
Let me quote Einstein instead:
Regards
So, the old Chestnut comes around again.
:-)
One of the aims of COBOL was so managers could read, understand and amend programs. That's why it has such a verbose pseudo-english syntax.
Anyone remember ADABAS's NATURAL language? Guess what that was claimed to do
Back in the late 80's when I first started out as a coder a company took a lot of ad space in the computer press to advertise 'the last one', which was a 'programming system' that was so powerful but easy to use that managers would develop there own systems and programmers would all be out of a job in a couple of years. Needless to say it sunk without trace.
SQL itself was originally marketed as being something managers could use. Heck I even went on an introductory course in the late 80's where there were managers and programmers present. Utter disaster of course.
Anyone who's been any form of computer consultant must have come across the user-developed Access database application. Usually a codeword for an unmaintainable nightmare waiting for a rewrite.
None of the above is not to say that users can't extend systems. If I'm putting a Access/SQL system into an office I usually like to put in a 'Expert User' Access system so a technically minded clerk can play around with (read only) sql and generate their own reports - a day or two's basic Access course can really boost productivity and keep simple maintenance requests out of my hair. However one has to be *very* careful to set up the sandbox correctly. I suppose this is what the article could mean by user programming, but if so it's (a) nothing new and (b) more akin to changing your own oil on a car - useful but hardly qualifies you as a car mechanic.
What I would really like is another layer That would take fuzzy specs, let me take an example quote:
"Give the salesmen the opportunity to plan their visits and handling of their district/area of responsibility."
To beat that into a real detailed spec of WHICH inputs should the salesmen give, WHAT views should they see and HOW they should be able to plan. I don't mean as actual code, but I mean down to the level of layout, fields, options, formats, formulas, filtering options (browsing, drop-down, freetext, radio-buttons, checkboxes), default filters, grouping, flags, stoplights, escalation, reports and so on.
Project managers don't seem up to that job, a lot of that is minute detail and not really manager-level anyway. But if someone could do that job and give me a proper spec, the actual coding would go a lot quicker. In my experience half the time is either spent a) beating it out of the customer or b) the customer coming back saying "that's not how we want it to work".
That should be exactly what these types of programmers are good for - they understand basic UI concepts but don't know how to build a proper back-end. If they could work that out in detail (if you have some good UI tools perhaps design the UI itself, but not one line of code), then you'd free up lots of programmer time that actually know how to program.
Live today, because you never know what tomorrow brings
Some people have much longer names. And I mean really, really long names.
f dscxhgb7kc?method=4&dsid=2222&dekey=P.+V.+Narasimh a+Rao&gwp=8&curtab=2222_1&sbid=lc06b
http://www.answers.com/main/ntquery;jsessionid=2b
That is a fairly short name.
I can throw myself at the ground, and miss.
A few years ago I tried writing some code in a modified version of ATARI BASIC known as Turbo BASIC XL. Turbo BASIC is much nicer than regular ATARI BASIC, it allows rudimentary named subroutines and multiline IF's and runs a fair amount quicker than regular Atari BASIC.
I've been programming in *real* languages now since about 89 and here's my experiences with it.
1) The Linenumbers were a *horrible* mental stumbling block. I ended up saving the file in ATASCII and loading it in VI so I could arbitrarily move about. The loss of mental clarity is rough when typing LIST 1000,1200 - oh missed end of that subroutine, try again LIST 1000,1250, OH DAMN top scrolled off screen. (The atari equivalents of CTRL-S and CTRL-Q become your friends). Finally now I see it - Now what was that bug I was looking for Hmmmmm...?
2) Perhaps the *worst* problem with it is the fact that it supports undeclared variables. One typo and your not going to get the response you expected. E.g.
1000 ATTACK=DIFFLEVEL * TIMEELAPSED
1010 IF ATTACK 1 THEN
1020 'Continue updating universe state
1030 ATTACKTYPE = INT ( RND ( 1 ) * 5 )
1040 NUMATTACK = INT ( RND ( 1 ) * 10 * SKILL )+QUADRANTCHAOS
1050 GLOBALSTATE=CSTATATTACK
1060 ELSE
1070...
1080 ENDIF
1090 EXEC UPDATEMODEL
So let's pretend we actually can have NICE LONG DESCRIPTIVE variable names... Anyway, so you screw up one variable name, say you type QUARANTCHAOS, and suddently you've got a nasty bug. This is *really* painful and hard to find!
3) You don't have anything other than global variables. So you end up trying to fudge parameters like:
PROC ALIENATTACK
ATTACKTYPE=PARAM1
ATTACKLOCA=PARAM2
ENDPROC
Your almost always gonna screw something up. Or you decide that it makes NO SENSE to copy variables into PARAM. So you just make sure before you call the proc that you set the right variables it uses. Your gonna screw up one and your outta luck.
This is with a pretty NICE BASIC from the 80's that gives you named subroutines, multiline IF THEN ELSE.
It's really *tough*. You end up writing all your code in another language and passing it thru a preprocessor you hacked together in say PERL to produce the actual stuff that's interpreted. But that just shows that as a real programmer - you realize that programming in a language like BASIC from the 70's / 80's is incredibly time consuming and painful.
Throwing newbies into this kind of world is just plain cruel.
I *would* make the argument that many un-sullied minds may very well make better PROLOG programmers than those of us with tons of Imperative scar tissue.
--Tarp
I think that this sort of program could have some usefulness to scientists and engineers, but their programs would only be useful to other scientists doing the exact same thing. There is somewhat of a precedent in MATLAB which is similar to "true" coding. Something that could have math functions programmed in similar to MATLAB without being as outrageously expensive would be nice.
You might want to look at http://www.basic4gl.net/ , written by a Colleague of mine at my last job, looked like it would be a fun way of starting to program, without having to worry about functions, and objects etc.
GENERAL PUBLIC SIGNATURE (GPS) Any replies (derivatives) of this post must also use the GPS
Comment removed based on user account deletion
Like 100 years ago when men were men and computers were buildings.
Back in the day when I was in database application development, half the time, what we did was clean up after some intern who, though he know how to program and then did a database with a bit of functionality in Access or Excel. Then the department would get hooked on that database. Then the intern would leave. Then the database would break. Or get horrible slow. Or need some new functionlity.
/business/ needs), what's hard is knowing what you want and design your system to actually support that in a useful way.
Then we would step in. And laugh all the way to the bank.
Speaking as somebody with more than 15 years of (professionel) development experience, the most important lesson here is:
Programming!=Development
Programming is a (small-) subset of the process of developing software. That's why I just laugh when somebody tells me about 4, 5 or 6 (or what ever) generation languages, where you don't need to know anything and can basically just look at the computer and it will do your bidding. Yeah, right. The problem is not coding. With modern RAD tools like Delphi and similar, that's fairly easy (for most
I feel like making a snide remark about a couple of OSS program here (The GIMP ), but that would be childish...
TC - My Photos..
I have to create every Crystal Report that someone wants at my job. That's what they hired me for (but I'm the webmaster as of this week, too.) Crystal sure sucks. Also, the scripting language in it is pretty much vb. They even have a vb syntax mode, which seems to be the most-used, but I always use Crystal syntax. It's still vb, just without the lame syntax.
"You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"