The one point I really disagree on is Linux.<p>Sure learning Linux will most likely teach you something about the platform on which anything you write will probably be deployed but that's really marginal (IMHO).<p>You get things done (programming included) by getting all the roadblocks out of your way. Linux is (IMHO) a roadblock. The OP claims it teaches you researching skills by giving you problems everyday you need to find solutions for. This is true in the same way that refusing to buy food of any kind teaches self-sufficiency.<p>To get things done you need to get in the zone. This means eliminating distractions. Trying to figure out why copy and paste doesn't work (and it turns out that it's because you're using OpenJDK instead of the Sun JDK) very much takes you out of that zone and then wastes time to boot.<p>This might be more useful later on (maybe) but learning to programming? No way.<p>To me, the best development platform is OSX. Why? Because it's (BSD) UNIX that is a pleasure to use that (mostly) doesn't have the aforementioned problems. My only real beef is that if you're used to using a program on Linux or Windows the keyboard shortcuts will generally be different on OSX (due to following the OSX conventions).<p>And as much as people (myself included) like to rag on Windows (in my case: the complexity), the fact is that modern Windows (Win7) is actually a pretty pleasant experience. Some things (eg git) suck but Cygwin can ameliorate a lot of those problems.
Wow, I never had any post summarize my growth as an engineer so well. Except for the writing and community bit, that's come a bit late.<p>I remember the day I realized that I could have windows and play heretic all day, or install linux and tinker all day. Linux quickly won.<p>The biggest skill I learned from linux is to never expect things to work, and to expect the internet to fix things. My round trip time from not working to google and back to working is by far my most valuable asset as an engineer.<p>And still, almost every day I leave work I think "God that was awesome!". I hope that never goes away.<p>Oh, and so +1 for 2 hour nr epic SC battles! Except it was under wine, and man did it quake!
Nice read. Did you also always wanted to open things to see how they work? When I was 6 or so, I asked my mother if I could open our hamster to see 'how it worked inside'. Maybe if I were allowed that, I'd be a surgeon now instead of a software developer!
The author speaks of writing some small scripts. I write some small scripts for my use for small tasks, if I come across any problem.
Just in case, does anyone know a place(website,book etc.) where such small task scripts are collated so that anyone can use them like small assignments?<p>Advanced Bash Scripting Guide by Mendel Cooper(<a href="http://tldp.org/LDP/abs/html/" rel="nofollow">http://tldp.org/LDP/abs/html/</a>) has some good scripts which I have come across for some practice but it isn't ordered. Any others ?
No offense to the author, but I was expecting more of an in-depth process article rather than an overview. Every "How I Learned to Program" article is fluff filled and really only inspiring rather than action orientated. I've never read a truly step-by-step guide on how someone has learned to program. Maybe I'll write it.
This is probably going to raise some ire, but am I in the minority of people who are tired of "How I learned to program?" type posts showing up on HN?<p>You learned how to code. Great, I am legitimately, truthfully happy for you. It's a very cool skill/career path and a wonderful feeling when you have the ability to create something on your own.<p>But...do we really need to read that on the frontpage? Am I the only one that finds these types of posts uninteresting?<p>It has almost become a cliche to wake up and find a frontpage <i>"How I learned <language> in <time> as a <non-programming profession>"</i>
I've been using linux for quite a time, and I personally love it. But I'm afraid average person(non-programmer)reading this blogpost will think that linux is something so fundamentally broken, you need to accomplish such trivial tasks as copy/paste throug hours of pain and suffering. Its not like that. Linux provides both normal and advanced modes of accomplishing stuff, which is an advantage over other OSs like for example windows, which only gives you one way to do stuff (which is almost always rudemtary for a power user).
Great article. I especially like the focus on writing. I've been writing for as long as I can remember. I used to spend time between assignments in class and homework writing short stories when I was a kid. That is partially why I became a programmer as well. Started out writing little TI-83 apps and moved on to Windows apps and now I am a full-time web developer (mostly Ruby on Rails stuff) and I absolutely love coding.
I started with - don't laugh - a TI-55 calculator. It had no conditional jumps (that would be the TI-57) or jumps other than to step 0. It also had, IIRC, 32 steps. I managed to program it to solve second-degree equations.<p>Then I moved on, briefly, to a Sinclair ZX-81 clone and then stayed with an Apple II until the late-80s. I rented an MSX from the phone company as a videotext terminal. It was a steal at about US$ 7/month.
Well, all this is a bit of a fairy tale to me. Sure programming on my free time with friends, always wanting to know more, to go further, that's true it <i>is</i> fun and I'd say it's a way of life. Now consider: process, deadlines, the annoying management guys.. All this is exhausting and boring, it takes away creativity and fun. Not everything is bright and shinny like that article seems to state. The guy actually designing apps is not necessarily the guy who will code them, etc. There's a lot of frustrating realities out there that are better to be known and accepted than ignored.<p>Also, see <a href="http://developers.slashdot.org/story/11/05/11/0358233/is-process-killing-the-software-industry" rel="nofollow">http://developers.slashdot.org/story/11/05/11/0358233/is-pro...</a>
Nice article, I second that programming is a way of life. Although I'm in my early 20's right out of college, I look forward to how much knowledge & experience I will amass, and the radical transformations this industry will go through, 10 - 20 years down the road.<p>> "On linux, if you want to copy a file from one box to another, you use scp or rsync"<p>No, not really... I just SFTP at the moment simply cause I find it more convenient (granted, I'm not a Linux power user in any way).
Thanks for writing this up. Read the whole thing, took it to heart. Right now I'm making the leap to web developer in a year, without prior experience.<p>Was wondering what milestone achievements I should hit in Linux, given my goals? Goal details here:<p><a href="http://news.ycombinator.com/item?id=3552656" rel="nofollow">http://news.ycombinator.com/item?id=3552656</a>
Completely off-topic: Shouldn't the title be 'How I <i>Learnt</i> to Program'? It's a serious question (I don't live in an English-speaking country and my English is not great).
I learned by typing in BASIC program listings from computer magazines on my VIC-20 in the mid 80s. That slowly transitioned to modifying programs to see what would happen. At some blurry point the trial and error shifted to me actually understanding the language - and more importantly, the realization of programming logics - and starting to use it intuitively to write my own programs.
i agree, but how can one write passionately about being a programmer and programming without giving due respect to one of the most influental and dedicated programmers of all time - richard matthew stallman - by speaking an entire article only of "Linux" and not of "GNU/Linux"?