Hacker News new | past | comments | ask | show | jobs | submit login
How did you guys learn how to code?
14 points by Mauro333 6 months ago | hide | past | favorite | 28 comments



High school in the 80s, I wanted to get the $50 Timex Sinclair self-assembly kit. After a back-and-forth with my parents, finally convinced them to get an Atari 400, though they really hated the membrane keyboard making it seem like a toy than a serious machine.

That was the best thing I ever got. All I had was the BASIC cartridge, Asteroids cartridge, and the intro to basic that came with it. I had no storage--that was the compromise for the step upgrade. It was a great lesson to spend literal days writing, refining, and perfecting a program. Only to eventually get bored "I wanna play Asteroids, poof." Eventually I hung around the right places, met folks, read magazines, learned machine-then-assembly language. Everything since then has been pretty easy building on all the low-level stuff. C, oh like assembly but more convenient. It was also fun to disassemble the games I got to see how they worked. Some of the worst games had the best copy protection--they must have thought highly of their creation.

Every computer since then has pretty much been a 'business machine', not nearly as much fun. Even the Atari ST with its M68k seemed very work-like. Lucky for me, I liked worky things too, learning the early Windows, OS/2, NT SDKs etc. The NeXTSTEP OS and Interface Builder blew my mind.


I have pretty much the same story, started with a Vic20 (without storage), got the 4K expansion cartridge when my programs stated to exceed the builtin 3.5k, moved on to the Apple 2 and the Commodore 64 and then on to PCs. Mostly learning in basic and then I was doing a lot of dBase in the mid to late 80's, learned C & Fortran in HS and then I learned C, Fortran, PAscal and Assembler in college. The on to VB, C++ and then I pretty much stopped programming for profit in 1999 and moved into operations. In about 2015 I started coding in Python, life is so different when you have Google, stackoverflow and a module that does pretty much anything you want -why didn't this stuff exist why back when.


Oh yeah, I forgot about that one! I got paid as a kid doing dBase II on Xerox CP/M then III/IV on Olivetti PC too. Before I saw NeXTSTEP, Visual Basic 1.0 was amazing. I was lucky enough to get paid to make a similar GUI builder for OS/2 and NT. Coding for work was pretty straight forward, except for the occasional multithreaded work. It wasn't until seeing completely different languages like SmallTalk, Lisp, or OCaml that it got exciting again. Perl for me was just, why? I briefly saw Python used by some ops folks on QNX but I didn't venture into the whitespace is significant territory to see its goodness until much much later.


Such a good tale. I can relate to typing out programs from magazines borrowed from the library - but at least I had storage!


I started out with random VB crap, then C on PIC, then Arduino, Python, vanilla JS, then reactive JS.

But I think I would have been better off starting at the highest level like most people do now. I'm sure the stuff I learned doing straight C helped me a lot somehow, but I didn't start learning anything I directly use now, until I started using high level tools and best practices.

I think I would start out with Git(Just learn VCS and use it from day 1), then Python (getting into pip, virtualenv, MyPy, etc as soon as possible), then maybe SvelteKit, to avoid spending so much time getting into ways of doing things that I never use anymore. I was writing little strings parsing utilities by hand in C and things like that, copying and pasting instead of using package management, putting significant effort into stuff that doesn't scale and then having to rewrite, and not learning about what tools are available because of probably laziness and task inertia(related to the "just use prints rather than set up an ide with a debugger" phenomena!).

Or, maybe starting with C really is better, because if I started higher level, I probably wouldn't have wanted to put much effort into the low level stuff, and that might have been an issue when encountering


My first exposure was probably Microsoft Frontpage at school in the 90s, and then TI-BASIC on my calculator. I distinctly remember asking my grade school teacher how I could make web pages at home, and he said I'd need to buy the expensive Frontpage software, so I probably wouldn't be able to do it. Hah.

Later, I got a LAMP stack running on a Atom Netbook. My first big "app" was a chat app in PHP which I learned from reading various tutorials and manual pages in a pre-GitHub world. I also made a micro webhosting platform with some .uni.cc domain that a couple online friends used.


Back in 2013 I decided to give a try in programming. I did not have much self confidence throughout my life so it was a major decision.

Since I wanted to do game programming I taught myself C++. I still remember the three books I borrowed, one is Deitel's "C++ How to program", one is "C++ Primer" and the third is "Walls and mirrors", a book about data structure and algorithms.

I read about 60% into the first two books and half into the third one, did a few trivial game projects, eventually stopped at writing a 2D tile based rpg engine. I was thinking a little too complex at the moment, that I would like to implement a scripting language amd an editor inside of the engine (NWN is a major inspiration). Eventually I got a basic editor running up and sort of xml-like configuration language for scripting, but the project is too messy so I stopped working on it.

Anyway that is probably the most complicated project I worked on. I took a second shot last year, taking another route using MapEditor as the map editor and implemented shadow casting. But then I dropped the project again. It was not as interesting as it was 10 years ago.


I started out making my own websites at about 12 or 13, when we moved to the US and got a computer. Then I got into making JavaScript browser games. Then I moved and got a job in games as a build engineer (which was more scripting-type and configuration work), and proactively took on more and more tools programming tasks from there to shape the job into a more programming-heavy role. After shipping my first game there, I joined the next game team as a tools engineer. I also made games and life simulations at home in my spare time. From there I ended up working in core tech, engine teams, backend development, etc.

So most of it was learned through hobby projects and on the job. I am especially grateful for a teammate who was a very thorough and strict code reviewer. He helped make me into a better programmer by meticulously considering and questioning every line of code I wrote.


TRS-80 CoCo BASIC and in high school formally educated with Turbo Pascal 5.5/6.0

