[HN Gopher] Career advice for young system programmers
___________________________________________________________________
Career advice for young system programmers
Author : signa11
Score : 171 points
Date : 2023-08-18 08:33 UTC (14 hours ago)
(HTM) web link (glaubercosta-11125.medium.com)
(TXT) w3m dump (glaubercosta-11125.medium.com)
| TrackerFF wrote:
| I 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.
| nunez wrote:
| So 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.)
| crabbone wrote:
| This is like saying "if you have a lot of money to throw at the
| problem, you will likely solve it". The kid who went to
| Stanford _could afford_ to go there in the first place. A lot
| of things in life are different for kids like this one, hiring
| notwithstanding. That kind of "kid" probably won't need to go
| through the same job application processes as someone who could
| only afford a community college.
|
| Also... comparing time and money investment you'd have to make
| to get into Stanford to investment you'd have to make to
| contribute to an opensource project is orders of magnitude not
| in favor of Stanford.
|
| Also, as someone who actually had to hire for system
| programming jobs -- I wouldn't care about candidate's degree
| and would be put off if the candidate tried to force the
| subject. In my experience, there's very little overlap between
| system programming and college curriculum. So, I wouldn't be so
| sure the "Stanford kid" is getting a job. College education
| helps you get into "programmer mills" companies like the big
| names with large internship / junior education programs.
| Smaller companies who don't have the capacity to provide on-
| the-job education, especially in the face of low retention
| factor wouldn't be interested in hiring Ivy league graduates if
| graduation from an Ivy league university was the only thing
| going on for them.
| quickthrower2 wrote:
| I am against contributing to open source just to show chops
| especially if it means contributing to $corp's repo to try and
| impress $corp into giving a job. Just contribute (if you want
| to) to what is fun or gets you curious. As for bang for buck:
| more applications, more interview question prep > FOSS
| contributions from a standing start. If you invented clojure or
| something then that is something else. But you probably didn't.
| avinassh wrote:
| hey, I am the v from the post.
|
| > So 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?).
|
| That's not how I see it! I love databases and open source;
| libsql seemed right for me. I had no idea (or expectations) I
| would get hired by doing so. By contributing to open source, I
| am getting to work on some complex codebases where some
| brilliant people are helping me with my code in pull requests.
| Isn't that awesome?
|
| Sure, it may only work for some, and this isn't the only way to
| systems programming. It is totally okay if someone wants to
| take a different path.
|
| Instead of focusing on what's wrong, why not use this
| opportunity to help and guide others in a similar boat?
|
| To rephrase, how would you advise someone like me to change the
| domain from the backend to systems programming? For someone who
| doesn't have experience with systems programming, knowing only
| Python, and Go professionally. During the (previous) job, I was
| working on scaling micro services and building web backend.
| There was zero room for systems related stuff.
|
| [0] - https://github.com/avinassh
| mattgreenrocks wrote:
| Feels 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 wrote:
| This. 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.
| MichaelZuo wrote:
| Well 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.
| iamflimflam1 wrote:
| My 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 wrote:
| And to be clear "amazingly good" does not necessarily mean
| amazingly good at programming. There are other really critical
| skills.
| fifilura wrote:
| I 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 wrote:
| _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._
|
| I guess for me, those are the people that I would include
| in the "amazing" bucket.
| intelVISA wrote:
| Or 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.
| booboofixer wrote:
| > 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.
|
| I typically sit in an empty room, making me the smartest in the
| room by default. So im curious to know what you mean by "a very
| special kind of person", maybe itll help me learn better.
| notRobot wrote:
| > My only advice for people starting out their career is to
| make sure you are surrounded by really good people.
|
| I keep hearing this, but I have a hard time actually finding
| such people. There unfortunately aren't events like hackathons
| around where I live, so although I'm sure there are cool (in a
| professional context) people around me, I'm never able to
| figure out how to find them. I have an amazing set of friends
| but they're entirely into the arts so coming by tech work I can
| do through them is rare.
| wincy wrote:
| The smartest people around me seem to hang out at
| obscure/niche programming language meetup events.
|
| You're gonna get a very different crowd at something like
| your local Rust/Elixir meetup group vs the .NET User group,
| as it's likely a strong signal they like to tinker with new
| paradigms/programming languages vs just showing up for
| "networking opportunities".
| twic wrote:
| I'm not sure how well "like to tinker with new
| paradigms/programming languages" correlates with "really
| good", though. Some of the best people i've worked with
| were quite conservative technically (some weren't keen on
| this new 'Java' thing), but were masters at finding the
| right way to approach problems, being conscientious in
| their work, etc. The correlation coefficient probably isn't
| negative, but it's not 1 either. 0.3?
| busterarm wrote:
| Meetups are a crapshoot. When people are involved in the
| community out of passion it's a great thing. Unfortunately,
| and this was often the case at meetups I was going to in
| NY, a lot of folks are there to add organizing and talks to
| their professional reputation to get some kind of edge at
| work. These people also tend to find each other easily and
| coordinate to give each other the best opportunities.
|
| Not to single out any specific community here...and my
| experience especially in the Elixir community was lots of
| passionate people.
| iamflimflam1 wrote:
| One thing that tech people tend to focus on it tech. As I
| replied to my own comment, good does not necessarily mean
| "good at tech". Really talented people will attract other
| really talented people. You just need to make sure you are in
| the same orbit and "networking" with these people.
|
| An amazing artist will bring all sorts of fascinating people
| into there sphere of influence.
| rat9988 wrote:
| It makes the advice go from practical to superstitious
| though.
| bombolo wrote:
| > There unfortunately aren't events like hackathons around
| where I live
|
| last time i went was so bad that i decided to never go again
| :D
|
| > I'm never able to figure out how to find them.
|
| try meetups... they used to be active in my area prior to
| covid
| elzbardico wrote:
| I 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.
| [deleted]
| [deleted]
| Joel_Mckay wrote:
| Move 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... =)
| RickJWagner wrote:
| The 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.
| wofo wrote:
| Interesting 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.
| spinlock_t wrote:
| 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,
| 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 wrote:
| I 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 wrote:
| > 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.
| cinntaile wrote:
| The 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.
| glommer wrote:
| If you go to university for 5 years (which you should), and
| work your ass off to improve, isn't that "free work" ?
| cinntaile wrote:
| Why 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.
| wccrawford wrote:
| That 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.
| reedjosh wrote:
| > "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.
| marginalia_nu wrote:
| I 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 wrote:
| It'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
| meiraleal wrote:
| > 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 wrote:
| It 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.
| avinassh wrote:
| > 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
| uxp100 wrote:
| They 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 wrote:
| > 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.
| nunez wrote:
| TANSTAAFL = There ain't no such thing as a free lunch
| meiraleal wrote:
| So it is worst than free - it is work paid by yourself.
| Better dedicate 5 years to open source then.
| ablyveiled wrote:
| It 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
| artemonster wrote:
| my advice: dont. tools suck, pay sucks, everything sucks.
| tester756 wrote:
| It 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 $$
| Palomides wrote:
| is it really the case that "senior full stack" is the only job
| anymore?
| meiraleal wrote:
| It 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.
| skowalak wrote:
| Well, I could certainly have done without the patronizing
| undertone, but the advice is: work for free for my company, and I
| might hire you.
| glommer wrote:
| what was patronizing about my post? Certainly didn't intend to.
| skowalak wrote:
| Thank you for asking, since I dished it out I will try and
| explain what gave me that feeling, although @braza has made
| some excellent points already.
|
| First off, thank you for the article, it was certainly
| interesting for me, being a newcomer in the industry myself.
|
| What I did not like about it began after the first two lines
| with you quoting your own twitter post, which gave me real "i
| only listen to real music" vibes in the first sentence alone,
| but the _" you're all adorable"_ took it from a bit edgy to
| condescending. Given, that might have been an attempt at a
| joke which I simply did not get.
|
| Then the part about the _" common discourse"_ which I really
| failed to understand, because in my experience there are lots
| of different specializations when talking to fellow
| developers and this _frontent /backend_ divide you perceived
| I did not.
|
| And finally all that talk about contributing to meaningful
| Open Source projects, thereby implying that there is a league
| of _worthy_ projects and other projects that are wasting ones
| time. Then, by chance your company maintaining some of those
| _good_ open source projects and the anecdote of V
| contributing to one of your projects a lot, to get hired
| eventually.
|
| To me this is just saying: "Work for free for software
| companies, and if you only work hard enough, maybe someone
| will notice". And while that may even be the truth, I just
| don't find it good advice to give to people trying to become
| developers, frontend, backend or whatever.
| cristiancavalli wrote:
| Try the tweet at the top of the page for a start.
| braza wrote:
| It'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.
| glommer wrote:
| ok, I can see how the tweet on the top of the article can have
| that effect. In my defence, this was a humorous tweet that
| happened in a week where everybody on twitter, frontend and
| backend, were dunking on each other. So I wrote that in a
| humorous way. Lots of people liked it and it was funny, so I
| decided to open the article with it.
|
| However taking a step back, if you don't have the context
| around the tweet, it can certainly be seen this way.
|
| Since it was not my intention to have that tone, I will remove
| the tweet from the article.
| bibabaloo wrote:
| Can almost guarantee that they're underpaying V for the honor
| too.
| glommer wrote:
| I can guarantee you're wrong. V is paid top dollar -
| especially considering his location.
| antegamisou wrote:
| The 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.
| crabbone wrote:
| > Coursera unfortunately won't make the cut most of the time.
|
| This is a truly bizarre take... Coursera offers much of the
| same courses you'd get in a BCS or sometimes also a MCS degree.
|
| Add to this that most colleges are downright awful, with
| hilariously incompetent professors / TAs... and virtually none
| really prepares students for working in programming industry,
| (nobody teaches version control, project management,
| infrastructure, editing tools, quality control). There's very
| little a programmer can get from going to college in terms of
| useful knowledge.
|
| In my opinion, it's better to pick up a few books on some
| theoretical aspects couple years after you have enough of
| practical experience with programming in industrial setting.
| Coursera would help here. College would be hugely problematic
| due to being a huge time sink (inconvenient and rigid times for
| lectures, workshops etc.), hugely expensive, and, in most
| cases, outright lower quality.
|
| Degree is good to show something to HR, especially if you have
| nothing else to show... other than that? -- not so much.
| jebarker wrote:
| One thing university can do is help minimize procrastination.
| If you have financial and socially visible skin in the game
| you have a reason to show up and do the work as prescribed. I
| personally find it hard to stick with Coursera courses but
| never had a problem completing university courses. YMMV
| jstx1 wrote:
| If you're not 18 and starting from scratch, you can learn these
| things without getting a degree. The overall point that I agree
| with is that you shouldn't neglect fundamental knowledge in the
| field regardless of whether you have formal CS education.
|
| > And no, Coursera unfortunately won't make the cut most of the
| time.
|
| Some of the best universities in the world have computer
| science materials online (on Coursera and youtube), I don't get
| how that's inadequate.
|
| > most would hesitate to hire self-taught developers, even in
| web development positions.
|
| Not true for experienced candidates. If you have no experience,
| you rely on your degree to get the first job; and if you don't
| have a degree, it can be difficult to bootstrap that process
| but the further you get in time from your education, the less
| relevant it is.
| epolanski wrote:
| I really disagree with your point of getting a degree.
|
| Don't get me wrong, I don't personally think that a CS degree
| is useless (or an engineering one). I hold a masters in
| chemistry and if I could go back and make it a cs one it
| would've been better all things considered.
|
| But I think the following:
|
| - getting a degree says very little about how much a person
| learned or absorbed. So much depends both on the quality of
| teaching (often low even in ivy league colleges where you're
| taught by assistants, ugh) and the learner. I've met many
| engineers with a degree obtained cum laude and they just didn't
| have fundamentals. They would know everything the day of the
| exam and have no clue about the topics just few months later.
| They got the degree to find a job, not because they cared. On
| the other hand some of the most impressive devs I know where
| self taught. Even among core Linux contributors plenty do not
| have any degree.
|
| - internet has nowadays an endless amount of resources, nothing
| can stop a motivated and disciplined person from getting good
| at non-natural sciences such as maths and cs.
| tayo42 wrote:
| > if I could go back and make it a cs one it would've been
| better all things considered.
|
| I wish there was a better way to go about this. It sucks I
| wasnt mature enough to take advantage of college or have the
| foresight to know what I wanted to do with my entire life
| when I was 17 and started.
|
| Now to get credentials, Im looking at 2-3 years of 30 hours a
| week of work and thousands of more dollars.
| the_only_law wrote:
| > Now to get credentials, Im looking at 2-3 years of 30
| hours a week of work and thousands of more dollars.
|
| Yeah this is my problem. I could get so much more out of
| education than I probably would have when I was 17, but
| It's impossible to work a decent full time job and go back
| to school. The schedules simply won't allow it. Part time
| work pays shit, and I somehow have to afford not only
| tuition, books, fees, etc., but a cost of living that only
| gets more and more expensive.
|
| You can trade money for time (or really spread money with
| time) in this case, but I have no interest in spending 10+
| years just to have wasted what left of my "youth" in
| exchange for an undergraduate degree. Time IMO is more
| valuable than money, because there's no chance in hell you
| can ever get it back.
|
| I'm also not interested in getting a degree just for the
| sale of having a degree, or even as an economic mobility
| vehicle. Technically if that's all you want there are
| programs out there, but tend to come with too many
| stipulations for my taste.
| JohnMakin wrote:
| I wouldn't say impossible. In my late 20's I pursued a CS
| degree from a tough school by utilizing online courses,
| and taking jobs that had enough flexibility to work
| around my school schedule. Not easy, but I am at least a
| counterexample why it isn't impossible. It took me about
| 1 year longer than I think it would have taken someone
| who wasn't working, though.
| the_only_law wrote:
| > and taking jobs that had enough flexibility to work
| around my school schedule.
|
| Where? Most jobs I can think of offhand that offer that
| sort of flexibility pay a pittance, like barely enough to
| live, let alone pay for large education expenses on top
| of that. I suppose you can also find work at night, while
| doing schooling for the day, but I wonder how the sort of
| sleep schedule imposed by that will effect you work in
| both.
| JohnMakin wrote:
| I can't really say without exposing my identity in a way
| I'm not comfortable with, but I took a lot of work at
| night if I could, and if not, I took flexible jobs like
| Uber/Lyft that allowed me to make my own hours. My main
| gig allowed me to reschedule and move stuff around if I
| had to, which was critical.
|
| I'm not saying it's easy, but especially in today's age
| with the popularity of online degrees, it's not
| impossible.
| robotresearcher wrote:
| > not interested in getting a degree just for the sale of
| having a degree
|
| This thread is about _learning stuff_ that is helpful for
| the systems programmer. One way to go about getting a
| degree is to learn as little as you can get away with,
| but you get the certificate. Another way is to take the
| opportunity to learn stuff, and a degree course provides
| structure and resources to help that. The certificate is
| gravy, knowledge is the protein. The value for money of
| the second way can be very good. Was for me.
| wonnage wrote:
| Getting a degree might not say much but it sure as hell says
| more than just "self-studied CS for X months"
| jltsiren wrote:
| This wasn't about evaluating whether others are good at
| something, but about what you should do if you want to become
| good at systems programming.
|
| For most people, the university is a unique opportunity. You
| get to spend a few years learning all kinds of interesting
| things, in an environment designed to support that, without
| the social pressure to do something that is more productive
| in the short term. How do you choose to use that opportunity
| tells a lot about you as a person.
|
| A motivated and disciplined can learn a lot on their own. In
| most cases, they can learn even more in a university. But not
| always. Some people are not a good fit to a particular
| university, and some people are a poor fit to any
| institutional environment. The latter tend to become an
| entrepreneurs, as their personalities are not a good fit to
| being an employee.
| busterarm wrote:
| I'm about 20 years into my career as a self-taught software
| engineer. I mostly work with companies that only hire out of
| MIT, Cornell, Stanford, Waterloo, etc.
|
| By and large my experience with these graduates is that their
| awareness of the field does not extend much beyond what they
| learned in school and what the current hype technology is
| (today it's ML). If you got enormously lucky, they worked or
| interned somewhere special and were able to expand their
| skillset.
|
| Consistently, the absolute best developers I've worked with
| tend to be self taught and especially people with Computer
| Music degrees. It turns out that learning DSP is a skill that
| pays huge dividends elsewhere in this field. I've also worked
| with CompSci Ph.D.s that can't build their way out of a wet
| paper bag.
|
| As far as the degree programs go though, Waterloo is excellent.
| I would even say above the rest. Even MIT. I am consistently
| impressed with their graduates that I've had the privilege to
| work with.
|
| And as for my own journey, I have my weak spots. I also tend to
| read more papers and technical books than most of my peers by a
| significant margin. I think that's my edge.
| dlisboa wrote:
| I have the opposite experience, though in a different country
| than yours.
|
| Most people I've met in the industry that did not have a
| formal education (or an interest in one) would end up
| scratching the surface and not really dig deeper. The best
| programmers I know did go to great college programs. Not that
| the programs _made_ them great programmers, but they acquired
| a breadth (not depth) of knowledge that prepared them for a
| lifetime of learning.
|
| Without formal education it's very hard for you to know what
| you DON'T know. You can go very far in this industry without
| ever touching a book, giving people the assumption that it's
| a waste of time. Bootcamps prepare people for work leave it
| at that, where many people stagnate.
|
| College has quite a few problems, and for some really driven
| people it's not necessary, but on average it works.
| nonameiguess wrote:
| I would say my own experience actually comports with what
| _both_ of you are saying. Anyone I 've worked who self-
| taught over 20 years ago is damn near universally talented,
| dedicated, and good at what they do, both because they
| stuck with it and gained decades worth of experience, and
| because they loved computing enough before it was trendy to
| actually care and teach themselves something like this over
| 20 years ago.
|
| On the other hand, if you're talking about people who
| decided in the last decade, as tech salaries exploded and
| other industries dried up, that they could just learn to
| code without a formal education because everything is on
| the Internet anyway, they seem to largely be bare-minimum
| "I understand roughly how a browser works and damn near
| nothing else about computers and networks and distributed
| systems" types.
|
| And the quality of a brand-new college grad is almost
| always lower than a multi-decade veteran, regardless of
| where they went to school, but that doesn't mean the
| education was valueless. That doesn't seem like a
| revelation.
| commonlisp94 wrote:
| > I also tend to read more papers and technical books
|
| I have only met one self-taught person who reads anything
| like this. My experience is exactly the opposite. Most self-
| taught programmers are great at programming and solving
| business problems, but tend to be less technical and think
| academic stuff is a waste of time.
| VirusNewbie wrote:
| I dunno, I'm consistently having to teach PhD folks stuff
| at FAANG and I didn't go to college. A lot of them only
| have a cursory understanding of distributed systems, graph
| theory, type theory, abstract algebra, compilers, etc.
| busterarm wrote:
| Funny. It might be the companies that I've worked for but I
| tend to find with _all programmers_ is that we're all too
| often focused on the individual problems at hand and their
| complications and we fail to recognize them for the simple,
| well-described academic problems that they actually are.
| Often there's some self-imposed and pointless complication
| that prevents us from reducing the problem we're working on
| and we'd be better off changing the constraints than going
| down the road we're already on.
|
| The academic stuff is invaluable, but people only get a
| small nibble of it in their degree programs. That's why I
| value the knowledge over the education/process.
| commonlisp94 wrote:
| I agree with that experience, but it's not clear how it
| relates to the topic we are discussing.
| busterarm wrote:
| My argument would be that having the education/degree
| does not help you correlate the day to day work in the
| field with what you learned to get that degree. The
| degree is worth dirt if you can't apply that experience
| to your job and I think that's the case an above-average
| amount of the time.
|
| So maybe getting the degree isn't necessarily the best
| path to get into our industry.
| commonlisp94 wrote:
| > having the education/degree does not help you correlate
| the day to day work in the field with what you learned
|
| I also agree with that. The vast majority just aren't
| interested or did the minimum to pass classes, without
| really absorbing it.
|
| What I disagree with is the self-taught correlation. The
| people who can do what you describe overwhelming are
| academically curious and have degrees.
|
| > maybe getting the degree isn't necessarily the best
| path
|
| I think you'll find a similar pattern in all fields. I
| think what's more in question is the ability of education
| to transform ingrained aptitudes and interests.
| twic wrote:
| In my experience, it's very rare that there is a self-
| imposed and pointless complication that prevents a real
| problem being reduced to an academically tractable one,
| and far more common that there is a second-rate
| programmer on the team who thinks there is.
| screye wrote:
| This is Survivorship bias in full swing. The only self-taught
| developers who would get an interview at a top systems lab,
| would be ones who have far surpassed the achievements of the
| average MIT/Stanford grad.
|
| The kind of person who'd shine as a self-taught developer,
| would be on their way to be distinguished engineer if they'd
| just done a CS degree to go with it. A degree does not kill
| the energy and initiative that makes for a top-tier self-
| taught engineer. But, it grounds your foundations, opens
| doors and lends you much needed prestige. All of these
| together will put a person on course for exceeding any
| 'merely self-taught' or 'merely MIT educated' engineer.
|
| Your best self-taught Computer Music hires would likely have
| been even better if they'd done CS. And if they're good
| enough to be practically guaranteed 6-figure salaries, then
| the debt of university education is hardly a risk at all.
| Hell, they could pay off their debt just from internship-
| salaries and signing bonuses.
| tester756 wrote:
| >The kind of person who'd shine as a self-taught developer,
| would be on their way to be distinguished engineer if
| they'd just done a CS degree to go with it.
|
| what makes you think so?
|
| how would those basics of basics of computers and stuff
| would help you to become distinguished engineer?
|
| self-taught people with huge curiosity are well aware of
| this stuff because this material is available on the
| internet freely
| mcguire wrote:
| The are many, many gigabytes of good information
| available on the Internet. The problem is that they're
| mixed in with many, many terabytes of not-so-good
| information.
|
| Finding out which is which, when left as an exercise to
| the reader, is not terribly efficient.
| bonzini wrote:
| Because you have to relearn all the foundational stuff.
| Algorithmic complexity, invariants or fundamentals of
| distributed systems may be useless as a junior developer,
| but once you proceed to more complex stuff it pays off
| that you have already learnt them, maybe even applied
| them for an internship.
|
| A self taught person doesn't even know that these things
| exist unless they also have an excellent mentor at the
| beginning of their career in the industry. The material
| may be freely available but it's not stuff that they will
| consider unless they also have a penchant for boring
| theory.
| peterfirefly wrote:
| > A self taught person doesn't even know that these
| things exist unless they also have an excellent mentor at
| the beginning of their career in the industry.
|
| I was perfectly aware of them as a 15-year-old teenager
| decades ago.
|
| Think of your own situation -- did you learn what you
| know about JITs by taking formal classes?
| bonzini wrote:
| And how often do you hear people complaining that
| "interviewers only care about useless stuff like
| complexity" and "why wouldn't you be able to look up
| complexities if you really need them" (which only shows
| that you don't understand why complexity matters)?
|
| The reality is that these _are_ arcane topics for 99% of
| the programmers out there and even more of the self
| taught ones.
|
| > did you learn what you know about JITs by taking formal
| classes?
|
| No, but JITs or emulators are not fundamental topics.
|
| One example I can give is this: solid knowledge of data
| structures, together with some theoretical 20-years-old
| knowledge of query plans and normalization, meant I could
| understand a database's EXPLAIN output and quickly learn
| materialized subqueries and denormalization the first
| time I needed them. Even obsolete knowledge has a core
| that is still valid, and experience is also about being
| able to recall it and apply it. If you have done some CS
| at school, you will be faster at this because you have
| more dormant concepts that you can recall.
| the_only_law wrote:
| > And how often do you hear people complaining that
| "interviewers only care about useless stuff like
| complexity" and "why wouldn't you be able to look up
| complexities if you really need them" (which only shows
| that you don't understand why complexity matters)?
|
| Now how the fuck do you complain about something if
| you've never even heard of and "don't know exists". No
| one who's never heard of algorithmic complexity or
| invariants aren't going to complain about them because,
| perhaps to your amazement, they simply have no idea these
| things exist. But maybe that concept is a bit too complex
| for you.
| tester756 wrote:
| Algorithmic complexity? distributed systems?
|
| Please, I thought somebody will mention some arcane, rare
| topics that self-taught person may have no opportunity to
| hear about, but definitely not those really popular
| topics.
|
| People talk about those 2 all the time, especially in
| context of interview for big_tech
|
| >A self taught person doesn't even know that these things
| exist unless they also have an excellent mentor at the
| beginning of their career in the industry.
|
| You don't need to learn those at your year #0, year #1 or
| whatever, it heavily depends. But if you worked for e.g 5
| years and didnt need those then still nothing prevents
| you from learning.
|
| Anyway, almost all graduates barely have any proficiency
| in multithreading, let alone distributed systems.
|
| >The material may be freely available but it's not stuff
| that they will consider unless they also have a penchant
| for boring theory.
|
| I thought we were talking about people with drive, with
| passion, people who are potential candidates for being
| distinguished engineer, not average person.
| saltcured wrote:
| Those who value the CS degree and the schooling process
| most are often those who value the whole idea of "schools
| of thought". The eager student is a blank slate to be
| influenced by mentors. These influences pass on a culture
| of knowledge, an ontology of problems and solutions and
| ways of thinking about them. Also absorbed are implicit
| boundaries around what is important vs mundane, what is
| generalist and what are recognized specialties. The
| school of though is a community where these outcomes are
| somewhat stereotyped. The students will react similarly
| to similar questions or debates, not too disparate from
| their mentors.
|
| Those who value the auto-didact most are often those who
| value the individual pursuit of curiosity and
| idiosyncrasy. The eager student hunts down or pillages
| knowledge wherever they can find it. In the extreme, the
| auto-didact is self-mentored. Individual interests and
| unguided exploration of existing literature builds a
| personalized ontology of problems and solutions and ways
| of thinking. The distinction of important vs mundate, as
| well as specialization, is more idiosyncratic. The auto-
| didact may belong to a school of thought with one member.
|
| The underlying experience is when these groups meet is
| almost culture shock. It could lead to great
| collaboration or to a meltdown, depending on the
| temperaments of the individuals and their willingness to
| embrace or interact with the "other"...
| the_only_law wrote:
| > Please, I thought somebody will mention some arcane,
| rare topics that self-taught person may have no
| opportunity to hear about, but definitely not those
| really popular topics.
|
| Agreed. These are it something many "self taught"
| developers I know have never heard of. For fucks sale
| with all the complaining about things like leetcode and
| other interview styles. do you seriously believe self
| taught people have never heard of these things?
|
| Unfortunately, it seems in recent years "self taught"
| became synonymous with "some guy who decided to do a
| bootcamp because he heard there was money in learning to
| code".
| bonzini wrote:
| It is more typical of a self taught developer to complain
| about fizzbuzz, rather than talk about leetcode.
|
| These are both extremes but still, the average self
| taught developer is _not_ the one who interviews for big
| tech exactly because he has never heard about invariants.
| zlg_codes wrote:
| Hey, find me a college with a good CS program that isn't
| just half-assed IT is disguise, that's accessible to a low
| class white guy, and I'll ace that Bachelor's program.
|
| There are many others like me who would and could do it,
| but lack the financial or social resources to put it into
| action. If I lived in Europe I could have my education paid
| for.
| screye wrote:
| Your local flagship state-school likely has a fairly
| rigorous CS program. This is especially true if you
| engage with the professor and ask for challenging work &
| deeper clarifications in office hours.
|
| 4 years instate tuition is around $15k * 4 = $60k total.
| That's not cheap, but not that expensive either.
|
| If you are smart enough to end up an excellent software
| engineer, then you should be able to get decent enough
| SATs and Grades to get into your local flagship state
| school.
| zlg_codes wrote:
| I will not be taking out a loan to go to school. I have
| seen too many people fall into the pit of debt, and with
| the current political climate with the older generation
| completely comfortable screwing over younger generations
| with false promises of success, I prefer to be
| financially solvent when I graduate. If my country cannot
| do this, then it is a failure compared to Europe.
|
| So, that means either financial aid, or a scholarship.
| Are there any scholarships for low income white guys? My
| guess is no, because we are assumed to be on top of
| society already. I'd be considered an older student too
| since I'm in my late 30s.
|
| Based on my own cursory search, there are no real
| opportunities for me to reach higher education without
| putting myself into potentially life-ending debt. I'm
| even in a state that's renowned for CS (Washington) and I
| have not found anything.
| zlg_codes wrote:
| In the interest of trying to prove myself wrong, I looked
| around a little harder, and preferring government sources
| to any old page. https://wsac.wa.gov/sfa-overview
|
| A lot of programs seem to be targeting mostly high school
| students or minorities.
|
| It's great that those groups are getting help, but I
| cannot help feeling left out. Is my desire for education
| or a better life less valuable or less important because
| of my identity?
|
| Of the programs listed on that page, I have a chance at
| maybe two: the State Work Study, or the College Grant.
| The College Grant seems to look at a lot of variables, so
| the level of coverage may not be as "free college" as
| advertised, though I do make less than 200% of federal
| poverty at present.
|
| The others which advertised helping disadvantaged people
| seemed more focused on helping women, minorities, and
| foster children. Fair, of course, but still doesn't seem
| like they'd be interested in helping someone like me.
|
| It seems like a wonderful environment for non-white, non-
| male students to get a leg up. Lots of stuff to help
| them.
|
| I wonder if there's a male outreach program to get
| enrollment and graduate rates up for men, since they've
| been falling for at least a decade...
| vvanders wrote:
| Degrees are useful but there's a whole class of things they
| skip over as well. When I was going to college the state
| college didn't teach C on a regular basis and we usually
| had a number of people at my community college since the
| course was offered there. When I was looking to transfer
| from community college into state not a single college
| offered C++(it was during peak Java) and so I didn't
| attend.
|
| Even then I regularly find that so-called "fundamentals"
| are missing, the number of times I've had to explain page
| tables, how the kernel shares memory and other core details
| is surprising. Everyone drives Big-O notation
| left/right/center but can't tell what a page fault is or
| why algorithms with higher complexity wipe the floor with
| better "ideal" algorithms under actual operating
| constraints. I've found that engineers who have drive or
| innate curiosity will poke in those areas but getting a
| degree doesn't automatically confer that knowledge(or
| guarantee that it sticks).
|
| Also, if you're getting into systems programming I care
| about 0% about "prestige", it's a domain that is even more
| binary(things work or they blow up spectacularly[1]) than
| some other programming domains. I care that someone
| understands the fundamentals, can apply reasoning and drive
| a hypothesis with data more than what college they
| did/didn't attend.
|
| [1]
| https://www.usenix.org/system/files/1311_05-08_mickens.pdf
| madsbuch wrote:
| > When I was looking to transfer from community college
| into state not a single college offered C++(it was during
| peak Java) and so I didn't attend.
|
| Why is C / C++ education so important?
|
| Personally, What helped my during my studies were type
| theory, PL, complexity theory, etc. Had I gone into
| systems development, then my compiler courses would
| probably be of most value (which are standard curriculum
| in any CS degree).
| vvanders wrote:
| If you don't understand C, C++, or one could argue Rust
| these days you're sitting at an abstraction level much
| higher than where the "systems" domain tends to be. ABI,
| cache misses, page tables and memory mapping, restrict,
| all of that stuff is at an arm's length in a managed
| language.
|
| One of the best courses I had was taught by Bruce Dawson,
| it was an entry-level "image processing" course but
| really it was a tour-de-force on cache hierarchies,
| modern computer architecture and how to build efficient
| real-world algorithms and not things that just scored
| well on the complexity scale. The first assignment was a
| simple bit-blit, he grabbed a random assignment from the
| class and in about ~30 minutes walked us through a multi-
| order-of-magnitude performance improvement with just
| small adjustments that made the program more cache-aware
| and also showed how you empirically test for performance
| improvements instead of doing it in a theoretical manner.
|
| Back when I was in college(which was admittedly a long
| while back now) those sorts of things just weren't taught
| and that class was by-and-far an outlier from traditional
| coursework. My experience has been that even though
| there's a lot of talk about "fundamentals" in a CS degree
| it's touched at such a shallow layer that practical
| application of any of those fundamentals are missing and
| it doesn't "stick".
|
| I've met all of a handful of people who can tell me what
| restrict does(much less how to use it), what a cache-
| aware data structure is or why we care about value types.
| ABI is just a 3-letter word to a large majority of people
| because they just don't have to deal with it(but are then
| oblivious when it blows up, I.E the number of times I've
| seen STL in what are supposed to be ABI-safe boundaries).
| That stuff is all foundational at the systems level. I've
| had much better luck with breaking people of their
| assumptions(I.E. Big-O) and working up from first-
| principals of how computer architecture works and
| structuring systems in such a way that take advantage of
| that instead of a theoretical ideal.
| madsbuch wrote:
| > If you don't understand C, C++, or one could argue Rust
| these days you're sitting at an abstraction level much
| higher than where the "systems" domain tends to be. ABI,
| cache misses, page tables and memory mapping, restrict,
| all of that stuff is at an arm's length in a managed
| language.
|
| To me, this is a bit muddy:
|
| Yes, when doing systems level development, you need to
| understand the _system_ you are targeting. Not all CPUs
| have a concept of cache misses or page tables. At my uni
| this was taught through computer architecture and
| operating systems classes.
|
| These courses incidentally also included C, though they
| didn't need to. The reason that did was because they were
| precedents for the compiler course and prepared the
| students to understand compilers (I TAed in said
| courses). Later courses at my uni would be algorithms
| engineering that taught students how to make, well, cache
| aware implementations.
|
| Understanding how a given hardware architecture works on
| how to most efficiently utilise it has nothing to do with
| C / C++. Many courses at most (European?) universities
| will happily teach you everything you need to know, but C
| / C++ are probably not even mentioned in the teaching
| material.
|
| Actually, I just checked:
| https://kursuskatalog.au.dk/en/course/117933/Computer-
| Archit... and no: No mentions of C or C++
|
| So I do understand you would be disappointed if you went
| for courses on C / C++.
| vvanders wrote:
| There are always exceptions, programming for the PS3
| was... interesting given the SPUs didn't have any caches,
| although one could argue they were closer to DSPs with
| the manual DMA required. I'm not really interested in
| arguing semantics but more that those languages tend to
| be what you see modern, battle-tested OSes developed in.
|
| My point is if you're not using C/C++/Rust what are you
| using that exposes those concepts? Not saying you can't
| do those things in other languages(I've shipped cache-
| aware datastructures at scale in Java using ByteBuffers +
| flatbuffers) however you're having to reach through
| abstractions and/or other limitations. Say nothing that
| on most OSes that C tends to be the OS ABI as well.
| mcguire wrote:
| How do those European (?) universities deal with the
| difference between theory and practice? I have a hard
| time imagining how you would understand how to "most
| efficiently utilize" a given architecture without writing
| code and trying things out.
| ecshafer wrote:
| And those colleges were right. You shouldn't have a class
| that teaches C, C++, or Java. You Should have classes
| that teach embedded programming, operating systems,
| object oriented programming, and algorithms.
| CyberDildonics wrote:
| The other way to look at it is that this company does not
| know how to hire people and can barely tell the difference
| between great self taught programmers and terrible
| graduates from a school with a good name.
| hnfong wrote:
| Is there something from a CS program that can't be learned
| from studying half a dozen books (or maybe a couple more)?
|
| Because that's what "self-taught" means, and unless you can
| identify the things specifically that can't be practically
| learned by a determined person without going through a 4
| year CS program, you're basically making things up to
| retrofit to your bias.
|
| I don't know why so many people seem to believe that
| foundational CS knowledge can only be gained through doing
| a CS degree. The Internet was built by "computer people",
| and computer related resources were among the first things
| to be highly available and easily found on the Internet.
|
| Maybe what you claim are true in a "literal" sense but I
| doubt it's very useful. Basically what you're saying is
| that assuming a person's that did not have a CS degree has
| a CS skill level X, then if they spent 4 more years
| studying CS they would presumably have a skill level > X.
| TBH at the highest levels I'm not sure whether this even
| holds, since once you get to a certain point, the depth of
| your knowledge and skill has to be complemented with some
| breadth as well. Often interdisciplinary knowledge brings
| new insights.
| screye wrote:
| I'm glad you asked me. I happen to have self-learned
| undergrad level CS myself before moving on to do an ML
| focused masters. There were a bunch of challenges I had
| self-learning that were made so much easier during my
| masters.
|
| For one, self-learning just damn hard. Staying motivated
| to put in self-guided 8+hours everyday without natural
| peers, external structure and good external evaluation is
| just hard. You can sustain it for spurts, like 1 summer
| or in my case 1 whole year, but it erodes your mental
| health.
|
| It is never clear when a topic is especially important. I
| can't go to office hours to clarify certain doubts. I
| can't take on especially daunting tasks that I could with
| a group of peers together. Worst is that env setups
| themselves lead to you getting stuck doing accessory
| work, instead of focusing on the main topic you do want
| to learn. Honestly, finding top quality coursework (MIT
| OCW is gold), assignments and notes was trivial. It was
| everything else that was really hard.
|
| My self-learning tendencies didn't magically go away when
| I started my masters. I still leveraged all of them and I
| still do. But, it did solve a lot of my the challenges
| that came with being self-guided.
| ipaddr wrote:
| Instead of going to the office for a question you could
| email/chat online. I would find it harder to study with
| others for 8 hours a day and less focused.
| tomjakubowski wrote:
| > For one, self-learning just damn hard. Staying
| motivated to put in self-guided 8+hours everyday without
| natural peers, external structure and good external
| evaluation is just hard. You can sustain it for spurts,
| like 1 summer or in my case 1 whole year, but it erodes
| your mental health.
|
| Learning for learning's sake, or because you want to get
| a job as a dev: that I can see being a grind, with
| motivation being difficult to find.
|
| But if you have a idea for a product, and you want to
| make it concrete - the motivation is easy. I think most
| of the self-taught developers I know (myself included)
| started that way: they wanted to make something, and so
| they learned how to make software on the fly, while
| building their thing.
| mcguire wrote:
| That is how you get depth with no breadth.
| edgyquant wrote:
| Breadth is learned overtime in subsequent projects.
| peterfirefly wrote:
| > Is there something from a CS program that can't be
| learned from studying half a dozen books (or maybe a
| couple more)?
|
| Yes ;) -- you can't teach "Stanford", "MIT", or
| "Harvard".
| screye wrote:
| Isn't this sort of true though ?
|
| Not just the prestige, but the really strong networks you
| build. It helps you be 'I know a guy who knows a guy'
| distance from VCs, experts and hiring managers at top
| labs.
|
| A lot of my close friends went here, and they're able to
| catch up over phone with people who leave my linkedin
| requests on 'pending', and this is with folks who've
| achieved exactly the same as me at the same age.
|
| It is a force multiplier beyond comprehension.
| ipaddr wrote:
| If your purpose is creating a strong network, becoming a
| CEO and leveraging relationships later in life you don't
| go to those schools for computer science. What a waste of
| an opportunity. Go into business and meet important
| people. Or go into the arts so you have time to join
| social clubs.
|
| Going to those places to get a VC to email you more
| easily is better achieved by getting into an yc or some
| other incubator.
| mcguire wrote:
| Well, let's see.
|
| UT Austin's degree requirements are https://www.cs.utexas
| .edu/sites/default/files/images/BS%20Ch... and course
| descriptions are https://catalog.utexas.edu/general-
| information/coursesatoz/c...
|
| That's about 16 required classes including Linear Alg.,
| Statistics, A Child's First Programming Class, Data
| Structures, Discrete Math, Algorithms, Architecture,
| Operating Systems, plus another 8 of your own favorite
| upper division electives (CS 340 and above).#,##
|
| Then there's the question of what you mean by "studying".
| Just reading the books isn't really going to work. That's
| 50 semester hours---weekly class wall-clock time---and
| the ol' rule of thumb was 3 hours studying per hour of
| class time###, for 15 weeks or 3000 hours. But you might
| be able to do it in less.
|
| So, it's doable, certainly.
|
| A formal degree program has two advantages:
|
| 1. Having somebody to advise you on what's important and
| what's not. Not all of the chapters of SICP are equally
| meaningful, and having someone who already knows this
| shit and can say, "pay attention to this chapter, it's
| important," or "skip those exercises, they're not worth
| it," or even "forget that section, it's outdated; here's
| a paper" is quite useful.
|
| 2. Feedback. Even if you have the answers to the
| exercises, having someone to look at your crappy program
| or broken proof#### and tell you "you are missing _this_
| , try _that_ instead " will speed up understanding
| considerably.
|
| And that's aside from answering questions and making a
| second pass through some material when you're sitting
| there staring like you've been hit with a captive bolt
| gun. It's significantly more efficient to get to
| understanding than working on it yourself.
|
| And then there's the requirements for things that you
| would not, yourself, choose: Spanish? !@$&%){ Calculus?
| Those damn writing requirements? Ethics and leadership?
| You touch on this yourself: many of the self-taught
| people I've seen have been depth heavy with little
| breadth.
|
| Which brings me to another point. Those computer people
| who built the internet typically already had degrees in
| physics, math, EE, or something else. And, they also tend
| to have that depth to breadth problem. (Then there was
| the afternoon I spent explaining to a former Aerospace
| Engineer (and quite good programmer) why _string = string
| + character_ was so slow. And why it wasn 't slow on that
| other implementation.)
|
| # This has actually been dumbed down since I went through
| in 1986-1990; it used to also include a full class on
| formal logic, automata theory, and basic electronics. So,
| hmph. But then I didn't take physics, chemistry, or
| biology, so yay.
|
| ## Stay away from CS 340. It sounds like fun, but it
| seems to be taught by Warren Hunt...
|
| ### Hahahahaha, wheeze... Ah, weekend nights in the
| computer lab...
|
| #### They're the same thing, remember? :-)*
| wonnage wrote:
| If we're using "determined person" as the bar, then
| someone who commits 4-6 years paying tuition to get a BA
| or MS CS certainly seems more determined than a self
| taught person who spent maybe 3 months at a boot camp?
|
| Not saying that it's fair, college costs too much in the
| US, and employers overindex on good schools. but I don't
| get the argument that a self taught person should be
| treated equally hiring-wise
| hnfong wrote:
| The original context was "advice for young programmers",
| and although I don't think getting a CS degree is top of
| the priority list, it's at least a important and good
| thing to have.
|
| But this:
|
| > I don't get the argument that a self taught person
| should be treated equally hiring-wise
|
| .. this is a totally different question.
|
| If two candidates performed at the same level in
| interviews/tests/whatever, and one of them has a CS
| degree while the other does not, IMHO the proper
| interpretation is that, assuming that their performance
| scores in the hiring process reflects candidates' actual
| abilities, is that the candidate without the CS degree is
| a better learner (of CS related topics).
|
| Put it another way, if a person who only spent a couple
| months in boot camp performs on a similar level as a CS
| graduate in interviews, it really means the former learns
| at a terrifying speed, and has huge potential. It also
| helps that many people like you would prefer to pass on
| the candidate without the formal qualifications, so
| there's even less competition for the candidate even
| though they at least have the same level of technical
| ability.
|
| This line of reasoning depends heavily on whether your
| interview process can actually gauge the technical
| ability of the candidates. If it can't, _then_ assuming
| the one with a CS degree has better skills is more
| reasonable. But at that point, you might want to fix your
| hiring processes instead of arguing this point.
| wonnage wrote:
| I don't think you can conclude anything other than the
| candidate passed your interview.
| vbezhenar wrote:
| > in the rest of the world where it's affordable/free, most
| would hesitate to hire self-taught developers, even in web
| development positions.
|
| I live in a country with free education and nobody cares about
| developer education, if said developer has some experience.
|
| I, myself, dropped university in the last year (it was my
| mistake at that time, but whatever) and the only real issue it
| caused in my life is that I can't easily get work permission in
| Europe (and many other countries) if I would decide to
| immigrate there. And even then it's possible to compensate lack
| of degree with work experience, I just don't exactly know how
| it works, because most of my work so far is kind of "self-
| employed freelancer", so I have no idea how I would prove my
| work experience to the visa office.
|
| That said, getting proper education is not a bad thing, it's
| just not very essential, at least in my experience.
| zer8k wrote:
| > 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.
|
| I can agree that having a BSc would be an asset. Most employers
| understand Master's contribute almost nothing unless your
| particular niche is something in systems (compilers for
| example). However, systems advisors are few and far between
| these days. You're much more likely to find one of the millions
| of AI/ML MSc's. Maybe for a research position or something it
| doesnt matter as long as you have the paper. Even then, you
| could make an argument for systems programming that a BSc is
| STILL sufficient. My systems programming classes at the
| graduate level were basic bullshit. Nothing I couldn't have
| gleaned from reading either "Modern Operating Systems", The
| Dragon Book, Engineering a Compiler, or any number of the MPI
| books.
|
| Lastly, I have the requisite credentials. I work side by side
| with self taught engineers. Very few companies will not hire a
| non-degreed person if they can show good work. The idea of
| "work in open source" is dumb and lame. If that's your cup of
| tea - great! 99.9% of people don't have enough passion about a
| single tool, and a single code base, to slog through it to get
| "noticed". Better to implement your own toy stuff and just talk
| about it online if you really care. The author's 10x cyber web
| developer ninja nonsense is a very 2000's way of thinking about
| "getting noticed".
|
| My best advice to people is usually to get a BSc so you have a
| strong foundation in Math and Computer Science taught in a
| structured, standard way. I also advise people to not spend
| more than ~$20,000 or so getting it. At that point you're
| usually young enough that the opportunity/time cost is
| extremely low and ~$20,000 can be paid off pretty quickly even
| if it blows up in your face. ABET accreditation is an amazing
| thing. Aside from the "prestige" you're learning the same stuff
| MIT is. Personally, I paid all-in about $27,000. Worth every
| penny at that cost.
|
| Everything else, like all things in life, can be boiled down to
| "just do it". I also work with a lot of MScs. There's a reason
| they report up to me and it's not because I have more
| "pedigree". Study theory all you want. At the end of the day an
| application/idea/paper/etc implemented is more important than
| waxing poetic about theory.
| kubrickslair wrote:
| I 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.
| mcguire wrote:
| " _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._"
|
| Before 1975, computer science degree programs were pretty
| thin on the ground. Most of the Turing Award winners have
| degrees in physics, mathematics, or electrical engineering,
| which were closely related to CS.
|
| Fortunately, today, you can become interested in CS topics
| and easily find a CS program without going through one of the
| other disciplines.
| eatonphil wrote:
| Another datapoint, Anders Hejlsberg (author of C#,
| TypeScript, etc.) didn't graduate from university.
|
| 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.
| anta40 wrote:
| Torvalds, a hardcore system programming guy got a Master
| degree:
| https://www.cs.helsinki.fi/u/kutvonen/index_files/linus.pdf
|
| For example... :D
| SuboptimalEng wrote:
| I feel this is a weak argument. Like saying Bill Gates and
| Zuckerberg dropped out -- but they dropped out of Harvard.
|
| IIRC, George Hotz studied at CMU for a semester, took 4
| difficult classes, got a 4.0, and won a CTF competition
| before dropping out.
|
| My take is that the normal programmer (frontend, backend,
| systems, etc.) would benefit greatly from a CS degree.
| bena wrote:
| Gates was also taking upper and graduate level courses as a
| freshman/sophomore.
|
| And technically, Gates is on an extended sabbatical from
| Harvard. He took leave to see if this software thing would
| pan out. If it fails, he still has Harvard as a fallback
| plan.
| saiya-jin wrote:
| I used to think that too when I was younger a way less
| experienced. Suffice to say, not so much anymore.
|
| The reason, apart from US which is unique in this in worst
| possible way, is something else than just pure code hacking
| skills - these are not that important. What even the
| crappiest school will teach you way better than no school at
| all - discipline. Wading through tons of useless topics (at
| least in my case), its hard to be self-centered primadona.
|
| Real work looks much more like meetings, wading through tons
| of documentation, accepting mundane tasks since they improve
| things overall but are not fun at all. Brilliant self-thought
| people usually require fun and challenging work or they
| quickly move away, which most work isn't, even in software.
| I'll take OK disciplined guy over stellar one which needs
| management babysitting re what I mentioned, any day. YMMV.
|
| But yeah what is actually taught in school, at least in my
| era, was basically useless at work. The stuff that helped
| were my projects where I picked/created topics that actually
| helped me to get better at given area.
| hnfong wrote:
| I'm not sure school teaches you discipline rather than
| filter out the people who don't have discipline by making
| them unable to graduate unless they ingest all the useless
| crap taught there (together with the useful stuff).
|
| If you can't teach an employee to be more disciplined when
| you can put their job on the line, I don't know why you'd
| think that even the crappiest school knows some secret to
| teaching discipline that you don't.
|
| Of course that means if you're hiring and need somebody
| with "discipline", maybe hiring a CS grad makes sense. But
| if my hypothesis is correct, a high school student probably
| wouldn't benefit from going to university to learn
| "discipline". Not that I think putting up with crap is
| something I'd want to actively learn.
| sho_hn wrote:
| It's a bit self-aggrandizing to make decisions based on
| comparing yourself to exceptional people, though. It may be
| that John Carmack didn't need to graduate, but that the
| average programmer could still benefit from structured
| learning and a suitable environment.
|
| I have a particular perspective on this: I well into my own
| career now. I'm presently chief architect at an automaker,
| and a decent enough systems/embedded programmer - you've
| probably used some code I've written today at some point. And
| I didn't even graduate high school.
|
| I've often had a chip on my shoulder about this when I was
| younger. I am particularly sensitive to "so what school did
| you go to?" class distinctions when I encounter them. I fully
| agree people in tech should get a chance to be evaluated
| regardless of their academical background, and I definitely
| don't insist on one when I hire.
|
| That said, there's an even mix of great people around me who
| have spent extensive time in education and academia, and
| those who have spent none at all. The ones who did rarely
| regret it, and often found ways to use the environment to its
| fullest.
|
| I got lucky, too: I fell in with open source instead of, say,
| online gaming as a teen, and spent my "idle afternoons as a
| lazy kid" fixing bugs in browser engines and other things
| that turned out to be useful. Because that online environment
| was motivating and because I had some fantastic mentors. I'll
| forever be grateful to my past friend who sent me his
| yellowed old copy of Wirth's "Algorithms and Data Structures"
| - with code examples in Modula-2!
|
| IMHO: Forget about exceptionalism, what matters is what you
| spend your productive hours in the day on and who you do it
| with. For many their best, easiest way to get something like
| that in place is likely to attend a university. There are
| alternatives, but make sure you seek out some version of
| this.
| glommer wrote:
| author here! I had a whole paragraph on the importance of a
| formal education. But removed because the post was too long.
|
| it's very important!
| glommer wrote:
| for posterity, here's the deleted piece:
|
| Don't neglect academic knowledge.
|
| One of the unhelpful discussions I see online is the
| suggestion that you may not need to have academic knowledge
| to be a "developer". After all, can't I just watch some React
| tutorial, code a couple of websites, and be done with it?
| That usually takes the form of the infamous "In _real life_
| never have I have ever inverted a binary tree".
|
| Well, I did. Many, many times. I implemented binary trees,
| B-Trees, red-black trees, tries, learned indexes, linked
| lists. And I am not saying this to brag: the challenge here
| would be to find a single systems developer who didn't.
|
| Much of what you do at system level is adapting data
| structures to new environments, where just using standard
| data structures won't do. Big-O notation is another example.
| They are part of systems level discussions all the time.
|
| By "academic knowledge", I don't mean you have to sit for 5
| years in a university classroom. I mean the kind of knowledge
| that you acquire by going through the books and exercises one
| goes through in the "boring" courses in university. If you
| can learn that by yourself, that's all good too. I have a
| great friend with whom I worked for years that never went to
| school, but he could run circles around everyone in the Linux
| Scheduler.
|
| In my experience, though, few people can, and sitting through
| 5 years of university does help a lot. Unfortunately.
| commonlisp94 wrote:
| > US-centric view of tertiary education being a risk due to
| large capital investment
|
| I can't help but think European perception is a little
| exaggerated here. Yes, the live on campus and party at age
| 18/19 experience is expensive. But, getting a state school
| degree on a budget, and maybe a year of community college?
| You're looking at 10-30k.
|
| The bigger risk is opportunity cost since degrees start later
| and take longer.
| alkonaut wrote:
| I partied for 5 years and got a masters and that cost me
| around $20k in loans (Of which zero was tuition, it was
| basically mostly the rent, books, food, and drinks).
|
| If given the choice I'd do it again of course. Even if what I
| ended up doing had nothing to do with what I studied I'd do
| it again. Even if you told me that if had started a developer
| job at 18 I'd now be making twice what I'm doing today at age
| 45, still do it.
| maccard wrote:
| If you're 45 now, you studied probably in the late 90's?
|
| In many cities today, rent for 4-5 years is going to be
| 40k. I live in Edinburgh, where we have a large student
| population. Getting a _room_ here is going to be the guts
| of PS8000 /year, before you've eaten anything.
| commonlisp94 wrote:
| What does this have to do with the discussion?
| tester756 wrote:
| The 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.
| jroseattle wrote:
| The 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.
| crabbone wrote:
| I 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.
| raydiatian wrote:
| Thoroughly enjoyed this article.
| _gabe_ wrote:
| I 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 wrote:
| Yea 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.
| 1equalsequals1 wrote:
| Do some work for my startup and I might hire you if it all aligns
| with my business plan
| glommer wrote:
| He 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.
___________________________________________________________________
(page generated 2023-08-18 23:01 UTC)