11 ms·
Career advice for young system programmers
- deleted 3y ago[deleted]
- cinntaile 3y agoThe advice boils down to: Contribute to open source and hope to get noticed. I was expecting something more actionable tbh, but it does make sense. It is a bit disappointing to read that systems programming jobs are basically out of reach unless you're willing to put in a bunch of free work.
- wccrawford 3y agoThat may be the advice, but what I actually saw was: "Be really, really good at what you do and someone will notice." That isn't possible for most people. They simply don't have the innate skills and drives that that person does. That person was always going to get a job because their passion shows through, and they do things. It doesn't matter if it's open source or not. Having a code portfolio when you apply, even if it's a private portfolio, would always have shown their skills.
- marginalia_nu 3y agoI don't think that's necessarily a problem. There are many lines of creative work where you basically need a knack for it to get anywhere. This is true in programming as it is true everywhere else.
- intelVISA 3y agoIt's a field where a single, good dev can be a 10-100x force multiplier and carry entire orgs. Suffice to say the bare minimum is to be good at what you do. :P
- reedjosh 3y ago> "Be really, really good at what you do and someone will notice." Isn't that just life though? Like do what you're passionate about because there's no point failing to succeed at something you're not that into.
- meiraleal 3y ago> That isn't possible for most people. They simply don't have the innate skills and drives that that person does. That person was always going to get a job because their passion shows through, and they do things. That is why the ones that have it get rewarded. Lots of good people don't know the next step, he is giving advice to those people.
- _benj 3y agoIt might not be necessarily free. From the story I got the V was looking to “switch jobs”. From personal experience, I once had to work with an open source library at work. I got very familiar with the inner workings to the point that it wouldn’t have been to hard for me to contribute, and I did have a few improvements in mind. I never did that though.
- uxp100 3y agoThey aren’t. The advice in the article isn’t bad, but it’s not the only way. An alternate path I would suggest is get hired by a large corporation who employs systems programmers, straight out of college. Straight into a systems role or not.
- epcoa 3y ago> unless you're willing to put in a bunch of free work. People pay ungodly sums to go to school. And even in countries with "free" education there is an opportunity cost. Let's not even get started on those that want/need to contribute to academia either as a stepping stone or a career. TANSTAAFL.
- avinassh 3y ago> unless you're willing to put in a bunch of free work. isn't most of open source eco system standing on free (often thankless) work? I am in no way insinuating they shouldn't be paid, just highlighting the current state
- glommer 3y agoIf you go to university for 5 years (which you should), and work your ass off to improve, isn't that "free work" ?
- cinntaile 3y agoWhy go to uni for 5 years to get a job in systems programming if you are talented? That seems like an awful waste of time. Learn C/C++, do 2 courses on operating systems and 1 on algorithms and data structures. Work on open source systems programming projects to get spotted. That's 4,5 years saved.
- ablyveiled 3y agoIt makes sense given that systems programming is more in the realm of cathedrals like Universities, whose whole M.O. to begin with is having you do free work, underpaid work, or even pay to do work
- _aaed 3y agoDo some work for my startup and I might hire you if it all aligns with my business plan
- glommer 3y agoHe happened to contribute to our project, but we hired another engineer recently with a lot of great OSS contributions to other project (yrs). Back in our ScyllaDB days, we hired a people from both Linux and LLVM. It's a great way to stand out.
- iamflimflam1 3y agoMy only advice for people starting out their career is to make sure you are surrounded by really good people. All the good things that have happened in my career have been because the people around me have been amazingly good. Find those people, and stick with them - they will take you to places that cannot reach by yourself. This also means you need to be friends with people and maintain those friendships. Also, if you ever find yourself feeling like the "smartest in the room" it's time to start worrying. You are not going to learn anything in that situation unless you are a very special kind of person.
- iamflimflam1 3y agoAnd to be clear "amazingly good" does not necessarily mean amazingly good at programming. There are other really critical skills.
- intelVISA 3y agoOr simply give the appearance of being amazingly good. Plenty of wiggle room to make a great living from optimizing for EQ over tech skill these days.
- fifilura 3y agoI agree, I dont give much for GPs advice. I have worked with some (actually quite a lot of) amazingly clever people that did not give me much more than a frown from time to time. Or if they are a bit more well behaved not even that. Find good mentors, i.e. nice people who have a good overview but will frequently take the time to discuss things on your level. And pay them back with respect of course.
- iamflimflam1 3y agoFind good mentors, i.e. nice people who have a good overview but will frequently take the time to discuss things on your level. And pay them back with respect of course. I guess for me, those are the people that I would include in the “amazing” bucket.
- 3y ago
- deleted 3y ago[deleted]
- Joel_Mckay 3y agoMove companies before you hate the job, and your presence becomes part of critical infrastructure. This advice may sound flippant, but it is actually quite relevant... =)
- antegamisou 3y agoThe author likes to point out how developer career online advice, blogs, rants etc. aren't applicable to low level programming roles, with a patronising tone but they're right nonetheless. Although embedded people will say the same about system guys, TCS researchers about all types of SWEs and so on. However they seem to be falling into the same pitfalls with the frontend rockstar programmer-influencers; omitting and even undermining the importance of formal computer science education. Especially if we're talking about getting into non-web development/IT roles, it's quite a lofty goal to expect mastery in programming complex software without some structured curriculum that will help you obtain the fundamentals to do so. And no, Coursera unfortunately won't make the cut most of the time. Get a degree in Comp. Sci/Comp. Eng or at least some STEM degree and then a Masters. I understand the US-centric view of tertiary education being a risk due to large capital investment but in the rest of the world where it's affordable/free, most would hesitate to hire self-taught developers, even in web development positions. The degree may not be enough for systems programming competency and this is where advice in the article about open source contribution comes to play, but I'd say it's kind of necessary unless you're some bunniefoo type of brain or idk.
- kubrickslair 3y agoI think it's worth noting that some of the most celebrated programmers have been self-taught – think Aaron Swartz, John Carmack, George Hotz and so on. Among leading academics also, it's not unusual to find those without formal undergraduate degrees in CS. Many come from mathematics backgrounds, including several Turing Award recipients. In the world of software development, degrees have often held less sway, and I think this trend will only become more pronounced. Too much focus on CS degrees I feel does not account for the inherent nature of the role - and I say this as a CS grad from a top school.
- eatonphil 3y agoAnother datapoint, Anders Hejlsberg (author of C#, TypeScript, etc.) didn't graduate from university. https://www.thecrazyprogrammer.com/2022/08/anders-hejlsberg-biography.html https://www.thecrazyprogrammer.com/2022/08/anders-hejlsberg-... However, I'm sure that the ideal (if not the norm) in systems programming companies is that you did finish at least a bachelor's degree. So it's not like you betting against formal education is a good idea.
- skowalak 3y agoWell, I could certainly have done without the patronizing undertone, but the advice is: work for free for my company, and I might hire you.
- bibabaloo 3y agoCan almost guarantee that they're underpaying V for the honor too.
- glommer 3y agoI can guarantee you're wrong. V is paid top dollar - especially considering his location.
- glommer 3y agowhat was patronizing about my post? Certainly didn't intend to.
- braza 3y agoIt's more about the tone itself that sounds posing some superiority due to the fact that you do systems programming. It seems that you have a huge experience and knowledge, and it's nothing about those things but how you convey your ideas coming with a very strong background. I'm not offended by the post because I am not your target audience, but seeing other comments here I can highlight some pieces that others can think that you're patronizing. > We kernel and database people think this discussion about whether frontend or backend is harder is kinda cute.you're all adorable! Right at the start you pose as some kind of "hardcore outsider" that poses as some old uncle observing some children playing around. That's the same tone and words. Of course I understand that this is an irony/joke but here you start to lose some people, specially when you talk about "carrer advice" that supposed to be something bit serious. > There are other developers. The ones writing databases, operating systems, compilers, and foundational building blocks that, if they do their jobs right, end up becoming almost invisible to the average programmer. We got the point of the "unseen work", but to set some importance you do not need to conflate and contrasting that with the experience of an "average programmer". If the "average programmer" does his/her job right you will have your food delivered in your door, your airline tickets being booked correctly, your municipality having the scheduling systems working, etc. Again, here you lost the opportunity to highlight why is awesome to work with systems programming. > Lots of the advice that you see on Twitter (X?), is especially bad when it comes to systems level software. Strong affirmation and I think you can have a hard time to support that with data. I know that is a personal blog and you can do your hot takes on medium, but again, it's not about contrast and more about to elevate how nice is to work with systems programming. > There’s a certain level of “move fast and break things” that you would never accept from your OS Kernel. Big statement and it can be completely debatable. I can say anedotically that this was true on Facebook and small companies... in 2016. The entire world of Tech involved a lot since, and for lot of products outage can mean end of an entire day of revenue. > The whole discussion of whether or not you should write unit tests sound frankly quite stupid from the point of view of a compiler author or some core Open Source library. This ends the first paragraph of your topic "Advice for systems programmers". So far you made contrasts, call names, say that systems engineering advice in twitter is bad, but no substance; no red meat so far in terms of advice. ... I can go on, but again I am not your audience, but I think the tone matters in those days and the article has some good gems, but the start of the text and tone distracts. Having that writing attitude to "contrast -> call names -> conflate via superiority -> show advice from a self pedestalized standpoint" used to work, but now I think we're in another internet. Thanks for the text anyways.
- nunez 3y agoSo this authors example of an ideal young systems programmer looking to get hired was one that provided (free!) significant contributions to their Golang client, their database and _an academic paper_, presumably over the course of many weeks (months?). I don't disagree with the advice of contributing to open source, but I hope they realize that they are essentially telling readers that contributing unknown amounts of hard, free labor is the best path to getting a job in this subfield of tech. (Meanwhile, the kid who went to Stanford will just apply and probably get an offer if their DS&A chops are fresh enough.) (Also, I'm guessing your contributions don't count at some places if your PR/MRs don't get merged, which is the other gnarly thing about open source that complicates this advice. Big open-source projects tend to have big politics behind them, even if they are all entirely online, like working groups, the release process, general disagreements (which will happen; every contributor is smart, and smart people love friendly debate!), etc.)
- MichaelZuo 3y agoWell you have to show your ~99.9th percentile in some way, somehow, among your cohort to get special notice by any serious group in any field. That's pretty much a tautology for a selective anything.
- mattgreenrocks 3y agoFeels like the trend lately for a lot of white collar jobs is overt gatekeeping. Don’t know if it’s a natural reaction to economic uncertainty or what, but the gatekeepers always seem to insist that everyone should be 100% committed to their job in their off hours. Feels like the no-lifers tend to run the show eventually. And I speak as someone who did exactly that in my 20s, and sometimes regret it.
- cristiancavalli 3y agoThis. The snarky tone definitely detracts from any sort of well-intended message hiding behind the virtue signaling of “I implemented a binary tree and I bet you couldn’t because you work on ‘frontend’” Good advice to new peeps in the industry: this tone and obviously inflated sense of self is the “smell” you should look out for and avoid.
- wofo 3y agoInteresting to see this here... I unexpectedly transitioned from full-stack development to paid open source systems programming a bit more than a year ago. It would have been quite more difficult without my contributions to the Rust compiler and ecosystem back when I was at the university, and it still feels like I got very lucky.
- artemonster 3y agomy advice: dont. tools suck, pay sucks, everything sucks.
- Palomides 3y agois it really the case that "senior full stack" is the only job anymore?
- meiraleal 3y agoIt makes sense, no? Somewhere in time, developing software was split into multiple jobs but the intention is still the same: computation with different I/Os.
- tester756 3y agoIt is sad, because you're right. Low level programming salaries are terrible in compare to web-oriented. I've literally witnessed people leaving semiconductor (so kernel development, compilers, firmware, etc, etc) companies for web dev because of $$
- crabbone 3y agoI was "lucky" to get into system programming on the cusp of Go introduction. I was a refugee from ActionScript world, and was looking for something else to do with my rudimentary programming skills, mostly looking for Python jobs, especially outside Web because going from ActionScript to JavaScript was way too depressing. So, I applied to a job posting that was looking for "Python programmers who want to learn a different language" (I think, at first at least, Go advertised itself as "almost like Python"). And then I've got a job in the automation department of the company, and from there it was more predictable and sure way forward. After a while I also had to interview people for positions in system. Obviously, I'd be overcome with joy if I ever had a candidate who knew what our product was and was contributing to the open-source parts of it... but nothing like this had ever happened. In most cases, people who came to interviews for system jobs weren't themselves system programmers. So, my task was to look for the best match among candidates who didn't generally match at all. It's ironic how much a typical programmer is completely unaware of how their computers function -- so, I was generally fishing for the bits of general knowledge about computers, and if a candidate could master a plausible explanation of how a particular computer component or a process could work, that was already a huge plus. Now, how can you possibly acquire this knowledge? -- Really, I cannot think of a better way than through contributing to an open-source project, if you aren't already hired by a company that employs you as a system programmer... College doesn't teach anything relevant. Even online boot camps rarely have anything relevant. There are some books, but, mostly woefully outdated and they don't generalize well. The knowledge mostly comes from first-hand experience and following various mailing lists, bug truckers and every so often a conference.
- jroseattle 3y agoThe author's intent here is for young engineers to build signal and reputation. Open source contribution is one potential way to go about that. Another comment here referenced the importance of a CS degree. There are other ways to go about accomplishing ways of signaling to gain reputation. As general advice for those early in their career, I find this to be inadequate. These tactics (no offense to the CS peeps) might "get you noticed", but that won't sustain if you don't back it up. A github account or a cert from your favorite uni might potentially get you in the door somewhere, but you will have built expectations about what people can expect from you once you're in the fold. Very few have ever kept a job because of their G/H reputation or GPA. The number of times I've seen a hire who was "noticed" that failed in their new role is almost meme-level. It's amazing how quickly credibility and reputation from that get-you-noticed effort can be burned down. By all means, make logical efforts to get noticed, but that will only take you so far. You will significantly improve that signal/rep when you translate your previous activities to skills, learning, and value as you go forward.
- elzbardico 3y agoI did some consulting recently for a startup on the data observability space. Performance and scalability were terrible. Not to mention other subtle issues like terrible coupling between services, between classes, terrible abstractions, the inconsistency of the naming in the domain model (e.g. an object that had one name in a set of micro-services, but was named completely differently in the UI and front-end code. And in general, the culture of the company was about churning out features fast, at the cost of anything else. Not surprisingly, as customers started to scale up their deployments, the problems started arising. And yet, the CTO refused to even acknowledge my advice, my carefully done benchmarks, my numeric projections. It was completely alien for him. He didn't understand that system software requires a more careful approach than your usual B2C e-commerce MVP.
- TrackerFF 3y agoI don't know if my experience is the norm or wildly different, but when I started out as an electrical/automation engineer, hiring low-level programmers was way closer to hiring "traditional" electrical/electronics engineers, than the modern leetcode SWE ordeal.
- _gabe_ 3y agoI thought I would give medium one more chance, thinking that maybe it has gotten better, it hasn’t. The author starts off with a self aggrandizing tweet from themself: > We kernel and database people think this discussion about whether frontend or backend is harder is kinda cute. you're all adorable! As someone that has a full stack web development job that also enjoys systems programming on the side, both are difficult in different ways and the only reason you could come to the conclusion that one is “harder” (whatever that even means) than the other is from a stance of ignorance. You literally do not know what you do not know. Than, the author’s only career advice is to contribute to open source. That’s great, not exactly earth shattering but not really worth the long winded article to get to that point. If the author is here, consider not starting your article with a self quoted rage-bait Tweet that adds nothing of value to the article. Maybe your intention is to capture engagement, but it leaves any reader that may have been interested in what you had to say and is a web developer disenfranchised. It’s very easy to dismiss an entire field of technology that you don’t work in without ever attempting it. It’s different to actually dive in and try to understand why there are problems and what those problems are.
- tacker2000 3y agoYea that tweet also left a sour taste in my mouth and actually made me stop reading right there. What’s hard, what’s easy? Who knows? Who cares? Are you a better engineer for being a systems guy? Come on, this is just such a petty mindset.
- tester756 3y agoThe biggest problem with system programming for me is that it is very often fully dependent on C / C++ world I wish we could get rid of that dependency and move to some better technology. There aren't many compilers-related jobs that don't rely on C++, sadly. Rust is promising as hell here.
- RickJWagner 3y agoThe author has co-opted the term 'Systems programmer'. In the original Enterprise computing environment (big iron), a 'System programmer' is one that maintains the operating system, transaction processor (CICS), network stack, etc.
- spinlock_t 3y agoIncoming hot take: Don't become a professional systems developer. Do it as a hobby. If the goal is to optimize for $$$ earned over one's career, there is more money in being a back-end/distributed apps developer. There are simply more roles (at the higher levels) and companies working on these problems. The progression for SW engineers is junior->senior->staff->principal->distinguished. As you get closer to staff, there are very few systems roles left. Some people never make it beyond staff/L6/E6. (One could argue that it's ok to stay at staff for the rest of your career and still make good money. But there's always more to be made.) And the ones that do, are the ones that spearhead new products/features (direct business impact). My 2cents, after 15 years as a system dev in the valley.
- Buttons840 3y agoI suppose this ultimately stems from that fact that if a program is ugly, everyone hates it, but if a program is insecure nobody knows, and if they find out they don't care.
- gumby 3y ago> Incoming hot take: Don't become a professional systems developer. Do it as a hobby. If the goal is to optimize for $$$ earned over one's career Deep systems programmers get paid a lot. I'm sure there are other jobs that pay more, but if you make enough and like what you do, you should do what you like. Also higher up the abstraction chain you go, the more froth their it (I'm mainly thinking of frameworks, but this is true more generally) so you have to pay a lot of attention to what's going on. While the deeper you go down the stack the slower the slewing rate and the more time you have to understand the domain more deeply. Which, to go back to your "$$$" position, acts as a moat.
- raydiatian 3y agoThoroughly enjoyed this article.