Live data from Hacker News

Ask HN: HN people who write meaningful software, how did you learn to program?

news.ycombinator.com

21–30 of 76 posts

Re: Ask HN: HN people who write meaningful software, how did you learn to program?

#21

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.…

> 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...

Re: Ask HN: HN people who write meaningful software, how did you learn to program?

#22
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.

Re: Ask HN: HN people who write meaningful software, how did you learn to program?

#23
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.

Re: Ask HN: HN people who write meaningful software, how did you learn to program?

#24
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.

Re: Ask HN: HN people who write meaningful software, how did you learn to program?

#25
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.

Re: Ask HN: HN people who write meaningful software, how did you learn to program?

#26

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 hav…

By the way, "Export to CSV" is the most meaningful feature you can add to any project, regardless of purpose.

Re: Ask HN: HN people who write meaningful software, how did you learn to program?

#27
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.

Re: Ask HN: HN people who write meaningful software, how did you learn to program?

#28

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. Story for today, please?

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.

Re: Ask HN: HN people who write meaningful software, how did you learn to program?

#29
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.

Re: Ask HN: HN people who write meaningful software, how did you learn to program?

#30

Earlier quoted context omitted.

> Story for another day. Story for today, please?

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' a…

> -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.

Post reply on HN