How did you start off programming?

  • I couldn't find an existing thread for this with the forum search function - feel free to merge.

    @Atazhaia said in WTF Bites:

    @lb_ A friend got The Games Factory back in the day, giving me my first introduction into game development. Never managed to produce anything useful from it, but it was easy and fun to play around with. I also used Fusion 2 to throw together quick mockups during my brief stint as a game developer, as it was a pretty good tool for that. And I'm even doing some game development-related things in my current job, so I'm back to working with it, surprisingly.

    I started much the same way. When I was around 11, I wanted to learn how to make computer programs, so my dad set me up with The Games Factory, and a couple years later I saved up money to buy Multimedia Fusion 2. Using them taught me some pretty important fundamentals about converting my ideas into something the computer could understand, and the medium of game design made for instant feedback.

    In Junior High, my Speech teacher asked me to be the programmer for his brand new Robotics club in exchange for a free 100 in the class. He handed me a sheet of printed C code which I had to recreate in EasyC, the drag-and-drop software used to program Vex Robotics Microcontrollers at the time. I went on to program Vex robots for six years as part of my Junior High and High School robotics clubs.

    Right before high school, I started learning C++ so I could write Extensions for MMF2 using the official plugin API, so my first several years of desktop programming experience was in writing plugins for MMF2 - no console output, no log. If the code was wrong, either nothing happened, or the application crashed, and I hadn't yet learned how to attach a debugger. It was a really steep learning curve but I was very passionate about it because it just seemed so cool to me. I learned a lot about how to find information and help for programming on my own - forums were no use because it was always in the context of the plugin API.

    Anyone else got any interesting starts?

  • I think it all started with Legos. Those were my life for years. Legos, and books. Then I discovered computers.

    I liked messing around in games, running against walls, and generally breaking things. Then one of my cousins gave me Starcraft, and another explained the editor a bit. So I started figuring things out a bit.

    Eventually I moved on to Warcraft 3, which was far better editor-wise. At this point, I was still fairly sure I was going to be a novelist, but realized that if I don't care too much what I'm doing, but want plenty of money and the enjoyment of building things, programming could be interesting.

    So I went to university for that, and became good at it afterward.

  • Fake News

    @magus said in How did you start off programming?:

    So I went to university for that, and became good at it afterward.

    I assume you mean after university, which makes sense. University sure as shit won't teach you to become good at programming.

  • Notification Spam Recipient

    My initial exposure, as I had said in the How I Broke My Computer thread, was with a TRS-80. My dad had one lying around, and it was fun to use. But what really caught me early on was the Bukkit server for Minecraft. I knew that plugins could be easily written for it, that made Minecraft behave differently. I knew that even idiots could write them, as evidenced by the wide array of really shitty plugins. So I cracked open a Java book, learned the basics with some simple programs, and set about making a plugin to make eating food give you potion effects. Eventually, I was banned because I was young enough to not realize it was against the rules to distribute plugins that automatically op the author. By high school I knew enough without any classes to win third in nationals for the LHM Codequest (technically in the Novice division). I guess I'm still in that place that most people consider their 'start', but whatever.

  • @heterodox Precisely.

  • Impossible Mission - B

    @heterodox said in How did you start off programming?:

    University sure as shit won't teach you to become good at programming.

    In the university, I learned about abstraction and encapsulation. I learned about data structures and Big-O complexity. I learned about generic programming. I learned the difference between a linked list and an array. I learned about pathfinding. I learned enough about C++ to realize I never wanted to have anything to do with it ever again. And that was just the first year.

    I use a lot of that stuff on a regular basis to this day. I didn't become a good programmer at college, but by laying a solid foundation for me, it absolutely did "teach me [how] to become good."

  • As mentioned here I started off with The Games Factory. But my first real programming experience was taking "Programming and Web Design" as an optional course in (the equivalent(?) of) high school. This introduced me to very basic C, written in a very colorful (as in code highlighting using all of the 16-color palette) DOS editor that we were using in the early 2000s. Also, plain HTML 1.0 without any CSS, written in Notepad I think.

    University is where I got more programming in the form of C++, and similar from ActionScript. Although being in media I was more into design than actual programming. My first job after that was in game development, where they were using Unity with C# so I had to learn that on the go. After that job ended I thought that maybe I should add some actual programming skills to compliment my media, so I went back to uni to study Android app development, picking up Java and Python in the process, as well as more web stuff like CSS, JavaScript and PHP.

    The after not getting a job at IBM I was picked up for some additional training to match pretty much all the governmental IT jobs around here, bringing me into full stack development and poking at JavaScript frameworks like jQuery and Angular. More CSS with BootStrap. Enterprise Java with JSP. Also server management for running all the stuff. And agile development (done wrong).

    And then I got my current job, where I am still not saved from having to study more. At least it's my employer paying for it. As soon as my workload has lessened they are going to send me off to get Cisco certified, so that's something to look forward to I guess.

  • I've been using a computer forever (I was typing by the time I could read, in about kindergarten). My family started with the IBM PC (8088). But I didn't really start programming for real until grad school. My research area was computational quantum chemistry--simulating collisions of atoms and molecules at intermediate energies. All the interface and analysis code was in Python, so I learned by modifying existing scripts and then writing my own. From there, things snowballed.

    I taught myself Swift to write an iPad app for school, C# because I prefer Microsoft to Apple, HTML/CSS/JS to teach a web design class, and PHP for a school-related project. I still can do Python, but it's no longer my daily driver.

  • Fake News

    @masonwheeler You may use a lot of that stuff but none of it is what makes a good programmer. Among the things you didn't mention university taught you:

    • How to write maintainable code
    • How to write secure code
    • How to handle errors
    • How to write code that can be tested
    • How to test your code
    • Revision/version control
    • Documentation of your requirements, design, and implementation

    I could go on. That's what makes a good programmer, in my opinion, not knowledge of the programming language. It's an attitude, and I don't see it that often from college hires.

  • One day my dad brought home a new computer and goes "hey look, you can write programs on this thing." So I read the GW-BASIC manual cover-to-cover a few times, and diddled around in it quite a bit.


    Then one day he brought home a floppy disk with PowerBasic compiler and a manual and goes "look, this can turn your programs into DOS executable files, and they'll run a lot faster". So I diddled around in it quite a bit.


    I had several books on programming in various different BASIC dialects, some with lots of sample programs which I could run after making some modifications for the differences between versions, graphic modes, character sets, and so on.

    He tried to get me interested in DBase programming, but I didn't have much interest in that at the time; later on, he got me Visual DBase, which was the first interactive form-based GUI-builder that I'd used -- basically an environment very similar to MS Access.

    Eventually he killed a tree and printed out the whole entire MDN Javascript documentation (it was probably a couple hundred pages -- this was around the time of Netscape Navigator 2.0, when document.write was in its heyday) and put it in a binder and brought it home and goes "hey look, this is the language you use to program the web." So I diddled around in it quite a bit.

    Then I discovered that I could download and set up Apache and install the PHP and MySQL modules and have a full-fledged web server on my computer to play with. So I managed to get Apache configured well enough that it'd run (no small chore), and I diddled around in PHP a fair bit also.

    Then in high school I spent a few summers working in an office where they were using this internal application that was all built in PHP, and I was called upon to maintain it fairly often. This was also my first introduction to the humble HTA. So I diddled around in those; they (not WSH) were how I first became familiar with some of the DirectX objects that allow VBScript or JScript to access the filesystem, registry, and such, because they run in a privileged mode that allows scripts to access those objects and methods without security prompts (as do WSH scripts; Internet Explorer was the only browser that allowed Javascript to use DirectX objects, but doing so created nasty security confirmation popups).

    At university, I was forced to take a few programming classes in C++... no fancy colors or fun graphics like BASIC had, but it did give me a better grasp on concepts of pointers, linked lists, trees and such -- really important stuff, supposedly. I also took several different assembly programming classes (x86 -- my first introduction to DEBUG.EXE, although we primarily used MASM; 6812; and MIPS); had a class where we did a simple TCP server application in C and a client application in Java; one that involved a decent amount of MatLab (which is sort of like Excel -- on steroids!!1), and one that got just a little bit into PSpice.

    Since college, I've mainly worked on Access+VBA, Excel, a tiny bit of Javascript, the occasional VBScript or JScript (to run in WSH), and some more specialized controls stuff. On the side, I've continued diddling around in Javascript, and I'd call it my best language, really, although I also feel like I have the underlying fundamentals to translate into just about any language if I needed to. I've done a bunch of the 1-kyu Javascript katas on CodeWars, which is actually a pretty neat platform to practice on.

  • @masonwheeler said in How did you start off programming?:

    In the university, I learned about abstraction and encapsulation. I learned about data structures and Big-O complexity. I learned about generic programming.

    It taught me what. But never once did they touch on why, which is by far the most important thing to do when you introduce any of those concepts.

  • :belt_onion:

    I posted previously on the topic, but it was in the Lounge.

    In reply to a mention of a TRS-80 Model I:

    I learned on those. There was a monthly magazine that had printouts of programs I would type in and run. Of course I'd typo some of it, so would then have to debug.

    One of my favorites was a game where you move a spaceship back and forth along the top of the screen shooting at asteroids scrolling up from the bottom. As provided, I could play it forever, so I modified it to get progressively harder.

  • A copy of 101 BASIC Games and terminals at the high school remotely connected to the city government's Pr1me mini during my in freshman year.

    Oddly enough, being able to use a computer at all was such a novelty in 1981-82 (well, in Stamford, CT, at any rate) that, when the high school decided to just open the computer lab up to everyone until 5PM every weekday, it was surprisingly popular even with students who weren't the same kind of massive nerd I was.

    Unfortunately, the school we were reassigned to the next year didn't let anyone except seniors in at all, and it wasn't until my Junior year (when my parents bought me and my brother a very used Apple ][+ to share, and my father got an equally used IBM PC/XT - two floppies, not HDD - for his home office) that I got the really do anything more with it.

  • I'm pretty sure I've posted at least some of this before in bits and pieces here and there.

    My introduction to computers was long, long ago (early- to mid-70s), when hobby microcomputers (the term "personal computer" had been used here and there, but there were no commercial products described as such) looked like this:

    I would have been 9th grade. The Apple ][, Commodore PET and TRS-80 were still about 5 years away, the IBM PC ~10. One of my school buddies showed me a strip of punched paper tape and claimed it was a computer program that he wrote; I didn't believe him, thinking it was from a typesetting machine from a recent field trip to a newspaper printing plant. He said, no, there was a classroom with a computer in it, and the teacher who taught in that room was usually there before class and at lunch, and would let you use it if you asked. I still didn't believe him, so he showed me and introduced me to that teacher. (I didn't previously know him because he mostly taught 11th and 12th graders Chemistry, Physics and Calculus.)

    The computer was a PDP-8/L, a professional minicomputer that sold, or so I was told, for $10000. (You can get a vintage one on eBay for a bargain $5000.) It featured 4k words (12 bits) of magnetic core memory, and I/O was through an ASR 33 teletype at a whopping 110 baud — hardcopy, upper-case only. To the left of the keyboard are the paper tape reader (in front) and punch (behind).
    0_1509073612547_229656dd-f1d9-4d95-afb4-e56f1c1eaf7f-image.png 0_1509073573762_5c954b61-4c78-4a5c-82bd-6500c886afee-image.png

    There were restrictions imposed by the teacher on what students could do with it. Generally, we were limited to its resident BASIC interpreter, because the teacher used it occasionally for calculating grades, and it took a half-hour to load the interpreter from the tape. We also had compilers/interpreters for a few other languages — FOCAL and FORTRAN are the ones I remember. It took 3 tapes and multiple hours to load FORTRAN, and we never did because nobody knew the language.

    The switches on the front panel could be used to load hand-assembled, raw binary machine instructions directly into memory. Not only could, but had to be, sometimes. Like on the rare occasions that we switched languages, one had to toggle in the boot loader, giving the machine just enough smarts to transfer data from the serial port (the teletype) to memory, so that it could continue the next stage of booting from a tape. DEC made other peripherals, like a high-speed paper tape reader, extended memory (another box as big as the computer that held an additional 4k words, and required flipping a switch on the front panel of the computer to access — 4k internal or 4k extended, not usable as a single 8k address space; the front panel switch was the high-order address bit), or even storage peripherals that could store files (we didn't even understand what that meant), but we didn't have any of that fancy-schmancy (and expensive) stuff.

    What did we do with this amazing technology? We converted between Celsius and Fahrenheit, and wrote loops (what's a for? IF CONDITION GOTO 10) to have the computer spew insults at each other. Eventually, one of the older guys graduated and went to college. He came back a few times and gave me an introduction to what was going on inside — machine code and assembly, and even a taste of FORTRAN.

    Eventually, I graduated, too. Engineering students have to take at least a few programming classes, and the very first college class I took was FORTRAN, in which I got a grade of something like 109%. (An extra 10% from extra-credit assignments, minus 1 point on one test, for a true/false question that said "It is not possible to do thing in FORTRAN." It wasn't possible in the material that was taught in class, but the textbook explained how to do it, so I answered "false." I was quite annoyed that the teacher wouldn't give me the point for the actually correct answer, even after I explained why it really was false.) That was also the semester I learned I never wanted to touch COBOL with a ten-foot pole. The next semester I learned some now long-forgotten mainframe assembly language.

    Eventually, left the community college and went to university. While there, I did a 6-month stint working in industry writing a simulation of a microprocessor in a language called MAINSAIL. When I returned to uni, I wanted to do something similar for my senior project, but MAINSAIL wasn't available. C seemed to be the best available language for bit-twiddling, so I learned it on my own (with help from one of my roommates who was a CS major). Other CS classes useful for Engineering followed — Numerical Methods, because some math is hard or impossible to do analytically; Data Structures, for reasons I no longer remember; Computer Graphics, because I wanted to.

    30-ish years later, I work mostly in SystemVerilog — Verilog is an inherently and massively parallized language designed for describing the logic of digital circuits, in which potentially every gate in a chip is a separate thread running concurrently, and SystemVerilog adds to this a bunch of OO constructs that are very useful for designing the test harness around the chip — C/C++ for writing test code to run on embedded processors, either in actual chips or in the SystemVerilog models of them, and Python for miscellaneous utilities. Most recently, I wrote a script to parse part of a chip specification in XML and spit out some SystemVerilog to test certain functions of the chip.

  • kills Dumbledore

    A much less auspicious start than some here. I had windows PCs around from early teens but I only used them, no programming. When I was in university I blew most of my first term student loan on a mac mini and discovered applescript. I never did much with it, my most ambitious script was one for when I was back home with dialup that would run on login, connect to the Internet and then open Firefox after a suitable wait. I wanted to detect when it was connected but couldn't work out how to.

    Later, I basically fell into programming. I'd dropped out of teacher training and was basically applying for any job I saw. I ended up signing up with a company that provided a 3 month full time training course in SQL and c++/mfc. Rather than paying for the course I had to work through them as a contractor for two years.

  • When I was about 7 or 8 we got a Dick Smith VZ-200 - about the same sort of vintage as the VIC-20. My dad and I messed around with it quite a bit, we wrote some text-based games and such. By the time I was in high school I used it to write stuff like a two-variable stats program (we didn't have that on our calculators back then) and to be lazy at calculus assignments (Riemann sums the easy way!). At that stage I was also getting into Z80 assembly language, and disassembling various programs and going through them to see how they worked, which was pretty fun. (I also mapped out stuff like how BASIC programs were stored in memory, and which byte corresponded to which keyword, which let me do silly things like entering a BASIC program using graphics characters instead of the keywords.)

    When I went to uni I did CS in my first year and became acquainted with the concepts of structured programming and OOP. We learned Pascal and PDP-11 assembler, which even then was a relic of a bygone age. (Nevertheless, I found it easy to work with compared to the Z80 assembler I was used to. So many registers! Multiply instructions!)

    Around the same time we got our first Windows PC at home. By this stage I was starting to use Excel heavily at uni (working with physics experimental results), and after a while I got into Excel macro programming (this was before VBA).

    Eventually I wound up doing bits and pieces in a variety of languages (mostly Pascal and VBA, with a fair bit of Matlab in my previous job, and sprinklings of C++ and Fortran there as well). One of those VBA things helped me get this job, where I made a few more VBA tools (the first one I made into a full-fledged Excel addin; it started off as a personal project to make a repetitive task easier, but not long after the first time a colleague saw me using it everyone on the team wanted a copy).1 Along the way I acquired a good grounding in SQL and was maintaining our PL/SQL stuff until we got rid of it. Nowadays I mostly work with Informatica to get data from point A to point B, suitably mangled.

    1 Excel VBA has a really good object model. Word's is pretty good but not great. Access's is just awful. Thankfully - fingers crossed - I don't have to deal with it any more.

  • Back around 1980, we had a Sharp MZ-80K that was my father’s principal hobby at the time, so he spent a fair amount of time tinkering with both hardware and software. I learned the basics of BASIC from him on that machine, and never really progressed much beyond that level. Aside from being taught Pascal for one hour a week for a few months when I was studying chemical engineering (and, of course, this consisting of having to write much simpler programs than I’d do for myself in GW-QuickBASIC at that time), I’m entirely self-taught — as far as programming is concerned, but also pretty much everything else, really.

    Unlike, I suppose, most people here, I’m not a professional programmer. I write programs for my own use when I need them, and can code well enough for that — and that’s also usually when I learn something new (in between swearing at lots of stuff), because half the time I want those programs to do things I don’t know how to do yet 🙂

  • kills Dumbledore

    @gurth said in How did you start off programming?:

    that’s also usually when I learn something new (in between swearing at lots of stuff), because half the time I want those programs to do things I don’t know how to do yet

    Sounds like my professional programming experience

  • Trying to make clan websites during my days as an avid Age of Empires/Age of Empires 2 player which gradually moved towards "What's this PHP thing these lads can do?". Technically, I only knew HTML before University and during our Java modules, I happened to come across a "Sams teach yourself PHP & MySQL in 24 hours" book in Waterstones and flicking through it I quickly realised that PHP was so similar to Java that I could pick it up and run with it (Of course, now I know why but at the time it was a revelation).

    I also had a few old Spectrum mags back in the early 90s that had small but complete games you could write out yourself and play but I had no idea at all what I was going, it was pure regurgitation (I was under 10 so give me a bit of a break on that one!)

  • I was like 2-3 years old when my dad bought an Amstrad CPC 6128. He also had a Minitel, which was friendlier to kids (as long as you never hit Connexion/Fin, you could just type away on the keyboard and nothing would happen apart from echo).
    I was immediately enraptured by the act of pushing on keys to make letters appear on the screen, and soon enough I learned the art of stupid basic hello worlds:

    10 PRINT "Bonjour"
    20 GOTO 10

    And in time, and with the help of the phonebook-sized user's manual which actually contained a full course on Locomotive BASIC, I actually learned how to make (bad) programs.

    Later, I ported by BASIC skills to programmable graphing calculators (a Casio fx-7800G, later a CFX-9940 GT+ Graph 60, and finally the Rolls-Royce (unlike the slow-as-molasses Casio), the TI-89). The latter could actually manipulate images and parts of images in BASIC, and supported Assembly programs without jailbreaking, which was awesome.

    Eventually I took actual computer programming courses after my Bachelor's Degree, learning 68k assembly, C, 8086 assembly, sockets, the Win32 API, and awful "C++". Next school, I learned more real-life stuff like algorithms, databases, object-oriented programming, parallel programming, Java, POSIX, actual C++, distributed programming, and finally C# for my end-of-studies internship. Never looked back.

    To this day, I mainly program in C# on desktops. And in 10 years of working experience, I've learned at least part of the things mentioned by @heterodox.

Log in to reply

Looks like your connection to What the Daily WTF? was lost, please wait while we try to reconnect.