10 ms·
Learning Without Burnout
- eric4smith 6y agoThe main thing to do - and what I told my team yesterday too: * This is not college, you don't have to remember everything, use the internet. * Learn on demand. Never read books from cover to cover. * Do something real with what you're learning. Example, as you're learning a new programming language, be building something real with it. That's it!
- anonytrary 6y agoWhen it comes to engineering and building stuff, it's a lot like art. First you draw the lines in a rough way, build out the "stick figure" so to speak, then you draw the rest of the owl, slowly turning it into a fully finished piece. It's way better than quitting after having drawn a perfect eyeball. Capture the essence of the vision as soon as possible. You can't come back to finish an eyeball as easily as you can come back to finish a quick sketch. Also, regarding reading books c2c, it depends on the book. The smartest people I know have hundreds of books, but have fully read and re-read like a dozen of the ones that impacted them the most. For the other books, they've picked up snippets, but haven't come close to fully reading them.
- hazz99 6y ago> Also, regarding reading books c2c, it depends on the book. The smartest people I know have hundreds of books, but have fully read and re-read like a dozen of the ones that impacted them the most. For the other books, they've picked up snippets, but haven't come close to fully reading them. I don’t claim to be one those people you describe, but this is also what I’ve found works well. Some books are packed with amazing information, line after line. There is great value in reading the entire thing - the overarching narrative of reading it linearly provides additional value to reading it piecewise. Other books might present one or two great ideas/concepts, but spread them out over a few hundred pages. These are the books I read piecewise, to “get the gist”. The tricky part is knowing which category a book falls into. I imagine there is a level of required prior knowledge/experience before you can do this. Ironically, there are books I used to think weren’t very valuable, or presented “obvious” ideas. Later, I’ve come back and found them incredibly informative. For what I thought was “basic” in my first year of university, I now respect as nuanced and important first principles, for example.
- monsieurbanana 6y ago> * Learn on demand. Never read books from cover to cover. As a blanket advice, I really don't agree. It depends on what books, it depends what they're trying to teach you. Huge difference between a reference book and... pretty much any other kind of books. Many times you don't want to know something, you just want to know something exists/is possible/has already been done. Skimming through books cover to cover is one way to do it.
- ashishmax31 6y agoCouldn't agree more.. Reading CLRS cover to cover and reading SICP cover to cover are two different things.
- SyzygistSix 6y agoCLRS? SICP? What are these?
- phone8675309 6y agoClassic Comp Sci books, specifically: CLRS - Introduction to Algorithms (after the authors - Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein) SICP - The Structure and Interpretation of Computer Programs by Hal Abelson, Jerry Sussman, and Julie Sussman
- faeyanpiraat 6y agoWhich one is the more “cover to cover”-y?
- bekantan 6y agoSICP
- dredmorbius 6y ago"Don't feel compelled to read books cover-to-cover" would be a more useful guide. Many people do, and feel guilt over setting down books. That serves you poorly. Approach books as an inquiry or conversation. See Mortimer Adler's How to Read a Book (frequently mentioned on HN). Read with a purpose or goal. (Entertainment and distraction may be goals or purposes.) Some books reward a close comprehensive read. They are rare.
- Puts 6y agoThis sounds like dangerous advice. This will put your team in a position where you constantly just know enough to solve a specific task at hands but never plan ahead.
- lordnacho 6y agoI think of it as "index everything" but dig the details when the mission requires it. So read widely, see a lot of keywords, understand what seems to be commonly accepted as important, but spend the time getting more words over learning to perfection.
- bryanrasmussen 6y ago>* Learn on demand. Never read books from cover to cover. I think you are my type of person, in that you learn a little bit on demand, go to work on it and quickly get nearly a complete view of everything and depend on being able to look up stuff you need when you need it. That's great, however you seem to be different than me in that you think your way of learning is the superior one instead of just a different one. I have known some very good programmers that are read the book cover to cover type of learners. In my experience read the book cover to cover types are more strict types of personalities and thus often we do not get along, but when we do it's great because we complement each others skill sets and predilections for how problems should be solved.
- devoutsalsa 6y agoI tried learning everything until it became too much. Now I try to learn the stuff I need. Gives me an appreciation for simple tools.
- deleted 6y ago[deleted]
- ZephyrBlu 6y agoI have a similar learning style. As with all things I think there is a tradeoff. It feels superior when you aren't doing anything too complex and when you can iterate quickly with little cost because it's far more time efficient than thorough learning with only minor drawbacks. When I think it falls short is if the problem you're working on requires deep domain knowledge or failure is costly. In this situation, someone who has deep knowledge and who will thoroughly work through the problem will be far better off than the person who learns on demand. The caveat to this is that I think the former situation is _far_ more common in industry than the latter, so to me a learn on demand style is far more useful in practice. I'm sure that some domains would heavily favour a thorough learning style though.
- eric4smith 6y agoI don’t think it’s superior. It’s just works for me and my team.
- bennysonething 6y agoSorry, I really disagree with never read books cover to cover. There are definitely some programming books that are worth reading cover to cover.
- scottyah 6y agoNot to derail the conversation too far, but what are some you've found?
- bennysonething 6y agoCode complete. The elements of computer systems. The pragmatic programmer
- agumonkey 6y agoThere's a little dynamic theory of learning around this. When I get excited I start trying but if I don't reach some escape velocity all the excitement and learning start to hurt my brain. Whenever I finally reach some level of concrete realization then that knowledge turns into pleasure and pride.
- Fluid_Mechanics 6y agoWhen unable to access the minutiae of some byzantine concept with my hominid navigation apparatus I often comfort myself with the knowledge that all that I know will ultimately be lost to the chaos of the universe and that the cumulative impact of everything I’ve ever done is utterly inconsequential.
- darkteflon 6y agoThanks, that’s a load off my shoulders.
- unixhero 6y agoYou are not the universe. You are you and this is your reality. In that reality, it matters. A lot.
- ukj 6y agoTHE universe? Which one? There are so many!
- WJW 6y agoIt only matters if you care. GP already mentioned that in their reality it actually does not matter.
- FlyingAvatar 6y agoSuch is the illusion we all have trained into ourselves.
- mattigames 6y ago> [all] will ultimately be lost to the chaos of the universe and that the cumulative impact of everything I’ve ever done is utterly inconsequential. What would be the alternative? An universe where our changes are more "permanent"? Ignoring the paradoxes that entails would it really make them more consequential or just more lasting? It would be completely subjetive, just like is subjetive to believe something matters even if it ends in a few years down the line.
- TechWizOfFortun 6y agoWhen learning new material that doesn't solve any immediate problem, I like to think of that material as being stored in my "table of contents". If I run into that problem in the future, I'll know where to look it up, but if I never run into that problem, it was just a single entry in an easily forgettable table pointing to deeper knowledge that I can disregard.
- zimpenfish 6y ago> When learning new material that doesn't solve any immediate problem I find learning unrelated material sometimes give you additional perspective on later problems even if they're not immediately related. Same with having a small crack at languages you're not using - it can give you a new perspective on the languages you are.
- quickthrower2 6y agoSoftware is eating the world! So you don’t need to know everything to earn money, just be able to solve problems logically. Then the rest is a hobby so treat it like that and not the olympics. TLDR: fuck it!
- Lio 6y ago> If you’re known as “The ActiveRecord Bender”... ^^^ This made me giggle like a school kid. :) Some very good points in the article though. My take would be:- * You don’t have to know everything. * You can’t learn everything. * Many things seem deceptively simple until you really learn them, be aware of that. * It’s useful to learn that you don’t know about something. Then you can decide how deep you want to go into it. * Many things are deceptively simple once you dive in, be aware of that too.
- ChrisMarshallNY 6y ago> especially cultural factors that make software development harder for those who can’t pass as YOUNG white males. FTFY. I’m 58, and learn faster, and more comprehensively, than I ever did, when I was younger. I think my grasp of “the big picture,” or a high established baseline, is a big reason for the fast uptake. I don’t need to be told what iterators or allocators are. After having designed hundreds of applications, drivers, tools, APIs, SDKs, libraries, and systems, I know why we do stuff. It isn’t just rote dogma. This gives me the flexibility to adapt my view of the world to deal with new paradigms and concepts. Also —and this is important— I can “mix and match” my approach. Most of my work, these days, is a chimera. I will use classic patterns, from thirty years ago, and combine them with new “cutting edge” stuff. That takes flexibility, curiosity, knowledge, and motivation. Also, teaching is important to learning. Especially teaching smart people. It challenges us to really understand what we’re trying to impart, as we are guaranteed to get challenging questions. When I took martial arts, many moons ago, the “postgraduate” stuff was to become a teacher. The Sifu (you know which art) would insist that students achieving new belts, immediately start training those in earlier belts. By the time you became a blackbelt, you were ready to teach an entire class, unassisted. BTW: I never became any good at it, but I did learn some cool approaches to stuff.
- hikingsimulator 6y agoIt isn't uncommon to see people rely on the argument of neuroplasticity as a crutch. That one person seemingly doesn't learn as well and as fast past one's twenties is a thinly veiled ageist take but also an easy hand-wave to discard personal/professional change. It's always good to see your kind of comments.
- ZephyrBlu 6y agoI guess it depends how you view/define learning. If by learning we mean learning _any_ information, then it seems likely the rate of learning would always increase over time since as you gain more knowledge it's more likely that you've done something similar in the past. If we're strictly talking about learning _new_ information (As in, not closely related to previous knowledge) then I can understand the argument that someone learns slower as they age. Basically it seems like it comes down to crystalized knowledge and how you count that.
- deleted 6y ago[deleted]
- numlock86 6y agoFrom my experience what keeps a lot of people from learning or rather frustrates them, especially in tech, is the fact that the more you know (starting to get the big picture) you begin to realize how much stuff you actually don't understand or know about. Do you need to know how Ethernet works for making a website? Probably not. Do you need to know how HTTP works? Most likely, at least if you start to fiddle with REST and APIs. Do you need to know how TCP works to understand HTTP? Well, some might argue. Do you need to know how IP or networking in general works? Well, if you want to configure your own web server you probably should know the basics. The rabbit hole goes on ... and most people just give up. Eventually someone will end up at epoll/select and will dive into native ASM of some high-perf Intel NICs while toying around with jQuery, you never know ... Yes, I exaggerated a bit, but you get the point.
- siraben 6y agoAs a university student, I feel the same way that there is an infinite amount to learn, but towards mathematics and computer science, which themselves are very broad fields. Since the software industry appears to change trends at the drop of a hat, learning a specific framework or library has a short shelf-life (insert deprecated but popular at the time technology here). Perhaps out of necessity, one useful criterion I've had for myself is to emphasize composable and widely applicable knowledge. For myself, some examples come to mind: - learning to use a text editor well (Emacs) allows me to edit effectively across programming languages, file formats and operating systems - learning logic, algebra and programming language theory allows me to reason about and structure programs (written from assembly to Haskell) more precisely, and write interpreters and compilers grounded in well-defined semantics - learning build systems (e.g. Nix) allows me understand how to package software written in different languages, and how to structure my own projects to make them work across platforms, and how to make reproducible builds - learning category theory allows me to ask the right questions when I learn a mathematical structure, from topology to algebra (what would the morphisms/products/limits/functors be?), and gives insight into how programming languages organize their own abstractions Of course, specific knowledge about X technology would still be needed to get things done, but when the winds of change blow, hopefully the deep concepts I've spent time studying will resurface in a new light. Only time will tell.
- uzakov 6y agoI think you are on a right track and seem to know way more than many CS grads know when they finish university!
- TrackerFF 6y agoMoving from academia to work, one of my biggest challenges was actually using tools. If I couldn't roll out my own stuff, it felt like cheating, and I would always get fixated on being able to write my own libraries. Whenever I'd lift perfectly fine and working code off StackExchange, or use some libraries that did mostly everything for me, I'd get the same anxious feel that I got in college, when writing a report/paper and not citing my sources. This kind of behavior made me waste a lot of time and energy, trying to re-invent and optimize the wheel, over and over again.
- mtberatwork 6y agoWell, I believe much of the satisfaction in programming (at least for me) lies within building something with your own hands and creativity. When you are simply writing glue code between libraries and services, that satisfaction is stripped away and leaves you without much fulfillment. Of course, there's a point of diminishing returns when it comes to writing your own libraries - the pendulum can easily swing to frustration - but I think finding a balance in having contributed your own creative energy and third party libraries is the sweet spot.
- agustif 6y agoWell it's pretty easy to find a balance if you at least try, you can use widely available, documented and tested open source libs, for most of your (technically hard) problems. and not roll your own there. (Not invented here syndrome?) And you should also leverage the fact that you own 100% of your codebase, to add as much custom stuff and custom business logic where it pertains, but it is not wise to reinvent the wheel (or the engine, or the carburator) in 2021, when everything from, hosts, db, etc, is available at a few clicks... also depends much on what tools you're using/projects are doing, YMMV
- Craighead 6y agoNever roll your own crypto
- agumonkey 6y ago
- johbjo 6y agoLearn things regardless whether you receive short-term rewards for them. People saying "learn by doing" or "learn just-in-time" are essentially saying; only learn easy things that you receive immediate rewards. This results in shallow and high-supply knowledge. The reason some knowledge is rare/valuable is precisely that it is impossible to learn from a short and immediate feedback/reward cycle. This is the reason maths feels more difficult to learn than coding - there is no external reward. And why C is more difficult to learn than python.
- deleted 6y ago[deleted]
- rswail 6y agoI have this sort of "mesh" of knowledge now. Stuff from 30 years ago is still valuable now. Moving from bare metal to chroots to zones to VMs to cloud just expands that mesh. What was once physical is now virtual. Being virtual, it has plasticity. But the underlying evolution is still there, so there is sort of a distilled fundamental nature to compute, network, storage. Hard to explain, but the mesh is also sedimentary. Nodes in the mesh have these layers of history now that provides more axiomatic understanding. If you know zones, you grok VMs, you understand EC2, then pods then containers. Different names for very related concepts of "compute". All a long way of saying that when I learn now, it's more about adding to that mesh than expanding separated islands.
- gambler 6y ago"But, whether through side projects, blogging, or building a portfolio, I do think that finding a way to publish your learnings is valuable. The nice thing about publishing and shipping smaller things on the side is that you do end up building a signal to employers that you have “passion”." Think about what this really says about our industry. Tech companies are incapable of figuring out effective ways to test people they hire, so they rely on social signaling, which involves doing work outside of work for free and then marketing it on the web. It's a crazy and inefficient system, but people who are invested in it keep propping it up. BTW, most companies out there have employee agreements that technically make your side projects their IP.
- rramadass 6y agoAs a person who subscribes to Autodidacticism; here are my suggestions; * Know the difference between "Knowledge for Knowledge's Sake"(KKS) and "Knowledge Needed for a Job"(KNJ). While there may be some overlap, they are separate pursuits and need to be tackled differently. * For KNJ, use any and every means to short-circuit the learning ramp and get started on the job. This includes; - Identify the "Guru" in the company and ask for a one-on-one brain dump on the project/product you would be working on. I do this in the first couple of weeks over lunch and late afternoon meetups. Keep your ego aside and revert back to "student mode" that you had when studying in college. Take notes, book/article references and anything which will shorten your learning ramp. - Based on the above, focus on the domain knowledge and technologies required for your job. This will be an intense 2-3 weeks and just like you are preparing for an exam. - Get started with some simple bug fixing/minor features implementation etc. When you get stuck and/or lost do not hesitate to ask for help from team members. Within a couple of months you should have enough knowledge and confidence to take on bigger responsibilities. * KKS is far more amorphous. Actively cultivate the mentality of being a Dilettante i.e. dip your toes in anything/everything that catches your fancy. Wander aimlessly through the various Technology (and Other) domains trying to grasp the "essence" of the subject. Do not look for outside validation and do not compete with others. The aim is to educate yourself and understand the subject to whatever level is acceptable to you. You will have to read a lot, do a little of what you like and follow your curiosity/interest/instincts. There is no goal and no end to this; it is a lifelong endeavour to gain knowledge. Once you get hooked onto something you will find that you soon transition to becoming an Expert without your actually trying to be one. All the Geniuses/Scientists/Greats we have read about have followed this process to become what they are.
- dominotw 6y ago> make software development harder for those who can’t pass as white males. I think bay area startup scene might be different but I've been consulting last 12 years in corporate America (banks, healthcare, big retail) and 90% of teams usually are Indian and Chinese.
- hackflip 6y agoAs an Asian male, it seems to have become really fashionable to denounce white males in the past few years. As if you can correct past injustices by punishing those in the present.
- thefunnyman 6y agoThis holds in FAANG too from my experience.
- commandlinefan 6y agoSame here in north Texas, for at least the past 20 years.