4 ms·
I got into "computer science" before there was a CS degree. Our CS classes were taught in the math dept (fortran), business dept (cobol), or engineering (assemb
by daly 7y ago
I got into "computer science" before there was a CS degree. Our CS classes were taught in the math dept (fortran), business dept (cobol), or engineering (assembler).
The profs were literally 1 chapter ahead of the students.
I, however, was in love with the subject. I was the "student advisor" in our "machine room". We had 5 teletypes connected to a remote mainframe at Rutgers. I lived and breathed CS.
I wrote tests for the profs (even thought I was also in the class) and I answered questions for students about the tests when they came for computer help.
Pick a subject you love so deeply that you're always at the leading edge (which essentially means a new subject the school wants to teach). For example, CMU introduced an AI curiculum. Learn how to do NNs, DNNs, GANs, etc. Read the latest papers. Write working code. Chat with the profs. Hang around the dept.
Proof systems are a hot topic. Learn LEAN, COQ, AGDA. Learn to write proofs by machine. Read the papers. Get ahead of the curve. It is hard to "fail" a student who knows a lot more than you, especially when they help craft the tests.
Intel stuck an FPGA inside its CPU. Learn Verilog and learn to hack new CPU instructions (e.g. read Gustufson's book "The End of Error" that introduces a new kind of floating point arithmetic). Write code that outperforms BLAS code.
Learn BPF (Berkeley Packet Filter) so you can do impossible things about the kernel in User mode. Make your networking class look like it is stone-age.
I could go on but you either "get it" or you don't.
- daly 7y agoBPF link: http://www.brendangregg.com/blog/2019-12-02/bpf-a-new-type-of-software.html http://www.brendangregg.com/blog/2019-12-02/bpf-a-new-type-o...
- deleted 7y ago[deleted]
- kaymanb 7y agoI think I fall into the "don't get it" category. Could you explain what I should be taking away from this? I understand that being at the leading edge has benefits, but it's not feasible to understand the state-of-the-art across an entire CS curriculum.
- graycat 7y agoIt appears that there is a sense in which he is correct: E.g., early in my career I stumbled onto some of what he is saying but then didn't appreciate the situation. Basically, just stay with what is hot. Get into a hot job, learn what is hot, jump to another job that wants the hot stuff, keep going for the hot stuff. This way get to focus: (1) Actually can get okay with the point of the focus at the hot stuff because that point is not very large or hard if only because what is "hot" is from a public that doesn't know very much and (2) do not have to learn computer science broadly. If take the money from learning the hot stuff, get a good Ph.D. in what is arguably the better stuff, go back to the job market, and no longer be with the then current hot stuff, then can find that your career is in trouble. Then using your actual competence in some actually important stuff, do a startup where need to please the users but not some naive public fooled by mostly simplistic hot stuff.
- cjp 7y agoOf course, no one can understand everything, but he said, "pick a subject". Just one, not everything. I'm reminded of this description of a PhD: http://matt.might.net/articles/phd-school-in-pictures/ http://matt.might.net/articles/phd-school-in-pictures/
- neltnerb 7y agoI disagree with this cartoon in that getting to the edge is not easier by focusing on only one thing. Not knowing other things is just as likely to hold you back from some insight as not knowing your specialty well enough. It's so common that people unaware of progress in other fields spin their wheels solving problems with known solutions that I think the circle should have been more of a confounded sphere where knowing a bit of EE and ChemE makes your work on BioEng 10x closer to the edge. Knowing more than one field reinforces the strength of your innovation. Simple example, how much easier is it to make progress in applied physics if you know enough EE and machining to design and build the best test apparatus in the world? Pick a focus and whenever you get to the point that you're a strong expert (or whatever level you feel is useful) and can do the job you want to do you should reach a bit and pick up something you're curious about to add more diversity to your skillset. Being a generalist isn't bad, I basically have a PhD in being a generalist and tons of people want to work with me because someone who only understands optics will be lost when they need to use a photodiode and a lock in amplifier or someone who wants to test magnetic properties will be lost when they don't know how to actually construct a custom magnet. Among many obvious examples. Unless you're at a place so big that you can just glide on assuming other people will fill in the gaps in your knowledge, you need both general and specific skills. A PhD doesn't have to mean you are only capable of one thing unless you let it, even if that was the common meaning 20 years ago. There just aren't the jobs in academia to support that kind of singular focus anyway. We're going to live long enough that it's a terrible career decision to pigeon hole yourself so badly 50 years before you're even theoretically going to retire. Especially with online classes it's only going to get more common for people to have multiple significant skills and major changes in their field over the course of their career. Required even. Very few people are going to go for 50 years with a single technical expertise, certainly jobs for such experts are far harder to find than jobs for people who can do a few things at a more modest level of expertise. I know a ton about materials science and physics, have genetically engineered viruses, have built chemical reactors, have designed catalysts, have done machine learning, have designed lots and lots of electronics, have programmed as required (not my favorite kind of work, but I've done 8051 assembly up to ARM firmware, Matlab, Scheme, Python, and shudder LabView), am more than half decent at machining, teach karate, perform music, and make art... trying to be the best at just one thing to the exclusion of all else is unnecessary and limiting both professionally and personally. I was terrible at all of these things when I started. The article echoes my philosophy as well -- you have to learn to learn because you want to and not because you want a grade. I got a C- in differential equations. Two years later in stat mech I was the only one of my friends who recognized LaGrangian multipliers being used (by name even) because when I took the course my goal was to learn differential equations regardless of what grade I got, so I didn't forget it all the second the final was done. If you are the kind of person who just won't do homework unless it's graded, you should work on that because it will hold you back and you're training yourself to rapidly forget information that isn't required to pass a test. Don't be afraid to try new things that interest you. Be okay with skilled people saying you're bad at something you did your best at, grow a thicker skin since those people are the ones likely to be able to give you advice to become good at it. Professors want you to come to office hours, especially if you're struggling. You have to be okay with getting that C-, who cares what grade they assign you as long as ten years later you still remember convolutions or whatever. Be solid at a bunch of stuff rather than extremely good at, I don't know, something super specific like the spin states in cobalt platinum alloys or matlab modeling of alloy surface energy same as you shouldn't refuse to learn anything but Python if you want to still be a developer in 2069.
- Zelphyr 7y agoIt sounds like what you’re saying is: the best way to hack a test is to actually learn the subject. Thus, the best way to learn is to be in love with the subject.
- deleted 7y ago[deleted]