Everything after - mostly "self" taught... As long as you count copious books written by others as "self"-taught... PHP, Java, C/C++, Python, Javascript.

Occasionally some of my friends would provide assistance when I needed help (they're busy people and I don't want to bother them much) - but in the end most of it was pounding code & failing ad nauseum.

That experience is the only real way to understand. At least for me, I need the experience, not just the theory. But the experience alone misses a lot of underpinning - so reading theory helps back up and solidify what I do know and help reason about things and why they are going wrong.

I dub the "Throw everything and see what works" : The Wacky Wallwalker Method.

I should note I have never been employed as a professional programmer and this is probably a good thing.


I was hired by Travelocity as a designer before jQuery was popular. I was involuntarily reassigned from design to a front end developer position and told to figure it out. One of my coworkers gifted me a book about the DOM and I taught myself to program in JavaScript.

When you are self taught you selectively avoid so much garbage that formally educated developers cannot live without. I guess when the education is entirely a cost of your personal time and frustration you tend to prefer utility over convention and durability over convenience. You don’t want to waste time on unnecessary things yet simultaneously don’t want to indefinitely repair sloppy code easily written with weakness and laziness.


In high school, I decided I wanted to try to learn to code, so I searched for "best programming language for beginners", and that told me I should give Python a try. Back then, Replit would let anyone start writing and running programs right away without making an account, so that's where I got my feet wet with writing code. Now I do it for a living.

The trick is to be humble enough to not hesitate to search online any time you don't know something. I would set myself manageable little goals for every program I wanted to write, then I would search online for any detail I was missing to make it happen. At my job now, the goals are set for me, but the process is otherwise the same.


Sinclair ZX81. First using its built-in BASIC. Curiosity about what made it tick, combined with a 'need for speed' got me into Z80 assembly.

At one point used this puny machine to compute the digits of one of the largest Mersenne primes then-known to science (mid or late 80s). Not find that number of course, just produce a decimal representation of it.

On its successor, the ZX Spectrum, I got into cracking copy protections, POKEs for infinite lives etc.

MSX machines got me into hardware mods (RAM expansions, floppy drive replacements, repairs & much more).

Didn't turn coding into a profession though. But the hacker mindset never went away.


I started programming BASIC on the ZX Spectrum, and later moved to Z80 assembly for the same reason - wanting to have infinite lives/energy for games.

Removing protection started out being easy, but over time got pretty complex. I remember the various Speedlock protections quite fondly, with their various decryption routines layered upon top of each other.


When I was 12-13 I wanted to get a new gaming laptop, and so learned enough HTML to sell custom websites on Craigslist for $50 a pop over a summer, and made close to $600 (my parents helped cover the rest).

That turned into php and custom wordpress implementations for more money (all terribly coded in retrospect). I even ended up making a 100% custom CMS for our WoW guild website.

I've never been great at sitting down with a book to learn, and need a problem I'm trying to actively solve (with much googling).


1. By looking at other people’s code - specifically, ‘view source’ in webpages 2. By playing around with a simple language and reading it’s documentation (QBASIC in my case) 3. By taking a few classes in high school 4. By getting my bachelor’s in computer science in a program that focused on interactive web technology 5. By faking it til I was making it for the entire rest of my career, because once you learn one language, it’s a much shorter jump to learn the next.


My first exposure to programming was on a Commodore PET, in BASIC. Back then you were expected to be able to write your own code if necessary. The facilities to run code were included in every computer, unlike now, where it's all apps from the app store.

If I had to teach someone from scratch now, I'd teach the basics of text editing, files, etc... then Python, something immediate mode, like BASIC was.


I remember doing BASIC on my grandma's Apple II. Then I was programming my TI-89. I did a lot of Python, Matlab, and Java in college for geophysical engineering. My first job was GIS web development. Now I'm a senior software engineer learning from other engineers while earning a master's degree in cyber security.

I guess I'm still learning how to code :)


Took a FORTRAN class in high school (with actual punched cards). Then read the TRS-80 BASIC manual one hour in high school when I was supposed to be paying attention in calculus class. (Experimented after hours - never took the in high school's CS class.) Then read K&R, then read a Pascal book. Then read Stroustrup.


Logo and BASIC on an Apple IIc in elementary school. Then Pascal on PCs in high school. Fortran, C and C++ in college.


As a new physics graduate student I had only written small programs in BASIC. Since my research group used Fortran 77, I self-taught from the book "Fortran 77: With Numerical Methods for Engineers and Scientists" (1992) by D. M. Etter. Later I learned Python from some O'Reilly books.


Schneider (Amstrad) CPC 464 manual:

https://archive.org/details/schneider-cpc-464-bedienungs-han...

Especially chapter 5 with all the nice graphics commands.


No formal training. I'm old enough that my first experience was copying other people's code from books. Then I graduated to copying code from online manuals and forums. Then I made a thing and people gave me money.


I learned the rudiments of Applesoft BASIC through a class offered by the 4-H club, and mostly taught myself from there via trial and (a great deal of) error. I picked up C in my teens from the K&R book.


I was taught while I was getting my undergraduate degree in computer engineering, doing my own personal projects and working as an engineer for >10 years. I'm still learning.


It all started doing college, school taught the foundamentals and from there I picked a language JS, and furthered my knowledge.

Though the learning never stops.


A 700 page book on C++ for beginners back in 1999.

Followed by a box containing C++ Builder 4 and a project I was told to to start working on.


When I was in 3rd grade (~1981). By chasing the things I was interested in and enthusiastic about.


Same way any human learns anything.

Try, fail, learn what you did wrong, repeat.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: