And then, one day it clicked. I don't know what exactly caused it but it was as if the light had been turned on, I suddenly understood the program that I'd just typed in and* all the ones that I'd been typing in before it. And the next program I typed in was one that I came up with, not one from the exercises*
That's exactly what happened to me, and you're the first person I've ever seen express it.
I was about 10/11 at the time with a Vic20. I spent quite some time with nothing really making sense. No specific memories, just that I didn't really get it and was close to getting bored with the whole thing. My next memory is that suddenly, I got it. One minute I understood nothing, then it all made sense. Some window opened in my mind and understanding flooded through, an experience I can't explain and have never had since.
Here's how my story differs though - Once I was midway through high school I became embarrassed by my affinity with computers. Bit of a social stigma I spent the next 15 years trying to avoid, working all sorts of different jobs trying to fit in somewhere. It wasn't until I ticked over 30 that I was able to admit it (writing code) was the one thing I kept coming back to; the drug I'd been addicted to for the last almost 20 years, but tried to hide from.
And now here I am, almost 40 and I've just got myself a cofounder, we've registered a company and I've spent what's been (so my wife says) a lovely Sunday sweating in the hottest room of the house (the study) working on the beginnings of a new life. And I can't think of anything I'd rather be doing. Sad, isn't it :)
Not sad at all (that you're working right now). Sad perhaps that you tried to avoid computers for so long.
I wonder what people like us would have done in BC times ("Before Computers"). I doubt pure algorithmic math work or sciencey research really would have cut the mustard for me.
A friend and I had a conversation about this phenomenon a while back that he called a 'matrix moment' - referencing Neo's "Whoah, I know Kung Fu!" line.
We both had similar experiences as we learned to program, the most vivid one being OOP - it went from practically no understanding to all of a sudden being completely able to understand what and why.
As a college student, I unfortunately see too many other students who don't "see it". There's something about visualizing code and algorithms that is very powerful but some people just don't see. I don't like math, but I can see counters, for loops and data structures working together to create simple yet powerful stuff.
I think ny matrix moment was somewhere when I figured out PHP's include function and how to use OO to put everything away nicely in a different file, abstracting it out.
A lovely article. I did not start programming with intensity until I was 30, almost two years ago. Now I look back to my youth, when I was poking around in Basic, trying to figure out how to write a login system for my computer (running DOS 5 or something similar), and I wonder, what happened? Why did I ever stop? Why didn't I carry it through? I spent my teenage years and my 20s doing work I wasn't passionate about simply because it was easy.
Now programming has changed the way my brain works. I'm a much more critical thinker. I wake up in the morning and the first thing I do is crack open Emacs (yep.) and start hacking. I need to program. Creating software is the first thing I've ever been truly passionate about in my entire life. My entire wasted life. At least I found it. Better late than never.
I followed a very similar pattern. I got stuck at DOS 5 and BASIC. At the time, I had a C book but my 286 couldn't run the compiler. Also, I couldn't run Windows 3.1. So I stopped learning and picked up the electric guitar.
Like you, I've come back to it full force in my 30s. Programming has invaded my brain, and shapes the way I think. I have rekindled the excitement I felt as a child and I won't let go of it again.
The manual had some instructions for learning BASIC. I messed around with it for a few days, but never stuck with it long enough with it to have an epiphany. It was only when I got to college in my late teens that my eyes were opened to the possibilities of programming. Wish I taught myself to code instead of wasting time moping around during my school years!
I learned how to program BASIC on Vtech too. It was "Precomputer Power Pad Plus", and it had a similar blue top spiral bound manual. I wish I still had the print copy, but I found an electronic one here: http://www.vtechkids.com/_f/_pw/_manual/Precomputer_PowerPad... .
That process, the act of programming is something that I need to do.
My feelings exactly. I can't not program. If I'm burned out with some complex work-related problem during the day, I can still catch myself fiddling around some random unrelated little code that does something "cool" (whatever might be cool for me at that moment) in the evening.
I started programming in elementary school (10yo), when I got a C64 computer, which was very popular at the time. BUT, I got it with a disk drive (1541-II drive, which cost more, and had more CPU power than the actual computer), and all my friends had tape drives, so I couldn't exchange games with them..
So I read and re-read the owner's manual, which was in German, and I didn't really know German .. so I would type these BASIC examples and try to figure out what happens. I think one of the first programs I wrote and understood was a variation of "guess the number" game.
I've only done limited amounts of programming, but I can certainly see how it could be addictive as you get better. A lot of the time I've spent has been utterly wasted, e.g. fighting for a week to get a rails install configured 2 years ago and then mostly giving up as various tutorials I was following were all out of date. But when I've gotten something working such as the kongregate shootorial, it's been easy to spend all my free time for a week tweaking it and improving it.
I also have to say that the entry point for programming (aside from setting up the environment) has been a lot less frustrating than for some of my other pursuits such as language learning. I must have learned a good 200 words of Swedish before my pronunciation was good enough that natives could even guess at what I was saying. Obviously at a higher level, language learning is more about memory than intense thought like programming is, but a lot of people get frustrated long before reaching that point. Programming is also a hobby that won't lead to being a perpetually broke translator.
...if you add up the number of hours that I've spent in conversation with editors, compilers and debuggers over the years...
I'm afraid to do that. I would probably be shocked by the number, and then would quickly calculate my lifetime rate, which would probably be about 28 cents per hour. This is the thing non-programmers never understand; programming takes a lot of time.
It's like a drug.
Great analogy! For me, there's no bigger high than the exact moment of the conclusion of this process:
That process, the act of programming is something that I need to do.
Sometimes I think this is the difficult-to-define missing requirement for software success. Some call it "passion". Some call it "determination". I call it "I can't imagine doing anything else".
but it has all the components of a 'real' program, input, computation, output.
Don't forget storage. That was the killer feature that got me hooked. You could write a simple program, store the result (on a disk!), come back later and build upon that result. Before disk storage, computers were toys. After disk storage, they changed the world.
there is nothing that can't be learned.
I've never had a tatoo, but if I did, this probably would be it (backward, on my forehead).
...all you need to be is a little bit better than you were yesterday and to keep doing that for a long time.
This advice:
1. is excellent. Maybe the best you'll ever read here.
2. is not intuitive. Most people don't get it. Like compound interest, it's hard to wrap a human brain around it.
3. is universal. It applies to almost anything you can do.
4. is very difficult to teach. As soon as you think people get it, they don't. They stop measuring their own deltas and resume comparing to perfection. Grrrrr.
5. the single most important thing I've ever programmed in business turn-arounds. The best dashboards and report writers I've ever written are time-phased; they clearly show improvement over time, which is almost always more important than any snapshot:
Losing + Improvement + Time = Winning
Beware of that bug though, once it bites you, you'll be hooked for life.
To this day, whenever I need something for myself and can't find it in 5 minutes, I build it. It may not be the most effective way, but I just can't help myself. There must be a (3)(2)(2) program for people like me.
>> Programming has an addictive component that is very strong. As you get better you gain more expressive power, you can do more complicated things than you could do before, solve more complex problems.
and
> > It's like a drug. I'm still fascinated by it, even almost 30 years to the day later I still read about languages, new ways to solve old problems, all kinds of developments in software and hardware as though it is the first time that I hear about these things.
It is like a drug. I think our brains fire off the same pleasure inducing endorphins when we figure something out or learn something new. And it happens so much in programming: you implement something old in a new way and you get a little buzz, you squash a bug that's been getting to you for a period of time and you get a bigger buzz. I think curiosity when we were little got us interested, but ever since we, or at least I, have been a junky. I sometimes wonder how my life would be different if, by chance, I would have gotten addicted to something else. There's so many things to get addicted to these days.
my other drug of choice is mathematics. the highs are higher, but they take a lot longer to reach. programming gives you rewards almost instantly.
I've never understood why Byte magazine was shut down. There's been nothing like it. I can't imagine it not being popular in today's tech culture. I'd pay $100 or more for a year's subscription to it right now.
Because of the web. Writers no longer need printing presses to reach interested readers. Readers no longer need managing editors to select good writers and articles. (Writers can still benefit a lot from good editing. Witness the long list of thank-yous on every Paul Graham article.)
It turns out that BYTE was shut down because it didn't focus on WinTel enough - which was the dominant platform at the time (late 90's). I had always suspected this.
It wasn't some overt conspiracy though. Byte had above average circulation for a computer magazine, and far higher resubscription rates. The problem was that because it didn't cater to a specific well defined segment of buyers, it was less appealing to advertisers.
Given that so much of the web is advertising driven, I don't see how it's immune from this. There can be a huge number of people who want a source of well written broad ranging tech material but it's the advertisers who fund the web and they don't want broad ranging. They want people neatly divided up into predictable segments of buyers.
What gets funded on the web isn't determined by what users want - it's what advertisers will pay for.
> There just isn't anything on the web that compares. (or if there is, please please tell me!)
The breadth and depth of well-written technical information available on the web is far, far beyond what was available in Byte in its heyday. Consider:
The big difficulty these days is not getting access to well-written, broad-ranging tech material; it's choosing which well-written, broad-ranging tech material you want to read out of all the immense quantity of material out there, and avoiding spending all of your time reading it. Services like HN, Reddit, Digg, Facebook, Delicious, and Slashdot basically exist to solve this filtering problem (although not, obviously, limited to the tech press).
> What gets funded on the web isn't determined by what users want - it's what advertisers will pay for.
That's true, but fortunately it's irrelevant, because what gets written about on the web isn't determined by what gets funded—it's what people want to write about.
I respectfully disagree with you. There is obviously a far higher quantity of technical 'information' on the web, but almost none of it reaches the standards of the professional writing that was done by Byte.
The articles I see on the sites you list are typically narrow, sensationalist, or self-serving. Some of them are informative but most of them lack perspective, and many of them are written to gain votes on these sites, which are themselves advertising driven. There are notable exceptions, HN obviously, and LTU for example. But most of what gets posted on HN is junk. Hacker Monthly is a gorgeously executed but frankly it reads like an 80's fanzine, and LTU is great but super-narrow.
What you may not be aware of is that a well written technical magazine article takes weeks of research writing and careful editing, not to mention interviewing experts and preparing of graphics. Professional writers add breadth and perspective gathered from multiple domain experts and synthesize it to produce something with added value.
That kind of activity only happens when there are professionals who are skilled and able to do it. Just wanting to write about stuff isn't enough.
We do get some good stuff on business written by independently wealthy ex-entrepreneurs, and some deeply technical stuff written by domain experts, but we've lost perspective and sadly social news sites don't magically bring it back. They can only filter what actually gets produced.
I would link you to some of the articles I am referring to, but whoever owns byte.com now has taken the archive off-line.
Don't get me wrong, I'm not dissing the web - it's added a lot. But it's also taken stuff away that it hasn't replaced so far, and the everything is free but ad-supported model has a lot to do with that.
> The articles I see on the sites you list are typically narrow, sensationalist, or self-serving.
I'm shocked that you would say that about LWN, or Ian Lance Taylor's blog, or Landon Dyer's blog, or James Hamilton's blog, or Google Research Videos. It's so far from reality that I feel compelled to ask if you've actually read them.
> many of them are written to gain votes on these sites, which are themselves advertising driven.
Or that. I mean, maybe Mark? Or Gruber? But can you seriously see James Hamilton or James Hague or Raymond Chen or LWN writing an article "to gain votes on these sites"? I mean, come on.
> But most of what gets posted on HN is junk.
True. But Byte published less than one article per day, and only a minority of its articles were of the high quality that we're talking about here.
> What you may not be aware of is that a well written technical magazine article takes weeks of research writing and careful editing, not to mention interviewing experts and preparing of graphics. Professional writers add breadth and perspective gathered from multiple domain experts and synthesize it to produce something with added value.
Well, I haven't written for Byte, but my limited experience writing magazine articles falls pretty far short of what you're describing there. Byte did have some pretty good stuff, it's true. But as often as not, professional writers synthesize those perspectives with errors and FUD.
And I'd like to point out that in http://web.archive.org/web/20050101022330/http://www.byte.co... there were three articles written by Ernest Lilley in, I believe, the same month. So I think "weeks" may be an overestimate of how much time was normally spent on an article. Maybe in 1998 or something they had a much larger staff?
This was close to Byte's peak of the 1980s. Yet what do we find? A 20-paragraph article cluelessly claiming that autoconf "neatly eliminates this work [of porting software between Unix variants]" and that most "public-domain software packages" use autoconf; an in-depth article about classes of ATM service by a guy who writes books about ATM and TCP/IP that somehow neglects to mention how people in the TCP/IP world solve the same problems, and fails to note the degree to which ATM and TCP/IP were increasingly in competition, to the point that ATM is today a minor niche physical-layer protocol; an editorial in favor of standardizing Java; reviews of 26 new MMX laptop models; a one-paragraph article about delays in the shipment of Tillamook; a competitive review article of cryptography software that pits PGP against Netscape and Microsoft Outlook; a competitive review article of web server software that reviews Microsoft IIS and Netscape SuiteSpot, but somehow failed to include Apache (despite noting that it was the market leader); an evaluation of the new Number Nine graphics card; and so on.
> We do get some good stuff on business written by independently wealthy ex-entrepreneurs, and some deeply technical stuff written by domain experts, but we've lost perspective…
Can you elaborate on what you mean by "lost perspective"?
> I'm shocked that you would say that about LWN, or Ian Lance Taylor's blog, or Landon Dyer's blog, or James Hamilton's blog, or Google Research Videos. It's so far from reality that I feel compelled to ask if you've actually read them.
I have read them.
I think that even the byte examples you linked are better than 99% of the articles that appear even on HN and certainly what passes for tech journalism. They don't stir the heart but they are informative and concise - reading them even now doesn't feel like I've wasted my time. I disagree about the lasting value - they are concise and provide a very quick way to get an understanding of what was going on in the industry at the time. Mocking them for using terminology which now seems dated is out of place.
There simply isn't a place now where I can even pay to get this kind of concise but technical view of what's going on.
The LWN stuff is narrow and much less concise, and although the blogs you mention do have very good stuff, they are also narrow and also have some intensely time wasting hobby horses.
BUT
I will concede: most of the individual pieces you list in your penultimate paragraph are indeed excellent. Even though even some of them are surrounded by time wasting random personal fluff, and a couple of them take 10 paragraphs to beautifully make a single emotive point. Which frankly, I can do without most of the time.
It's quite possible that there wasn't even one article per issue on average that compares favorably to the very best blog pieces.
But none of that changes the fact that there is no source for this kind of concise and consistent material anymore.
I want a magazine (electronic is fine) that gives good technical coverage of the industry with concise articles that don't waste my time, where every piece is of reasonable quality and some special pieces are really great. Monthly would be fine.
What I have is tens of sites that give narrow coverage, and are mostly full of dross. In order to find the good material (none of which is the concise cross-industry coverage mind you), I have to visit all of them every day and sift through hundreds of pieces of rubbish looking for the odd gem. Oh - and guess what? I have to read a lot more rubbish to even know whether it was good or not.
As I said originally, the web has brought us stuff we didn't have before - volume, and I'll concede some higher quality stuff than we ever had before.
But we've also obviously lost something. I honestly don't know why you're so trying so hard to claim otherwise.
> Mocking them for using terminology which now seems dated is out of place.
I wasn't mocking the autoconf article for using dated terminology. I was criticizing it for containing serious factual errors in its main points. I didn't even mention the terminology of the encryption-software article and the laptop-review article I was mocking.
> I think that even the Byte examples you linked are better than 99% of the articles that appear even on HN and certainly what passes for tech journalism.
Better than 99% of what appears on HN is no great feat, but earlier in the thread you seemed to be saying that Byte "add[ed] breadth and perspective gathered from multiple domain experts and synthesize[d] it", and by contrast, what is available today was "typically narrow, sensationalist, or self-serving. …[sometimes] informative but most of them lack perspective," but the Byte articles I mentioned were for the most part extremely narrow, often written by a single domain expert and completely lacking in any larger perspective. Many of them were also indirectly self-serving — they read like sales brochures for certain Byte advertisers.
> Even though even some of them are surrounded by time wasting random personal fluff, and a couple of them take 10 paragraphs to beautifully make a single emotive point.
Which ones are you talking about? I went back and followed the links and read the articles in depth (which I hadn't done the first time) and I'm completely mystified by your assertion. It's as if you're writing your comments from a parallel dimension with a completely different set of articles. Those articles, by the way, aren't cherry-picked from among the best; I just went to the home page of several of the sources I'd mentioned earlier and picked the first article that looked like something good.
It is true that the articles in Byte were very short, and the average quality was okay.
> But we've also obviously lost something. I honestly don't know why you're so trying so hard to claim otherwise.
I was going to agree with you, because my memory of Byte was of some extremely high-quality and pioneering articles. But then I dug the old Byte issues out of the Wayback Machine, and it turned out that the problems you were complaining about were worse in late-1990s Byte than in the current web — at least the parts of it that I read. I'd forgotten all about the endless piles of reviews of insignificant graphics cards from now-defunct manufacturers.
> In order to find the good material (none of which is the concise cross-industry coverage mind you),
Can you point me at an example or two of what you're talking about from the Byte archives? I'm not sure what you mean by "cross-industry coverage". Maybe if you give me an example I can tell you where to find similar stuff on the current web.
> I want a magazine (electronic is fine) that gives good technical coverage of the industry with concise articles that don't waste my time, where every piece is of reasonable quality and some special pieces are really great. Monthly would be fine.
I'd like that too. It seems like to the extent that the articles already exist, you could put it together simply as an RSS feed of links. Maybe you could do it as a Delicious tag.
When I was first programming I didn't have a computer and so I'd write programs in little notebooks. When I finally did get a computer it had a very slow tape recorder for saving programs. I would frequently write programs and simply switch the computer off without saving. Saving was a hassle and I knew that the programs worked once I'd executed them.
This captures more of the story of my life than I'd care to admit. I'm lucky to earn good money doing something that I can't stop doing.
Once, I was deeply burnt out. I took up knitting in an effort to get away from programming for a while. And just like Feynman in yesterday's front-page story, I was once again writing toy programs within a month.
Sometimes I wonder what I would have done if I was born 20 years earlier.
> Programming is not like playing a musical instrument, it is not something that you have to have a genetic disposition for.
As someone who is stumbling through the basics of programming and learning guitar, I can tell you that the secret to success in both is practice and putting in the time. There are very few activities that you cannot become good at with sufficient time and resources.
The thing is, there has to be some genetic/early developmental disposition. I "got" programming the first time I tried. 5 years on I'm still fumbling my way through beginner guitar.
I don't know if there is or if there is not any disposition or genetic element but if it applies to one, it applies to the other. There are people who, even with effort, fail to "get" programming (or, more specifically, the logical concepts behind it) in the same way that you're struggling with the physical aspects of the guitar.
I've had to do quite a lot of DIY as a home owner but I still feel as useless and incompetent as I did years ago. The difference between DIY, though, and programming is that the average joe doesn't have to program whereas I still have to do house repairs.. :-)
Yeah that's the point I'm trying to make I think - I get programming when others don't (even without practice, the practice just made me a lot better). And as much practice as I give it I don't get much further with guitar.
> And so I did. That first copy of byte magazine got read to pieces, I even knew the words of the ads by heart.
:-3
I grew up in a later era and one time in the late 80's my mom brought a portable computer home. When you turned it on the screen would shimmer and my mom let me type in the word processor. It was disappointing, since I expected computers to be so much more Amazing than a word processor. Then, later, we got a home computer, and we had it for seven years, and internet access for two, without the idea clicking that yes, I could probably write programs on it somehow. (I couldn't, actually, because QBASIC was not installed.) Finally I got my start writing "programs" when in eighth grade they taught us how to do word processing and make spreadsheets, and using MS Works Spreadsheet '99 (on a new PC) I made a spreadsheet for managing a basketball pool. I was still unaware of the idea of having a programming environment on a computer. A year later, though, we had to get TI-83 calculators for math class, and that's how the hobby of programming kicked in for a lot of people of my generation. Programming on calculators sure as hell beat devising ways to sort a deck of cards.
This is so similar to what I've done .... My first computer was a Casio PB100, with the 1548 bytes memory extension :) I still have the programs I've done on small cardboard sheets.
Then I had an MSX in 1986. I made dungeons games, drawing programs... all in BASIC of course. When I got bored with BASIC I plunged into Rodney Zack's "programming Z80" and wrote a crude assembler in BASIC.
From there I had a grandiose plan of a 3D 3rd person adventure game in an open world... I began some work on it and realised I'd need about 10000 times the 64KB RAM to get anything done, and a CPU 100 times as fast, and countless other stuff :) Happy days, everything was possible back then.
What is probably most significant point of this article is that he has enjoyed programming for that long and still enjoys it, and gets to do it. It is refreshing to read that, amongst all the craze for startups, somewhere folks are interested in programming as a hobby, as an art. And not just high school or college but life-long. I certainly think that just like music, art, sports there is an aspect to programming which is as fulfilling as these art form. And more than the end goal, the act itself is also filled with purpose and fun.
The end really hit me deep...very assuring " It may take a while (it took me more than a year to learn 'BASIC', which is a very simple language) and I gave up several times only to go back to it once more." I don't know how many times I've tried learning python only to fail..but I'm going to keep trying until I can stick with it and get better...bit by bit.
My need to code comes almost exclusively fromy my need to understand. If I can understand a problem space well enough to explain it to a computer, I probably understand it.
This is only one side of the virus. There's another one: the need to create things. I feel a great need to implement my _own_ ideas both in software and in hardware, i.e. first to understand the problem domain, then to create something that relys on this new knowledge and that does not yet exist. And it's a great great pleasure to observe the thing I created works. Maybe not as I initially imagined, but works! And I feel so miserable when it does not, usuaully because of some nasty bug (or a bad concept) and I cannot help stop debugging and debugging till I get it working! :-)
I actually once asked the StackOverflow community where the software we make isn't so dear to us as "one's own child" - at least I feel that way so often.
That's exactly what happened to me, and you're the first person I've ever seen express it.
I was about 10/11 at the time with a Vic20. I spent quite some time with nothing really making sense. No specific memories, just that I didn't really get it and was close to getting bored with the whole thing. My next memory is that suddenly, I got it. One minute I understood nothing, then it all made sense. Some window opened in my mind and understanding flooded through, an experience I can't explain and have never had since.
Here's how my story differs though - Once I was midway through high school I became embarrassed by my affinity with computers. Bit of a social stigma I spent the next 15 years trying to avoid, working all sorts of different jobs trying to fit in somewhere. It wasn't until I ticked over 30 that I was able to admit it (writing code) was the one thing I kept coming back to; the drug I'd been addicted to for the last almost 20 years, but tried to hide from.
And now here I am, almost 40 and I've just got myself a cofounder, we've registered a company and I've spent what's been (so my wife says) a lovely Sunday sweating in the hottest room of the house (the study) working on the beginnings of a new life. And I can't think of anything I'd rather be doing. Sad, isn't it :)