4 ms·
Ask HN: How did you get into a professional system programming life
Hi friends,
Wondering if you could share the story of getting into a professional sys prog life? The definition of System programming can be taken directly from wikipedia btw.
Did you get hired directly after graduation or did you gradually moved into one? Which decade was then?
Thanks for sharing =)
- PaulHoule 5y agoI am an applications programmer but I'm good at systems work which I occasionally have to do to make an application work. I think it was 1983 or so, I was about 11 years old, when I started programming 6809 assembly language, I did later for the PC, I'd say in 1988 you might write a program in Turbo Pascal but it was not unusual to use assembly. When I was in college I skipped the intro level programming class and took a class in C and in TeX instead. In retrospect I wish I'd taken a class in compilers. I earned a PhD in theoretical physics and did a lot of numerical coding to support that, then I went into the "real world" and started making interactive web sites. Circa 2010 or so I got interested in information extraction, writing parsers, etc. I can take a free class next semester but probably won't take that compiler class because I think I've self-taught myself past what is in that class. (Might take something to do with UI design or fine arts instead) I've also done my share of "data science" work where sometimes I'm faced with a job that would take 100 years to run and figure out how to get a really good approximate answer in 20 minutes and other tasks that involve finding bottlenecks in a system. Just lately I am getting into embedded systems, coding them in C because it's portable and pretty easy to do, but wanting to get back into assembly because C's "automatic" memory management is a complete waste for the programs I write.
- markus_zhang 5y agoThanks for sharing. I guess those Data science optimization requires some understanding of the inner workings? Embedded system programming is also fun. I did it for a few months but slowed down recently.
- PaulHoule 5y agoIn that case I mentioned part of it was a math problem (being able to prove that if I cut this corner it causes less than ε error) and the other part understanding how to do the computation with mechanical sympathy. When it comes to ML/AI things often the work just starts when a "data scientist" develops a model, often a lot of engineering goes into making the model fast and reliable. I worked on an neural network powered search engine for patents that came out just before GPUs were popular for neural networks. Somebody hard-coded the math to train and do inference on the network in SIMD instructions. If we wanted to change anything about the network, error function, training procedure, etc. we would have had to do assembly programming. It's terrible tedious work, and, worse than that, if you get the math slightly wrong you get a system that seems to train a network, it just trains the network slowly and poorly. Thank God I never had to change the network but if I did I probably would have lied to my boss and wrote an automatic differentiator and compiler to SIMD instructions because it probably wouldn't have taken much longer than a few rounds of doing it by hand and developing exhaustive test suites to know I did it right.
- tgflynn 5y agoThe definition you cite: "application programming aims to produce software which provides services to the user directly (e.g. word processor), whereas systems programming aims to produce software and software platforms which provide services to other software" seems to me to be too broad to be of much use in the context of modern software engineering. By that definition just about any software that doesn't include a UI could be considered "systems software", but I suspect most backend web developers don't consider themselves "systems programmers".
- markus_zhang 5y agoI think it's a bit vague now. I consider a lot of things to be sys prog as well aside from os/compiler/editor/embedded/db engine/other "classic" sys prog gig: - Writing operators for Airflow (extending frameworks) - Write editor plugins (extending editor functionalities) So yeah maybe I should give more thought on the question.