Hobbyist Programmers
There’s been a highly reported decline in the number of computer science graduates in the US over the past several years. Some attribute the decline to potential students’ concerns about outsourcing and the availability of high-paying computer science jobs. Others say that while few students are majoring in computer science, those who weren’t passionate about programming in the first place are simply being weeded out. It could also be due to the long hours and poor lifestyle of programmers or the perception that programming is an extremely tedious job.
I sometimes wondered whether the lack of enthusiasm for programming is due to (1) the lack of a free programming language (like BASIC) available out of the box of a new computer and (2) increasing complexity of programming languages and libraries. Alan Kay remarked in a recent interview that the original version of Smalltalk was usable by children, but, after Smalltalk-80, it became a professional programmer’s language.
I started out as a hobbyist, programming in BASIC on the Commodore Pet and Commodore 64/128 while in grade school in the early eighties. After a year of BASIC, I moved on and programming exclusively in 6502 assembly for performance. (I still remember many of the under 255 opcodes in the instruction set. LDA was 169, for example.) I built my own assembler/disassembler, wordprocessor, interpreted languages, and games. I disassembled and study the ROMs, added extensions to the BASIC language, wrote my own multitasker for the Commodore 64. I spent some time nearly everyday programming after school.
After Windows came out, the industry lost a lot of hobbyist programmers. Win32, C++, and, especially COM/OLE, were prohibitively difficult to learn and time-consuming to program. Visual Basic did come out, but it wasn’t freely available with Windows. The Macintosh did ship with Hypercard, an easy-to-use and free programming language, until sometime in the nineties when it was apparent killed. For a time, there were more Hypercard applications (“stacks”) than regular applications, but Hypercard was slow and limited in the types of applications it could produce.
The only languages freely available on operating systems now are the scripting languages in browser, the macro languages inside applications (and, on non-Window platform, dynamic languages like Perl and Python.) As a result, a lot of would-be hobbyists went on to produce websites.
With the new Express editions of Visual Studio, some of the new Whidbey ease of use features such as edit-and-continue, and a usable managed object-oriented API in the form of WinForms, I think that we may be able to get the young hobbyist programmers back, which may swell up the ranks of computer science students back to past levels. The upcoming Avalon API set with its declarative XAML will also help that trend.
I know this doesn't really apply since you seem to be talking about Windows machines but every copy of Mac OS X since it was first released has come with the full suite of developer tools.
Posted by: Bill Brown | April 19, 2005 at 05:32 AM
My personal take on this is that the preceived value of a CS degree is rapidly declining. The CS curriculum is almost completely useless to the average programmer. US universities really need to re-think how (and why!) they teach programming.
Posted by: Jeff M | April 19, 2005 at 05:54 AM
Not only MacOSX, Linux should be a hobbyist programmers wet dream, good dev tools for free basically (with all the source code you could ever hope to see).
I think the real problem is that programming became the cool "new" way to make lots of money in the 90's and when the bubble burst nobody wanted to be that lowly programmer suffering falling wages and ridiculous hours.
Posted by: Senkwe | April 19, 2005 at 05:56 AM
Huh? Perl, Python, et al. have long been available for windows.
Posted by: Jonathan Ellis | April 19, 2005 at 06:07 AM
Quaint notion I know, you don't need an IDE to program. .NET's been available for free on the command line form the start, and SharpDevelop's been around for a while as well. Also, you could always get a C++ compiler in some form. As pointed out, Python, Perl, and other languages have long been available for Win32.
Posted by: Keith J. Farmer | April 19, 2005 at 09:16 AM
Speaking as someone with a bachelor's degree in Dramatic Literature who after four years as a web application developer is going back to school for a Master's in Computer Science, I would have to say that the best and most influential programmers I have worked with did not have degrees in Computer Science. Some didn't even have degrees, and to tell the truth I don't think that college will help me in my career. I'm really just going back because I love it.
So I'm not sure that I agree with the implicit assumption that a declining number of computer science graduates per year equates to a declining number of quality programmers or a lack of enthusiam for programming. It could be that bright youngsters would rather get paid to learn on the job or prefer to work outside of the confines of academics.
Posted by: Rubikzube* | April 19, 2005 at 10:16 AM
You forgot to mention TurboPascal and Delphi, both of which were/are popular with hobbyists.
Posted by: John Topley | April 19, 2005 at 12:29 PM
I don't think that Visual Studio Express editions are going to help out with this at all. To the best of my knowledge, even with these Express Editions, Windows remains the only major Operating System on the planet that does not freely distribute all of its developer tools. I suspect that if Eclipse or Anjuta had been around when I started flirting with CS back in college, I might have ended up on the other side of the aisle today - A decade later and I still grumble that I had to shell out $149 of my beer money for a student version of Visual Studio. At the time, it made little sense - now, I think Microsoft is doing a huge disservice to itself.
Posted by: Steve | April 19, 2005 at 02:27 PM
I, like you, began my love for programming in the '80s using BASIC on one (of the two!) Apple II computers that our school had just acquired. What was great is I could also type in and run those same BASIC programs on a friend's commodore 64 or an IBM-clone. So, back then it was great because a) personal computers were new and b) to be able to create things on this electronic device with instant feedback was addictive. Back then computers really were hobby toys.
Fast-forward to the '90s and the proliferation of faster computers, Windows, and then the web and things evolved from "fun" to "business". Who knows how many people got coerced into computers and programming or majoring in computer science for the money to be had instead of a genuine interest and love.
Bubble then bursts (like a previous poster said), but we're left with even more computers and tech-driven processes everywhere in our lives. Nowadays, there's almost TOO MANY choices for programming languages that you can't keep up.
Plus, the fact that tech is so integrated with every other discipline and industry now, many people like me weren't/aren't computer science majors (I was statistics), but still do alot of "programming" work, whether it be scripting, web development, database apps, automation of network admin tasks, etc.
In conclusion, the fact that tech is so pervasive and far reaching in everything we do in our world now coupled with some many different choices for languages, IDE's, tools, frameworks, etc. it probably just *seems* like there's a declining interest, if you're using number of computer science majors as your yardstick. But, the truth is there's probably more interested people than ever, they just don't get counted because they're doing their programming in another department/industry that they're specializing in. It's no longer enough or perhaps even possible to "know everything" about computers. They've evolved. It's probably the same thing mathematics went through when different branches evolved to the point that there became different disciplines, like statistics vs. number theory vs. geometry vs. ____.
Perhaps very soon instead of "computer science" majors there will instead be security majors, wireless communication theory majors, multimedia transmission theorists, etc. that all have a much broader scope than their usage of (personal) "computers".
Posted by: Tom Dierickx | April 19, 2005 at 07:54 PM
Like many programmers, I started out using Basic in my spare time after school.
Before I had finished my CS degree, I had a decent paying programming job, working 90 hours a week. When I decided to return to school and finish my degree, I had been burnt out, and any love I had for coding had gone away.
Add to this the fact that many of my classmates had little to no computer experience, and were there for the promise of money, I believe the job market was simply flooded. A sad fact, considering my experience and abilities as a programmer were not enhanced in anyway from my degree with all of the electives and requirements in areas other than CS. The school was in a sense, training me to be a team lead or manager for a CS department, a job not widely available to begin with.
That being said, all of my friends from school now live with their parents, and work in areas not related to computers and wonder why they have a $40,000 "piece of paper" in CS. With the job market the way it is, you have to be willing to move to high cost of living areas, be paid minimum wage, and be prepared to take all the problem solving skills that made you love programming, set them aside, and write the same for loops and if statements your application spec defines.
Posted by: Kevin | April 20, 2005 at 01:53 PM
I agree with Jeff M - a CS degree is laregly irrelevant for business programming. Sure, people who design platforms need CS knowledge, but most programmers ignore those details, and just work on top of an existing platform.
I think a much more relevant degree would be something like "Software Engineering" - see Steve McConnell's book Professional Software Development. Unfortunately, most colleges do not offer a degree like that, so college students are left to choose something else. If CS is not much more relevant to their career path than (say) Dramatic Literature, why not pick the more enjoyable one?
Posted by: Josh | April 22, 2005 at 08:50 AM
I too started with Basic (Atari, Amiga and later DOS).
While most young people probably won't start programming desktop applications, I see a lot of people starting with PHP and other scripting languages for the web. I think web programming is the new generation's Basic.
Posted by: Kim | April 23, 2005 at 10:58 AM
Don't forget Windows Script Host, which ships with Windows, with support for JScript (ECMAScript) and VBScript and can be extended (eg, see ActiveState's language offerings). There a number of scripting (compile and run on the fly) hosts for .NET languages as well.
Tom is undoubtedly correct; I am someone without a CS degree who has been programming for some time now in C, C++, C#, JavaScript (and [X]HTML), and some VBScript and Visual Basic (when I have to, which isn't often). I've had the good fortune to be exposed to the work of three superb programmers with many years of experience, one of whom nearly finished a Ph.D in computer science in the early seventies.
An interesting question is this: How well is the craft being disseminated to people who aren't exposed to it in formal academic training? Anybody can run across references to Knuth's books, and buy them, or buy other highly regarded books setting forth the fundamentals of the subject.
Posted by: CW | April 26, 2005 at 10:11 PM
I have written a guide for potential young Windows developers on how they can use the fre e .NET SDK as well as other resources to get started programming on Windows:
http://www.perfected.org/archives/2005/04/29/hobby-programming-on-windows/
Posted by: Nik Cubrilovic | April 29, 2005 at 12:17 AM
I've made my living programming since 1991 and have been interested at the hobby level since 1978. I too, early on, programmed at the hexcode level. I had a Radio Shack Color Computer in 1980 and learned all the 6809 instructions like LEAX (load effective address into register X). My friend & I did stuff like program John Conway's Life into the computer by carefully counting the byte offsets and "POKE"ing them in to memory with a little BASIC program. Anyway, point is, I never studied this stuff in college, and based on what a lot of colleges offer, COBOL on Unix??, out-of-date versions of Java and Windows technologies?? I'm glad. If you LOVE this stuff, you love it and it will show in your work. I've worked at a fair number of corporations now and I have to say it feels like most folk are just slogging away eagerly anticipating the end of the work week before Wednesday even has arrived. I hope it is true that college IS roles are declining. I like to be at the winning end of the supply/demand thing. By the way, the "outsourcing" pendulum is once again swinging away from India/China etc. and companies are once again licking their wounds!! Gotta LOVE it!!!!!
Posted by: Eric T. Nielsen | May 13, 2005 at 07:49 PM
One of the often unrecognized truths is that programmers are largely successful at being productive because software engineers created systems that make them so. There are practicle software design issues that while not used directly by the average programmer, are engineered into the software platforms they use.
LALR(1) grammers make programming languages more obvious to read. Recursive descent parsers make it possible to have small parsers for more complex languages such as the scripting languages that many enjoy.
Garbage collection is a complex task with some vary important invariants. Do you know about all of these terms and where they are applied in your platform of choice?
Posted by: Gregg | May 18, 2005 at 06:22 AM
I have to agree with you in large part. I am old enough to remember and to have seen the waves of what you call the hobbyist programmer.
I was fortunate in that I was able to learn BASIC on a mini for free (the evergreen state college gave away free computer time in the mid 70's) and FORTRAN on an IBM 360/65 (Boy Scout Explorer troop)
When machines hit the market that included basic you saw myriads of programmers sprout up: Dr's who coded, plumbers who coded, artists who coded. I think more than the cost it was the ease of coding that made it happen. When VB hit the market the wave crested again. As VB got more complex the numbers dropped off. We saw another wave when HTML and scripting hit, and as the complexity grows people drop out.
Maybe the express editions will bring that ease of coding back and you will see the blossoming of a new crop of coders.
Posted by: Don Glover | May 18, 2005 at 08:32 AM
To points: the open source movement and Java.
The open source movement is full of hobbyist developers. But I'm not talking about the big projects, they usually have armies of full time people payed by corporate sponsers. There are tons and tons of little half baked projects out there that hobbyists hack away on. Many just get abandoned but some cary on. (sourceforge.net currently over 100,000 projects)
Secondly, no one gave much mention to Java. The Eclipse IDE is fantastic and free as is the Sun's Net Beans. Both of which rival or surpass Express in terms of ease of use and capabilities.
Perhaps the real question is why are there so few hobbyist working with .NET or the Windows platform.
Posted by: Pete Lyons | May 19, 2005 at 05:57 AM
A programming environment that is distributed for "free" is Office VBA. Practically everyone with a Windows PC has Office and Alt+F11 puts you into an IDE.
A fully-managed version of Office.NET with VSA.NET would really help with getting a programming environment to kids.
Posted by: Richard | June 15, 2005 at 04:51 AM
lol, I've been using VBA for years at work; during my studies I get part time jobs and they normally involve database entry or GIS Digitizing on Windows PCs, all have excel and so I sit there and make games all day!
I think the main problem for windows is the price of the Visual IDE's; I know you can get free ones and now, I'm not a fan of microsoft, but their IDE's and compilers are brilliant! Except they cost £1000+ (But there are other ways of getting them.....) I paid for VS6 when I was 15 as a student it cost me £150, and now its even more expensive!
I used to program games in QBASIC, then Visual C++ but hated it, (MFC and Directx8, pointers, yuck), now after a break for a few years I've discovered C# and Managed Directx 9, bought a few books and I'm having a whale of a time. Although I've been programming on and off since I was around 13 and I LOVE computer games and would jsut die at a job in the industry; I know that it is difficult to make a lot of money, and as soon as you move up a few levels you are taken away from what you love anyway....coding/design
That's why I decided to do a Physics degree and code in my spare time. If I'm lucky I'll fall into a job in the industry, and if not then I can apply my qualification to other jobs.
oh yeh, i also reckon that 2 years of physics has made my programs far better mathematically, especially when it comes to modelling the real world. Computer Science and Game degree courses look a lot of fun and i know that i'd try hard; I just don't think I can let my whole life hang on the the slim chance of a job in the industry, with the most likely outcome being 365day weeks and being unable to buy my lunch :)
ill shut up now
Posted by: Alex | August 23, 2005 at 04:17 AM
Oh yeh, another note. 1st Year Physics degree course teach you almost all the Maths you will need for 3D programming. Complex Numbers, Matrix Maths, Fourier transforms, Vector Calculus, statistical things, differential equations etc etc and these techniques are taught from first principle and applied in a wide area of things. surely this is as good as the maths side CS?
Posted by: Alex | August 23, 2005 at 04:20 AM
A good tool for a hobbyist programmer is OnTime by Axosoft. It allows Defect/Feature/Task tracking. Also, single user version is free and uses MSDE
Posted by: Jason | August 29, 2005 at 01:28 PM
Not to be a necromancer, the QBasic community I hang with online has developed what is known as FreeBasic. I'm not sure on the spam law here but I hope the following link may be of use to people visiting...
http://www.freebasic.net
Enjoy.
Posted by: anarky | January 26, 2007 at 05:13 AM
Taking up programming now after we have shipped hundreds of thousands of jobs to Indonesia last year isn’t exactly smart. I have to say that one should follow your passion and if it is in programming, then you will have an opportunity. You will compete with folks earning $500 a month and working 6 12 hour days a week with no overtime and scant time off. In India that is really great income. We now exploit that in America with no tariffs or trade equity so you are being robbed blind and putting us (me) straight out of work in theory. I have the degree in programming and am at the top of my game. There are no promotions available above my position (poor me, right?). I am currently decommissioning the program that I have spent 12 years writing that saved my small company a billion dollars. That software is putting my company at risk because it is highly customized, so we are buying new commercial off the shelf stuff that is going to be “Highly Configurable” by administrators and need for programmers will be mitigated.
Being mitigated or relegated is not a fun thing. The new software from India (generally, but not ours) has a lower quality standard and will most likely take tons of Business Analysts (BA) and Project Managers (PM) to bring it to bear. So, if you are looking for money that is where it is. Where I live we are fighting over the few programmers we can find and thought of using off shore software is against the principles of sound logic (employ people to empower our nation). So, we bring them in from Job Service and interview constantly. What we are seeing is not as good as it once was and folks like me with the passion for software are getting more money and better treatment so that they are retained by their companies. I stand on a core principle that if you want to make software that pays the bills and turns the reports on the printing press, you will do well. If you want to cash out and make a buck or two you need to be a BA or a PM.
Posted by: GaryM | August 29, 2007 at 01:52 PM