[HN Gopher] Ask HN: HN people who write meaningful software, how...
       ___________________________________________________________________
        
       Ask HN: HN people who write meaningful software, how did you learn
       to program?
        
       The word 'meaningful' may be a bit ambiguous. It infact is. By
       'meaningful' software I mean any software that has meaning to you
       or your customer. The thing is you deliver value in one way or the
       other. E.g: You write and maintain an open-source package used by
       quite a few people. Or maybe you wrote and website as a hobby. Now,
       it is used by quite a few people so you maintain it and the revenue
       it generates is your primary source of income.  If the above
       description fits you, can you recall how you learned to program and
       build meaningful things? More importantly what drew you towards
       programming, and not another subject? And if possible, mention THE
       meaningful software you wrote.
        
       Author : curious16
       Score  : 58 points
       Date   : 2022-09-30 14:44 UTC (8 hours ago)
        
       | f1shy wrote:
       | I started programming when I was 7, in basic (very little
       | things). In the school we had Logo when I was 8, I found that
       | boring. When I was 12 I was programming ASM in the Z80. Later I
       | learned pascal in the first year of secondary school, and C one
       | year later. I was attracted to programming because I suck at
       | arcade games. When all my friends where playing wanderboy or
       | whatever, I was programming things. I enjoyed being able to
       | create what my imagination wanted.
       | 
       | I learned a lot by trial en error, and I tried to get my hands in
       | whatever document would help me to code better. I remember
       | getting from a BBS a copy of the coding style of Linux. I found
       | extremely insightful.
       | 
       | The good thing of learning to program in the 80s, is that some
       | things that later became (stupidly) prohibited, were all in
       | trend: RAII, normal naming of variables, dynamic typing... later
       | the people when to stupidity and insisted in declaring all
       | variables at the beginning of the function, naming conventions
       | like hungarian notation, and strong typing... not everything is
       | reverting to the normality.
       | 
       | Then in the university I learned C++ (C++98) and "OOP". I thought
       | I knew what I was doing, even worked 1 year producing real
       | software for automation of radio broadcasting automation (mp3 was
       | still not a thing, we had all the music in big discs --4GB! :)
       | and played form there). Also developed a presence server for
       | Nextel Sprint, and a geolocation application, based on signal
       | strength (when cell phones did not have GPS). Among many other
       | applications, for billing, alarm handling, protocol analysis...
       | 
       | UNTIL: in 2010 I came across SICP. It was like "all you ever
       | wanted to understand about SW engineering and nobody told you."
       | That lead me to read the Lisp books like "Practical common lisp"
       | and I understood I had no idea what OOP was really... Because how
       | I learned to code, I always used already the "wishful thinking
       | method". I tend to write the programs so that it is almost the
       | algorithm I want to implement in psedo-code, and the go ahead
       | programming the functions that I assumed exist, again with the
       | same method. Each iteration in a new set of files, which
       | represents a deeper (less) abstraction, until I get to system or
       | library calls. Sometimes I made a wrapper for a library, so I
       | start parts bottom-up.
       | 
       | FF another 10 years, working in a different country and industry,
       | I see how important is to not be smart while writing code. Use
       | KISS principle. More and more the idea of "write psedo-code"
       | takes importance...
       | 
       | And I see how some industries, countries, or even continents, for
       | some estrange reason, are 30 years behind in computer science. I
       | see constantly people where I work defining all variables at the
       | beginning of the function, using kind of hungarian notation, (no
       | kidding, loop variable named nmp_CntIdx_si32), using inheritance
       | for absolutely everything, the concept of "has a" does not exist,
       | they insist in "is a" abstraction. I've seen inheritance chain of
       | 14 classes, one after another, to make a Kalman Filter, which
       | inherits from std::vector. Last but not least, they make every
       | single function a template, because "you do not know if later you
       | want to add the ability for other type". Mind you, is a BIG
       | company, making "safety critical" software...
       | 
       | All that to say: yeah, what does "meaningful" means after all. I
       | find more meaningful my beginning writing automation SW for
       | radios, as the stupidity I do today...
        
       | mysterydip wrote:
       | When I was little, I lamented that everything had already been
       | invented, I was born too late to really have an impact. Truth is,
       | there are people with problems all around that you might be able
       | to solve. The solution could be a simple script, a standalone
       | app, an online service, an embedded system, or something else.
       | I've done all of those at one point or another in my career.
       | Sometimes it would save someone an hour of work a week. Other
       | times it allowed a capability previously unavailable and
       | completely changed the way people were able to work.
        
       | jokethrowaway wrote:
       | I learned to program because I needed to get things done.
       | 
       | First I wrote a tool to check a bunch of coupon codes on a
       | website, then I taught myself to code to hack a friend who tried
       | to hack me. Eventually it turned into writing tools to hack
       | websites and then it turned into making them. Then it turned into
       | entrepreneurship, contracting and now bootstrapping small
       | projects which collectively make a good amount of money.
       | 
       | The key skill to effect change in the world (and reap the
       | benefits) is not programming, it's learning to think in terms of
       | product and use software as a way to deliver value.
        
       | sokoloff wrote:
       | Taught myself BASIC from the TRS-80 manuals, the "BASIC Computer
       | Games" books, typing in code from magazines, then took some
       | formal computing coursework in college.
       | 
       | The above was the start/spark, but actually learning to write
       | commercially useful code came from, well, working writing
       | commercially useful code at a series of startups and small
       | companies.
       | 
       | The specific area that I work/worked in isn't that important to
       | the question IMO. It's had a wide range spanning from gaming to
       | hedge fund to computer languages to business services. (Gaming
       | paid the worst but taught me the most per year.)
        
       | mickael-kerjean wrote:
       | With so many people laughing at the infamous top comment of the
       | Dropbox HN launch[1], I got obsess with the idea one day we would
       | be able to generate Dropbox like UI for any protocol like FTP by
       | implementing this simple interface:
       | 
       | ```
       | 
       | interface IBackend {                  ls(path)            []file
       | cat(path)           stream             save(path, stream)
       | rm(path)             mv(from, to)             mkdir(path)
       | 
       | }
       | 
       | ```
       | 
       | So I open source my work [2] as a result of that thought
       | experiment. Almost 7k github star later, there's about 40k users
       | who use my tool every month to access their FTP server, SFTP
       | server, S3, WebdAV and more protocols and was contacted by people
       | in places I would have never dream like NASA and MIT.
       | 
       | That project is a few order of magnitude more impact full than
       | anything I've done in my professional life and I'm super excited
       | to the prospect of developing the idea further as file manager
       | are an amazing abstraction. My mum can navigate through folders
       | and click on files but I would have a hard to time to explain her
       | what a tree is and a lot of complex system can be model as simple
       | file managers. A good example which was implemented in Filestash
       | [3] is a relational database, the db can be modeled as different
       | folders, tables as subfolders and rows as file which can be
       | edited and save back which would under the hood simply generate a
       | bunch of sql queries
       | 
       | There's still a lot to do but at this stage, it doesn't make
       | enough money to make it a full time job yet.
       | 
       | I learned how to code from a massive rabbit hole that started in
       | high school while trying to make myspace pages look nice
       | 
       | [1] https://news.ycombinator.com/item?id=8863
       | 
       | [2] https://github.com/mickael-kerjean/filestash
       | 
       | [3] https://github.com/mickael-
       | kerjean/filestash/blob/master/ser...
        
         | Izkata wrote:
         | By my extremely crude understanding, isn't that basically what
         | the FUSE filesystem interface does?
        
         | ok_dad wrote:
         | Thanks, I've been looking for "Dropbox on s3" for a while!
        
       | tromp wrote:
       | I learned programming my first computer, a Sinclair ZX Spectrum,
       | using its accompanying manual [1]. When I wasn't busy playing
       | games on it, I programmed things like maze generators and a
       | connect-4 player. Then I studied Z80 assembly programming to make
       | the latter run much faster. A few years later I started my
       | Computer Science studies at the university of Amsterdam...
       | 
       | [1] http://zxnext.narod.ru/manuals/Basic_Programming.pdf
        
       | david_allison wrote:
       | I'm self-taught. I learned to program making flash games.
       | 
       | I started making meaningful software because there was a bug I
       | wanted to fix.
       | 
       | I continued making meaningful software because someone sent me a
       | hamper of chocolates a couple of years back.
       | 
       | I continue making meaningful software for many reasons, but
       | primarily: I'm altruistic by nature. I talk and I listen to
       | problems.
        
       | stephenpassero wrote:
       | RoleModel Software's Craftsmanship Academy - A hands on, two
       | months of intensive training, followed by a ~1yr apprenticeship,
       | working with a mentor on actual projects.
       | 
       | I highly recommended it: https://craftsmanshipacademy.com/
        
       | incomingpain wrote:
       | I have 42 github stars, I suspect that's not impressive but
       | perhaps meaningful enough.
       | 
       | >Now, it is used by quite a few people so you maintain it and the
       | revenue it generates is your primary source of income.
       | 
       | I kind of wish I knew how to do that. I have 2 fully functioning
       | products but I have no idea how I go about trying to sell them
       | and give random people access and support problems etc. All the
       | while still holding a job so I can pay the bills.
       | 
       | >If the above description fits you, can you recall how you
       | learned to program and build meaningful things? More importantly
       | what drew you towards programming, and not another subject? And
       | if possible, mention THE meaningful software you wrote.
       | 
       | So I went to college whose tagline was that you are already
       | skilled sysadmin and you want to upgrade or refresh your skills.
       | In reality it was a class full of people who vaguely knew how to
       | type.
       | 
       | So in my boredom I bought a 'learn C programming' book and taught
       | myself how to program. I had already known bash and dos pretty
       | well. C# and .net probably would have been the better choice but
       | they were new at the time and not linux compatible.
       | 
       | The awful syntax of C really damaged my software development
       | track. Many years later I got into python and frankly I wish I
       | had gotten into python forever before. Now I love programming.
       | 
       | So my 2 private projects. 1 is a honeypot network which produces
       | a threat feed of ip address in txt and stix output. Pretty much
       | all the usual nextgen firewalls can ingest and block traffic.
       | 
       | The other is an NCM built with django. If pulls configs off the
       | usual networking devices but also effectively runs a report to
       | tell you what rules you are breaking in the security hardening
       | guide.
        
       | scombridae wrote:
       | Why cast such a judgmental net? I think you'll find common skill-
       | building stories between the meaningful folks and the meaningless
       | losers (I fall squarely in the latter camp).
        
       | notjustanymike wrote:
       | An important lesson I learned is that meaning and complexity are
       | rarely linked. The most profitable code I wrote for a company
       | took under a week and truthfully any mid-tier web developer could
       | have done it. The code with the largest reach (millions upon
       | millions of people) was an afternoon script. I've lately come up
       | with a term for meaningful code: Friday Features. Little things
       | you do on a Friday afternoon that have an outsized impact.
       | Meanwhile a project I worked on for months didn't move the needle
       | at all.
       | 
       | How did I learn? Started coding in college, about as mundane a
       | start as you'll hear, but it does kinda prove my point that
       | meaning and work can be very detached from eachother.
        
         | Aromasin wrote:
         | I can vouch for this. Major project that took months of my time
         | and effort? Seemingly little impact; sometimes I question where
         | it was just management trying to keep me busy. Minor feature
         | added to a tool as a side project? Seems like every damn person
         | in the company, and all of our customers, use it on a daily
         | basis. Funny how these things work out.
        
           | michalc wrote:
           | I have a very minor example of something similar myself:
           | 
           | A quick 1-liner Stack Overflow answer that addresses a common
           | typo is my highest rated answer. Those that I spent hours (or
           | maybe even days!) answering: almost nothing.
        
         | notjustanymike wrote:
         | By the way, "Export to CSV" is the most meaningful feature you
         | can add to any project, regardless of purpose.
        
           | astrange wrote:
           | I've found JSON is extremely useful in command line tools,
           | but with CSV people try to handwrite parsers for it that
           | can't handle commas in fields.
        
             | mt_ wrote:
             | This is true, I even remember writing a few CSV files in
             | Ansible, of all things, a few years ago.
        
             | P5fRxh5kUvp2th wrote:
             | 1. Most people are using tools
             | 
             | 2. CSV parsers are easy to write
             | 
             | I know I know, someone once said it was hard, everyone else
             | wanted to be smart and started reporting it.
             | 
             | What CSV is, is ambiguous. But if you're ingesting CSV
             | generated by the export function of a tool, that's not
             | ambiguous.
        
               | bee_rider wrote:
               | It seems like, at least, converting a flat JSON record to
               | CSV (or vise-versa) should be a one-liner in lots of
               | cases.
               | 
               | Usually I want CSV, it is because I'm playing around with
               | data on the command line and doing grep/cut/and so on. If
               | I has something that output json... that miller tool is
               | supposed to be good for this sort of stuff I think.
               | https://miller.readthedocs.io/en/latest/
        
               | astrange wrote:
               | Usually I use jq (https://stedolan.github.io/jq/) though
               | I think it has a newer fork now.
        
       | seekup wrote:
       | I've been trying to program computers since I first got my hands
       | on one. Once, when the family PC broke, it came back from the
       | repair shop with a christmas card having been pulled from deep
       | inside the floppy drive, because I was playing at operating it. I
       | was probably 5. I made my first web page in the mid-nineties as a
       | pre-teen. Eventually I got a BS in Computer Science, did lots of
       | full-stack development and went on to manage Infrastructure teams
       | first for Yelp and then for Uber. I wrote key pieces of software
       | at both companies, used to manage probably petabytes of data and
       | provide core functionality to tens - hundreds? - of millions of
       | people. And I managed teams that took that even further.
       | 
       | But my earlier forays - writing macro bots on AOL and messing
       | with the eggdrop source code on IRC - were just as meaningful;
       | they hold the same place in my heart, even if they didn't have
       | the same commercial success.
       | 
       | For me, my love of programming has never been about the value
       | delivered. I've never really _cared_ , in my heart, about how
       | meaningful the product was (which is not to say I didn't make
       | career decisions to optimize for that).
       | 
       | There are three things that have always driven me.
       | 
       | The first is an appreciation for the aesthetic elegance of a
       | finely written program. A good source file is like a poem to me;
       | even the paragraphing is part of the code, and I take great pride
       | in crafting it. I never learned to draw or sculpt, but I poured a
       | lot of what I think is a similar energy into my code.
       | 
       | The second is a sort of visceral awe for the speed with which a
       | computer can do something, once I've given it sufficiently
       | elegant instructions. I remember downloading the complete works
       | of Shakespeare off Project Gutenberg in university, and feeding
       | it into a word count program I had written for an intro
       | programming class, and it spat out an answer in less than half a
       | second. Every single word written by the greatest artist of the
       | English language, boiled down to an integer in less than the time
       | it takes a clock to tick. If I hadn't already been sold, that
       | moment would've done it. What power!
       | 
       | And then lastly, I've always appreciated that outside of
       | academia, programming is just a tool to accomplish some other
       | task. I've worked in multiple industries that I wouldn't have
       | known anything about otherwise, because I am skilled operator of
       | a very versatile tool. I have my craft, and I get to apply to a
       | myriad of problems, and that has helped me to build my "ocean" of
       | knowledge an inch deep, which is a source of joy for me.
        
       | mradek wrote:
       | I'm a full stack (web and mobile) engineer. When I was on product
       | teams building the actual app experiences, I was so much happier
       | and fully engaged. I thrive from customer feedback calls and
       | working with product manager to build the best solution for the
       | problem at hand. Probably built a dozen calendars and complex
       | grid layouts, tested a few different cart/checkout flows, and
       | improved performance for a tool by rethinking the way it was
       | stored in the database that made it way more flexible for other
       | purposes.
       | 
       | Now I work on purely backend, mostly services for other services,
       | infra stuff, and it's honestly so boring and dull. I know it's
       | important work as well, but it's just not my cup of tea.
       | 
       | Unfortunately it seems that building products doesn't pay as well
       | as doing this purely backend plumbing. And I want to work on
       | products which people out in the fields or in some specific
       | industry use to do their jobs better. When I was doing this, I
       | felt like I was actually making peoples work experience (and
       | probably sanity) better.
       | 
       | Anyway I am a self taught and I just learned using YouTube
       | videos, official docs/readme, looking at peoples code on GitHub,
       | and also building out my own silly ideas. Probably have a hundred
       | directories of half+ baked projects.
       | 
       | Feel free to reply if you work on an interesting product (please
       | no dashboards for monitoring cloud systems :sob: lol) and looking
       | for a guy who loves to build great app experience. Also down to
       | discuss ideas!
        
       | obsidian743 wrote:
       | I mean, I've written lots of software that's "meaningful"
       | according to your definition, but is still not impactful beyond a
       | limited scope. For instance, I've written code that helps
       | borrowers manage their student loan accounts from a major loan
       | servicer (about ~8 million users). I've written ERP software,
       | help desk ticket management, proposal management software, HR
       | compensation analysis, IoT security, banking account management,
       | and all kinds of other things.
       | 
       | I started learning how computers work back in the 80s/90s because
       | we were poor and I had to hack my computers to work with the
       | games I wanted to play. So I'm running Doom on a POS 386 and have
       | to hack/tweak everything from DOS to the modem init string when
       | playing over TCP/IP. I had started to learn batch scripting and
       | some QBASIC around that time as well. I learned QBASIC because I
       | wanted to create my own "snake" game and eventually my own RPG.
       | 
       | When I was around 10, I went to "bring your kid to work" day for
       | a friend of my dad. He was a programmer who wrote C/C++. He gave
       | me a copy of Borland Visual C++ and a book. I started learning
       | what I could but it was silly console stuff. Eventually the web
       | came out with HTML and Javascript v1 and I started creating my
       | own web pages for myself and for random businesses like my local
       | church and some friends. By the time I was 16 I got a kick-ass
       | job programming and doing IT stuff for the American Military
       | University, coding in Visual Basic, Visual C++, Java, and other
       | random stuff. Skipped college because I got an offer from a major
       | defense contractor making great money for a 18 year old. Now I'm
       | on track to be CTO within a division at a major company (I'm 40
       | years old).
        
       | pengo wrote:
       | In 1990 I was programme director of a radio station and had an
       | ongoing requirement that only software could efficiently deliver.
       | There was no suitable app available and I had neither the budget
       | nor management permission to pay for it to be written. In the end
       | I said "How hard can this be?", took home a (very primitive)
       | laptop with DOS and GB-BASIC on it, and taught myself to code.
       | 
       | With the lessons I learnt from that I bought a c compiler and
       | kept learning. Six years later I left the radio industry to work
       | full time as a developer.
        
       | keikobadthebad wrote:
       | I learned to code before the Internet so there was a very small
       | amount of examples and I had to trial and error the rest. My
       | first code was bad quality, but it did work.
       | 
       | After that I had many things to feel bad about from previous
       | works and was motivated to do the next thing better, finding my
       | own ways to improve it, not always hitting on the best way.
       | 
       | Then FOSS started up in earnest and I could work on and learn
       | from sources like Linux, suddenly the areas I was lacking in
       | could jump forward and my code was more than good enough for my
       | own foss projects.
       | 
       | I have a liberally-licensed project used by a lot of people for a
       | long time. But I can't find a way to make any money from it.
        
       | silisili wrote:
       | Ignoring Commodore/BASIC, which I really just used to load things
       | more than programming, I think my first actual programming was
       | QBASIC in elementary school. My nerdy friend knew some, I watched
       | over his shoulder and tried my own.
       | 
       | By 11 or so, I became fascinated with AOL 'proggies' and picked
       | up Visual Basic. Made a few of those. Ended up writing a
       | keylogger on commission that I believe partly led to a man's
       | murder. Story for another day.
       | 
       | After that I lost interest in programming with typical teen
       | stuff, didn't really even use a computer much until later...I
       | guess 21 or 22. Hired to do menial data entry tasks, and decided
       | to automate my way out of it. Next job, same thing. Decided to
       | read a few Python books instead of just Googling as I go as I did
       | as a kid.
       | 
       | Over the years since, it's mainly just been picking up things as
       | I need them or they interest me. Learned enough C to work on an
       | open source library. Learned Go because Python deployments were
       | annoying(among other things), and so on.
        
         | closewith wrote:
         | > Story for another day.
         | 
         | Story for today, please?
        
           | silisili wrote:
           | Well...here goes.
           | 
           | Mom used to have an AOL buddy she always talked to. Di57 was
           | her screen name, and what she called her when talking to us
           | about her. They were about the same age, both married, had
           | kids, etc, so a lot in common. They'd talked for at least a
           | couple years, I guess.
           | 
           | One day the lady asked her if I could write something to see
           | what her family was chatting about... in the guise of
           | 'protecting my family' and nothing more. We figured it was
           | probably about the kids. I forgot what she paid me, $20 or
           | $50. So what I wrote wasn't actually a keylogger, but used
           | win APIs to grab text from IM windows, and store that. Didn't
           | know how to really hide it or piggyback it, so just gave it a
           | name like 'win32xxx' something or other, hell it's been more
           | than 20 years now.
           | 
           | Didn't think much of it really, one day Di57 told my mom her
           | husband was cheating on her with multiple women, telling some
           | his wife was dead, some he wasn't married, some they were
           | separated etc etc. Sad news. They kinda didn't chat much
           | after that.
           | 
           | This is where I get fuzzy because I don't remember exact
           | timelines, but at some point not immediately... I'd guess 4
           | to 16 months later, her husband died. She was convicted of
           | his murder, and apparently it became a big thing because of
           | cold case or snapped or something or other(I hate those
           | shows). Her name was Diane Fleming...in prison still AFAIK.
           | 
           | I don't say this to brag, or feel any guilt or anything. Just
           | something that always sat in the back of my mind -if- things
           | would have been different if I hadn't done that.
           | 
           | Some of these details and timelines may be off, I guess I
           | never really thought about it much recently. For some reason,
           | I remember us both thinking she was guilty, I think there may
           | have been other pieces of things she'd said I'm forgetting.
        
             | tacheiordache wrote:
             | https://magnesiumandhealth.com/murder-by-methanol/
        
             | closewith wrote:
             | Wild. Thanks for sharing.
        
             | HeyLaughingBoy wrote:
             | > -if- things would have been different if I hadn't done
             | that.
             | 
             | She would have found out some other way and probably with
             | the same result.
        
         | HeyLaughingBoy wrote:
         | > writing a keylogger on commission that I believe partly led
         | to a man's murder
         | 
         | Whenever I see something like this I remember the batch script
         | I helped someone write that I later learned assisted in his
         | suicide.
         | 
         | I guess it was meaningful software, but he would have done it
         | anyway.
         | 
         | Anyway, I learned BASIC from reading books & magazines. Went on
         | to write a lot of shell scripts, FORTRAN and BASIC programs in
         | college. Started learning C around graduation and continued
         | onward...
        
       | nonameiguess wrote:
       | Probably the things I wrote that get the most use are image
       | chipping and embedding components for the Navy's Maritime Domain
       | Awareness system, all of the updated security labeling for the
       | NRO's first-level ground processing, many of the Jenkins pipeline
       | libraries used for development automation within GEOINT programs,
       | and some ETL scrapers for the APIs of various project management
       | systems to pull into a corporate metrics warehouse.
       | 
       | I started out in my mid-30s when I went back to school for
       | Applied Math, originally intending to try for the Army's ORSA
       | program, as Applied Math for most of the past 50 years has
       | inevitably involved a lot of computer programming, then
       | simultaneously discovered I liked programming even more than I
       | liked math, and I wasn't going to be able to stay in the Army
       | thanks to spinal degeneration, so switched to Computer Science.
       | 
       | That said, I'm still largely self-taught anyway. School only goes
       | so far, and most courses expect you to come in already knowing
       | how to do the basics. That involved the same steps to learn
       | anything else, lots and lots of practice. Some books, mostly the
       | C/C++ classics by K&R and Stroustrup, some supplemental courses
       | on specific applications and technology stacks I found in
       | Coursera, and ultimately making my own toy Linux distro with its
       | own package manager and configuration management system after
       | going through Linux From Scratch a bunch of times and getting
       | tired of all the manual steps.
       | 
       | Really, though, how to make anything "meaningful" was mostly
       | learned on the job. Other than I guess tiny utilities that are
       | part of a standard GNU or BSD system, there isn't a whole lot of
       | meaningful software written by one person. Most of it exists for
       | decades and is worked on by hundreds of people who may not even
       | be alive at the same time. Unless you're contributing to some
       | _really_ big OSS project like Linux or Kubernetes, it 's hard to
       | get that kind of experience outside of being employed.
       | 
       | That's probably largely due to language choice, though. C and C++
       | are very mature languages that have been around a long time. No
       | matter what you might want to do with them, chances are a library
       | that provides the bulk of the building blocks you need already
       | exists, thanks to the GNU project, libc specification, OpenSSL,
       | curl, Boost, QuantLib, Armadillo, so many decades of prior work
       | and the fact they've been the major working languages used in
       | universities and research labs. Developers coming up in the
       | JavaScript and Rust ecosystems these days face a more greenfield
       | world where the opportunity to make smaller reusable components
       | still exists, plus the web is inherently a less stable platform
       | than OS APIs, and both of those are less stable than implementing
       | math algorithms that have been known for centuries, so the
       | situation is different there.
        
       | bheadmaster wrote:
       | I've only done a few personal projects for friends - image
       | scrapers, PDF splitters, and such small utilities, but I've done
       | quite a lot of work for the company I work for (my first job,
       | still employed there).
       | 
       | I've learned quite a lot of theory at college, but I've learned
       | the most by just writing code on my job. I've had quite a lot of
       | independence and ownership of my code - complete freedom to do
       | whatever I want to make it work - in the first ~2 years, so I've
       | written and re-written my software every time I found that I've
       | coded myself in the corner. After a while, I started to see
       | patterns of which ideas work well and which don't, my
       | understanding of programming in general has deepened a lot, and
       | I've become able to write just about any random web-service in a
       | reasonable amount of time.
       | 
       | In a nutshell: just write code.
        
       | arasx wrote:
       | I am self taught, formal education in a different field. I don't
       | know if this would answer your question perfectly but I believe
       | whatever success I had in delivering technology came from
       | curiosity. I remember always thinking about how things run under
       | the hood. Always ask questions. Pseudo-prototype how I would
       | deliver it myself. This would shed a knowledge gap in certain
       | areas because I would not be able to plan a certain step/process.
       | Then I'd focus on that area and learn. It all starts with a hello
       | world.
        
       | techwizrd wrote:
       | I work in aviation safety. I build data pipelines and statistical
       | and AI/ML models to identify potential hazards.
       | 
       | Like many, I'm self-taught and learned to program before formally
       | studying CS in college. I found my dad's copy of the K&R C book
       | and would sneak into my parent's bedroom at night to write code
       | on the family computer (he was jaded from his career and didn't
       | want me to become a coder). I'd debug during the day in school. I
       | found more programming books at the library and learned more
       | languages that way. I mostly learned by building little projects
       | constantly.
       | 
       | Curiosity is what drew me to programming. There was an endless
       | supply of interesting problems to think about and I wanted to
       | figure out how things worked--no different from a budding civil
       | or electrical or mechanical engineer wondering how the
       | infrastructure surrounding them worked. The big difference, I
       | think, is that software is considerably more accessible as a
       | young child than, say, building a bridge or building or robot.
        
       | TYPE_FASTER wrote:
       | My dad was a mechanical engineer. One of my first memories is
       | playing Hunt the Wumpus on a SYM-1 with him. Later, we had a
       | Commodore VIC-20, Commodore 64, etc. I taught myself BASIC. It
       | was really cool to be able to create so easily. Just turn the
       | computer on, and start typing.
       | 
       | Then I got a job writing BASIC around the time I was in high
       | school, and by the time I went to college, I was lucky, knew what
       | I wanted to do, and got accepted into the Computer Science
       | program as a freshman.
        
       | codingdave wrote:
       | I learned by playing with Apple Basic when I was a kid, reading
       | the user manual that came with the Apple ][. I was drawn to it
       | because it was fun... but I then put it away for my teenage years
       | because other things were more fun. I actually got productive
       | with code when I started work after college. I had an IT job, and
       | learned from the top-down, writing scripts to help the work,
       | writing low-code apps, and going deeper and more complex with
       | each new project. It was a couple years later when my job
       | officially changed to being a full-time developer.
       | 
       | I've now been doing it for a couple more decades... and I'm still
       | learning. Learning to code is not something to learn and then do.
       | It is something you learn continually for your entire career.
        
       | jcadam wrote:
       | I started with BASIC out of books and magazines on an Apple ][e
       | when I was in 3rd grade. My mother was (still is, actually) a
       | software engineer in the aerospace industry so I had a lot of
       | help getting started.
       | 
       | Later, I moved on to Amos on the Amiga and then C (Turbo C on DOS
       | at first) on the PC during middle school/high school. The web
       | came along at some point during this and I started in on Perl and
       | HTML.
       | 
       | Got a proper CS education at college :) and after graduating went
       | into the Army for 4 years (this was back in 2002).
       | 
       | After that, got into the aerospace/defense industry doing C++ and
       | Ada. Later, moved over to more IC-flavored work mostly in Java,
       | with some Scala and Clojure mixed in.
       | 
       | These days, I'm out of government work doing Clojure all day in
       | fintech.
       | 
       | Still learning to program. The meaningfulness of my work has
       | varied over the years :)
       | 
       | I've tried to spin up various side projects (both open source and
       | not) but have not been very successful at creating anything with
       | staying power.
        
       | culanuchachamim wrote:
       | I tried many times to learn programming in the internet
       | (Coursera, Udemy, YouTube, CodeAcademy, etc) and I was never
       | successful. I always managed to get a few lessons and things
       | strat getting complicated and I drop.
       | 
       | Two year ago, a family member, who have a very small charity
       | institution, and all the income/outcome was written up in a
       | notebook, ask me if I can digitalize the accounting. The simple
       | solution was a Excel sheet and done, but this person is very bad
       | with technology, so I was afraid that he would move something in
       | the excel and everything would be messed up. So I build with
       | Google sheets, google sites and Google forms a very simple web
       | application to record incomes and outcomes. Once I did that I
       | start working with Google App Script in order to automatically
       | send emails with invoices and reminders.
       | 
       | At the beginning I didn't had a clue of what I was doing, just
       | copy and paste code from the internet into Google App Script, and
       | following YouTube videos step by step. (Google app Script is a
       | cloud environment where you can run JavaScript code and connect
       | to Google products via API) With a few experiments I start
       | understanding what's going on.
       | 
       | I was very satisfied with the result and start looking for other
       | things to do and automate.
       | 
       | With the time I start involving html and JavaScript client side
       | code.
       | 
       | I became pretty good in those things, and all my learning was
       | basically looking in W3 school and stack overflow every time that
       | I needed to do something new.
       | 
       | I did a few web applications like this.
       | 
       | When one of my friends ask me if I can help him with some
       | automation and was willing to pay 500usd for something that took
       | me an hour, that rang my bells and I realized that I have
       | something with great potential in hands.
       | 
       | To make long story short, eventually I quit my job and start
       | making custom software for small companies.
       | 
       | Today I have about 10 softwares that my customers use an daily
       | basis and overall they are pretty happy with my work.
       | 
       | The big lesson that I learned: it's very hard to learn something
       | new if you don't have a clear purpose for it's application, and
       | for that reason it was always very difficult for me to learn how
       | to code, until I needed to solve specific problems. (Or the other
       | way to learn is to be in the right environment (collage) where
       | the specific goal is to not leg behind)
        
       | jmartin2683 wrote:
       | I've written a lot of software that made a lot of other people
       | lots of money, basically... initially in social media and now the
       | healthcare industry.
       | 
       | I 'learned to program' when I was a kid back in the 90's from
       | books that my mom's boyfriend had gotten me, trying to steer me
       | that way. I didn't like it much and it wasn't until many years
       | later that I picked it up again and got good, mostly driven by a
       | desire to understand how old video games worked.
       | 
       | The thing that took me from a dude who knows how to do basic
       | stuff to a senior engineer at a big company was having a mentor.
       | My real programming job came with a fantastic one and he taught
       | me pretty much everything I needed to know... he spent a lot of
       | time distilling many years of acquired experience into something
       | I could consume alongside him and I'll forever be grateful.
        
       | majora2007 wrote:
       | I build open source software, I have one project with nearly 2k
       | stars. It is a product itself and used by thousands of people. I
       | do this while also holding a job as open source doesn't pay
       | (although I do have donations).
       | 
       | I've always enjoyed learning and coding, especially when I was in
       | college. I remember in High School I learned about VB in Word and
       | fell in love with how fun it was (not the language). That sealed
       | me in and during college I would learn and code for fun, rather
       | than do the homework assignments. I've always really loved it.
       | 
       | I've learned from watching youtube, reading articles, reading
       | pull requests in software I liked or used, and just doing it. For
       | the project above, I did it in Angular, something I already
       | learned from work and C#, something I had touched a bit in
       | college but due to the cross platform (.net 5), i picked it up as
       | something to learn. Bought 1 course on Udemy, watched half of it
       | and started coding. It was always a program to meet my needs but
       | the lack of competition made me release it and grow with the
       | communities needs as well.
       | 
       | For anyone interested: https://github.com/Kareadita/Kavita
        
       | labrador wrote:
       | Books and trying things mostly
        
       | zegl wrote:
       | I've been building a lots of what's hopefully "meaningful"
       | software for over 10 years now, at startups (others startups, and
       | now my own), for open-source (zegl/kube-score being my most
       | popular OSS creation), and large enterprises.
       | 
       | I started to become interested in how computers where working
       | when I was ~12, mainly driven by boredom. I didn't know how
       | anything worked of course, but somehow was determined to create
       | my own website, and struggled my way into HTML and free FTP/WWW
       | hosting through various Swedish computer forums and guides. From
       | there I added to my knowledge step by step, I learned CSS to make
       | my sites less ugly, then PHP to be able to "log in", then
       | SQL/MySQL to be able to create a "guestbook", and then some
       | JavaScript, etc etc etc.
       | 
       | After a few years of spending all free time at the computer, I
       | got my first job/internship when I was 14.
       | 
       | During my first 6 years or so as a "programmer", I don't think
       | that I ever considered reading a book on any of the topics. I
       | just went at it, and copy-pasted and brute-forced my way forward
       | until things started to "click" in my head.
       | 
       | I very vividly remember a moment when I realised that I suddenly
       | knew how to create a website that would look exactly the way I
       | wanted, from scratch!
       | 
       | I was building things purely for fun, and started new projects
       | seemingly every weekend. But I kept shipping, and somehow
       | absorbed more and more knowledge.
       | 
       | These days I might read a book/paper/documentation to learn about
       | a new topic, but brute-forcing/learning-by-doing is still my
       | favourite way to learn.
        
       | diamondap wrote:
       | I started by reading the source code of Amazon.com's homegrown
       | internal customer service tools when I worked there in the 1990s.
       | Those were written in Perl. Then bought a book on C and started
       | fiddling with that.
       | 
       | I wrote CGI scripts in Perl for paying customers in the late
       | 1990s, then was lucky enough to move into a small company with
       | some top-notch programmers who taught me to write more reliable,
       | maintainable code.
       | 
       | The best lessons I learned early in my career came from having to
       | maintain my own code in production for years on end. You learn
       | not to cut corners and to avoid convenient hacks when you have to
       | maintain the code. You take the long view in your design, aiming
       | to prevent problems you now know how to anticipate. You seek and
       | implement best practices, because dealing with problems in live
       | systems is no fun at all.
       | 
       | There's an old saying: Always code as if the person who will
       | maintain your code is a violent psychopath who knows where you
       | live. When that person is you, you learn your lessons.
       | 
       | The systems I wrote early on helped researches run studies on
       | human subjects. Later systems helped digital archivists preserve
       | materials at multi-terabyte scale.
        
       | erwinh wrote:
       | Meaning-making is quite an ambiguous thing and mostly in the eye
       | of the beholder. Taking that as a starting point I basically
       | follow what others are responding to which led me to building
       | tools, data analysis and writing articles for the
       | digital/generative art community experimenting with blockchain on
       | the https://thestackreport.xyz.
       | 
       | Started out with posting some initial charts on twitter in 2021
       | which got good feedback and it grew from there. Hanging out in
       | art circles helps a lot btw for questioning what is 'meaningful'.
        
       | spieglt wrote:
       | I don't really know how many users I have, so I don't know how
       | "meaningful" my projects are, but I have found some of them
       | posted on French, Chinese, Greek, Russian blogs etc., so
       | hopefully they fill some people's needs besides my own.
       | 
       | https://github.com/spieglt/flyingcarpet
       | 
       | https://cloaker.mobi
       | 
       | https://github.com/spieglt/cloaker
       | 
       | https://github.com/spieglt/whatfiles
       | 
       | https://github.com/spieglt/winage
       | 
       | I learned to program because I was frustrated that after working
       | in IT consulting for several years, I still had no idea how
       | computers worked. I started with "Learn Python the Hard Way" and
       | "Automate the Boring Stuff with Python". Then got a job doing
       | some Windows consulting stuff, and they said they'd hire me as a
       | software engineer if I learned Go, which was a pretty easy step
       | from Python. I'd tried to learn programming as a kid several
       | times and always found it too frustrating. I started working on
       | side projects as a way to learn new languages, improve my resume,
       | and scratch my own itches. The hardest part was coming up with
       | ideas for useful/worthwhile projects. I was super frustrated one
       | day that the easiest way to get a file between two machines that
       | were right beside each other was sending them out to the internet
       | via Google Drive or Dropbox, which made me want to write "cross-
       | platform AirDrop", which became Flying Carpet. If you find
       | yourself wanting a simple piece of software that seems like it
       | should already exist, that's a great project idea.
        
       | zach_garwood wrote:
       | I've made a couple small apps for myself, but aside from those,
       | I'm struggling to think of any meaningful software I've written.
       | The software I write tends to facilitate making someone (but not
       | me) rich, but I'm not sure if that really counts as "meaningful."
        
       | spiralw wrote:
        
       | khedoros1 wrote:
       | I became interested in computers through games, and was
       | fascinated the first time I saw one play video (1993-ish?) That
       | grew into an interest in controlling them, with programming being
       | the natural route. I got a book of BASIC code when I was about
       | 11, and ended up being able to take some programming classes at
       | about 14. College for Computer Science meant some intro
       | programming classes, and I started taking part in programming
       | competitions.
       | 
       | After graduating, my first software that had much meaning to me
       | was "KhedNes", an NES emulator that I worked on, on and off, from
       | about 2008-2014. Professionally, I worked on a piece of backup
       | software that had 10s of thousands of companies as customers at
       | its peak. That was definitely a neat thing to think about.
        
       | d_t_w wrote:
       | I'm a founder and one of the point technical people for Kpow
       | (https://kpow.io). We're a bootstrapped, self-funded, global
       | business in a technical niche.
       | 
       | Kpow is a toolkit for Apache Kafka, so basically we build an
       | expert system for experts - it's a lot of fun. We are very, very
       | delivery focused. The idea came from my own experience through
       | the past 10 years building things with Kafka.
       | 
       | I like to think I'm a fairly effective programmer. The biggest
       | shift in my productivity came 15 years into my career when I
       | moved from Java to Clojure for delivery. It's not for everyone,
       | but it certainly changed my world.
       | 
       | If I am a good programmer it's because I started to copy my older
       | brother who was interested in programming back in the 80's when
       | we had a Spectrum 48k and I just didn't stop.
       | 
       | Since the age of 6 I have written or read programs almost
       | continuously except for the period between about 10-18 where I
       | played games and hung out with friends instead.
       | 
       | At times I have been a terrible programmer, particularly when
       | encountering a new languages and exploring ideas. That doesn't
       | bother me because I know in time I absorb details, accumulate,
       | and polish my own ability to delivery.
       | 
       | Behind it all though I enjoy programming and have stuck with it.
       | I think that's the main thing. It takes time. I don't believe
       | there are any shortcuts.
       | 
       | Keep challenging yourself, don't sit on the thought that 'My
       | Language Is The Best', that's the respite for programmers who
       | have stopped. You're only as good as your last three years so
       | basically ignore any boomers on the net with opinions.
       | 
       | The best programmers I've worked with don't have blogs, don't
       | write books, don't speak at conferences. They're too busy
       | creating things, often quietly, often in not particularly
       | glamorous settings.
       | 
       | It may be apocryphal but supposedly Steven King says the best way
       | to be a good author is to read and write a lot of books, I think
       | that applies to programming.
        
       | ok_dad wrote:
       | The meaningfulness is semi random but learning to program is
       | easy, just like learning anything else: put in the time. Spend a
       | bit everyday programming solutions to problems you have.
        
       | mindcrime wrote:
       | That's a complicated question to answer. My "learning to program"
       | over the years has been a mixture of self education from books,
       | formal education, on the job training, reading OSS code,
       | attending conferences, attending user group meetings, watching
       | Youtube videos, etc., etc.
       | 
       | But the bulk of it, IMO, was just reading books ( _Teach Yourself
       | C_ by Herbert Schildt was were it all really started for me) and
       | working through the exercises. So hours and hours and hours of
       | firing up Turbo C++ and going through the exercises in that book,
       | and then later others. I majored in Computer Science at UNC-W
       | (but dropped out before graduating) and that is where I was
       | exposed to the Deitel  & Deitel books, and after that I spent a
       | lot of time reading and doing exercises in _C:How to Program_ ,
       | _C++:How to Program_ , and _Java:How to Program_ by Deitel  &
       | Deitel.
       | 
       | There was more formal schooling that came after that era, but I
       | look at the _bulk_ of my programming education as being all that
       | reading and coding I did back in the late 90 's and very early
       | 2000's.
       | 
       | That said, I'm still learning even now, so the story hasn't been
       | fully told just yet. Maybe we get one of those Matrix style
       | direct neural interface things, so I can "jack in" and experience
       | a "Prolog? I'm going to learn Prolog??" moment before it's all
       | said and done.
        
       | TrackerFF wrote:
       | I started out coding on the side when I was a teen. Mostly just
       | building native GUI applications in VB and Java, maybe some
       | scripts here and there. I think it was a cool start because we
       | could easily do stuff that worked...things like chat clients over
       | our school LAN, scripts which would pull data/files from
       | somewhere, and send them to the people.
       | 
       | Then I studied at University, where I got a more fundamental
       | grasp of how things worked. My first job revolved around
       | industrial automation and such.
       | 
       | These days I work in data science / engineering, and I write a
       | lot of "useful" stuff for automating various tasks. It was really
       | fun to automate stuff which freed up around 1000 manhours a week
       | - not really impressive on the mega scale that many FAANG
       | engineers work on, but when the company has xx people working on
       | menial stuff which can be automated, you really do feel a sense
       | of accomplishment.
        
       | marssaxman wrote:
       | While I have never managed to create any software as meaningful
       | as the level I hoped my career would reach, writing code _has_
       | after all given me a lifelong career, so the things I 've made
       | must have meant something to someone.
       | 
       | I was a child, and computers were fascinating. I wanted to learn
       | everything about them. When someone showed me that I could write
       | a program of my own, that I could make the computer do what I
       | wanted it to - that was _it_. I dug into programming just as hard
       | as I see some kids now dig into video games, and I kept that
       | exploration up for decades.
       | 
       | Much of my career I've spent trying to pass along something like
       | that formative experience: in various ways, building tools which
       | empower people to take greater control of their own computers.
        
       | aatd86 wrote:
       | I've learnt to code first year of junior high school, after I had
       | started playing one of the first online MMORPGs (The Fourth
       | Coming) and wanted to create my own.
       | 
       | So I took up to download darkbasic (and after that darkBasic
       | Pro).
       | 
       | That's how I've learnt programming. Just as a way to create
       | things. That's definitely a driver for me, the ability to create
       | and put my taste and imagination into things.
       | 
       | (I've also learnt to produce music along with sound engineering a
       | few years later, for instance)
        
       | acaloiar wrote:
       | I learned out of necessity. At the time in the late 90s and early
       | 00s, Sourceforge was big (It was Github of the time). There were
       | multiple projects that I used and wanted to make modifications
       | to, so I learned the languages that they were implemented in to
       | do that. Over the years, those changes became less minor.
       | 
       | Eventually I started hosting a spinoff of Livejournal (LJ was/is?
       | open source), and my users were asking for private messaging, so
       | I added it by learning Perl. It was a great experience.
       | 
       | I mostly made sure that I was having fun and scratched my own
       | itch.
        
       | jqcoffey wrote:
       | I started doing impactful things by listening to friends express
       | a need for something (like a shopping cart for their auto parts
       | catalog circa 1998) and just doing it (they of course offered to
       | pay me). I had no real clue what I was doing in code at that
       | time, and had to learn a ton to get the job done.
       | 
       | Looking back on my career, taking vague requirements and turning
       | them into something useful after a hard slog through unfamiliar
       | territory is pretty much the common thread in all my successes.
        
       | mikessoft_gmail wrote:
        
       | dsiegel2275 wrote:
       | I've been lucky to have worked on and have built what I consider
       | both 'meaningful' and 'impactful' software throughout my now 25+
       | year career. I wrote code to help detect and analyze cracks
       | within nuclear reactor steam generator tubing, code that allows
       | US Army battlefield commanders to communicate intent and plans,
       | and most recently code that is democratizing access to adaptive
       | learning tools for higher ed.
       | 
       | How did I learn to program? I learned how to write code starting
       | in second grade, learned how to write production code as a member
       | of team in my first couple of real world jobs.
       | 
       | How did I learn how to build 'meaningful' things? Beyond coding
       | skills, I had to learn how to communicate effectively with
       | people. I had to learn how to present my ideas in group settings,
       | I had to learn how to listen to folks when they talked about
       | their needs and wants, and how to dig in and really understand
       | what was needed, coding-wise, to meet their actual real use
       | cases.
        
       ___________________________________________________________________
       (page generated 2022-09-30 23:02 UTC)