15 ms·
Ask HN: Working as a software engineer for 5 years, I've forgotten all CS stuff
I have a Bachelor of CS. But after working for 5 years, I can't remember these CS stuffs like Computer Organization, OS theories, Database normalization. What occupies my mind is delivering the feature to meet business goals and Kubernetes stuffs.
Is this normal? Or I need to work harder to learn them again?
- shetill 4y agoyet CS stuff is exactly what they ask you for on interviews. I really don't know how interviewers keep up with this or they just read the answers of their own questions
- aiscapehumanity 4y agoI've heard programming != Comp sci, so perhaps it's not a bad thing.
- aiscapehumanity 4y agoPraxis centric knowledge base, tool set is more responsive to actual demands
- netsharc 4y agoAs a CS prof of mine once said, studying CS to be a programmer is like studying architecture to be a house builder...
- hardware2win 4y agoPoor comparison, imo.
- arethuza 4y agoI'd probably suggest that its like studying physics to become a plumber. Note that I based this analogy on being a CS graduate myself and also working for a while for a chap whose academic speciality was mathematical modelling of things like water hammer.
- daviddever23box 4y agoApt comparison, if you've ever worked in construction: platform home designs use re-usable elements that are requirements- / market-driven, with designers and structural engineers as part of the process. All architecture programs mix engineering and design / aesthetics tracks, both of which are covered on the ARE exams (loosely speaking). Discussions regarding PE-style certification for software development often get stuck in the mud, but I'd wager that we'll see something emerge in this generation for general development (as it already exists for safety-intensive applications). And crypto may actually increase the demand for formal proofs and other deep CS concepts. Your CS prof may have made the remark with some degree of disdain, though there are quite a few programmers / developers out there making better money than a college prof (excluding those working in private consultation).
- mlcrypto 4y agoTom Brady can't solve physics equations but he can throw the football into the end zone. That's what I'm offering this corporation. I can't solve CS questions but I can deliver a great product
- scarface74 4y agoYes and that’s why he is a professor. “Its hard to get a man to understand something when his salary depends on his not understanding it”
- int0x80 4y agoYou say "be a programmer" to make it sound demeaning. I am not a "programmer" I am a software engineer, which is a very different way to put it. Studying CS to be a software eng is definitely not over kill.
- WheelsAtLarge 4y agoYes, it's normal. What you don't use you lose. When you need it, you'll be surprised how much will come back but don't expect to be as good as when you learned it. Is it worth relearning? Only when you need it. The big problem comes when you need to change jobs. If the industry has moved on from what you know then you'll have a hard time finding a job. What make sense is to stay aware of the industry trends and keep up to date.
- ipnon 4y agoIt is normal. You may need to relearn what you have completely forgotten. I try to integrate my CS education in my normal software engineering work. The work is high level, not a lot of opportunity to use theory of computer architecture or operating systems, but I'm still writing programs. This means lessons from algorithms and functional programming are relevant. Organizing code using this theory has not only retained the college lessons but reinforced them. My advice is to use the tools from your education when you can, and they will only become stronger when you do.
- themerone 4y agoYour are way better off than a CS graduate who knows all those things but can't solve simple programming tasks.
- sshine 4y ago... and worse off than someone who knows all those things and can solve programming tasks. The consolidation is that “use it or lose it” means you just gotta start using it again.
- dinom 4y agoYes it's normal and, dare I say, a bit of an exaggeration. Academia and industry are different environments.
- joshxyz 4y agototally normal. not a day without googling the fundamental stuff. what matters for me is overtime your skill you find the answers you are looking for is now more accurate and precise.
- photochemsyn 4y agoA broader understanding gives your more fallback positions in the event of some disaster or catastrophic economic collapse, so I'd say: Put a little bit of your time into learning interesting new skills in even vaguely related fields. A Jack of all trades may be a master of none, but if chaos is the future, adaptability is the key to survival.
- eurasiantiger 4y agoJack of all trades, master of none, but oftentimes better than a master of one.
- PostOnce 4y agoJack of all trades, master of three, hyperspecialization may be a disease.
- politelemon 4y agoTotally normal. There will be some situations where you'll encounter those concepts again, like during troubleshooting X, or reading documentation on something along those lines. You may not remember it perfectly but the concept will be familiar.
- ankurdhama 4y agoProgramming is a very broad term and there are many levels at which you can do programming - from as low level as writing a firmware for some device to as high as wirting a VB macro in Excel. All of these are programming and depending on the kind of programming you are doing, different kind of knowledge is useful in those context. The CS fundamentals you are talking about are things that matter when you are doing specific kind of programming. For ex: OS theory matters when you are writing an OS.
- bruce511 4y agoYes and no. I'd say OS theory is also helpful when writing programs that run on an OS. In the same way network theory is helpful when writing programs that communicate on a network. I find I've retained a lot of my CS theory, but in a "quiet" way. [1] It only really surfaces when I'm talking about things with colleagues, and I take some information for granted, but ultimately work out they don't have the same understanding. I do a fair bit of database work, and all that normalisation, foreign keys, relationships knowledge is "just there". On the other hand I only very occasionally have cause to do graphics work, so I remember the very basics, but not much else. I also remember we did things, which I haven't used for 30 years, but which "holds no fear". I recently had cause to consider writing some code in assembly, and it may or may not happen, but either way I have no "fear" of what it entails, its "just assembly code." So to the OP I say, your CS degree isn't about facts. It's about an understanding of how things fit together, and in your career you'll use that knowledge in ways you won't even notice. So relax, it's not like you have to write a refresher exam to keep up :) [1] today I'd get basically nothing in an exam, I don't remember all the memory-rote stuff, like naming the 7 OSI networking levels, or some specific algorithm, or the theory of P vs NP complete etc. But I actually tangentially use that knowledge every day.
- ankurdhama 4y ago> I'd say OS theory is also helpful when writing programs that run on an OS. That's a very generalized statement. A C program run on OS and so does a JavaScript on a webpage (at least indirectly). I am not sure how OS theory is useful in the JavaScript on a webpage case.
- dexterbt1 4y agoThis may also apply to non-CS things you've learned in the past, such us biology, chemistry, physics, math, etc, to a varying degree.
- pabe 4y agoBecause everyone does, most IT people don't even use UML in practice ¯\_(ツ)_/¯
- ItsTooMuch 4y agoSchools have too much focus on enterprise stuff that not even the enterprises care about.
- thro1 4y agoJust more working memory. If you know which things that you forgot you need when to remember, again it's not harder but just refresh and the next is easier. Sometimes to learn a new conception you have to suspend few others. Harder way you learn with every step back to refresh, that you need to cross-reference.
- asdefghyk 4y agoI find it comes back quickly - with a brief review
- thom 4y agoI find the most useful thing about CS knowledge (and especially algorithms & data structures) is having a hunch for the shape of a problem and knowing what to google for. It can save a lot of thinking and stave off performance problems before they occur. But you’re there to deliver business value and it’s only right that those concerns should dominate. That doesn’t mean you won’t have “this database is completely unmanageable and we can’t add new features fast enough” or “this complicated request is incredibly slow and customers are angry” moments that your knowledge can solve though.
- dev_0 4y agoExactly what I am doing. The job is still technical but not so academic
- npteljes 4y agoIt's normal. And the point weren't to always recall those specific pieces of knowledge, it was to get you to understand those concepts once. Once you did, understanding similar concepts will be easier, you will be able to spot more intricate patterns. Your intuition will be better in situations, where you spot or create things seemingly out of nowhere.
- datavirtue 4y agoExactly. I can not remember all of the isolation levels for each type of database engine but I know what can go wrong and that my application has to be somewhat aware of them. I have to research each particular engines' isolation level against my application requirements every time. Yet, I manage to forget the behavior of the common ones readily despite having studied them in-depth numerous times.
- strzibny 4y agoYes...
- oifjsidjf 4y agoYou should invert the question: since EVERYONE forgets all of this CS stuff then perhaps teaching this CS stuff to us programmers is a complete waste of our time in the 1st place? So it's not YOU who is "wrong": it's the universities who have it backwards and are disconnected from the real world work that programmers do.
- deleted 4y ago[deleted]
- gardenhedge 4y agoI don't think it's a waste. Some people going into web development, some into compiler design, some into database optimisation, some into IT management, some into AI, some into 3d game development etc etc. CS is a broad subject. It's pretty much like studying general science in college.
- p0nce 4y agoThen why do we not study debugging, naming, maintenance, reading code etc... specifically?
- loydb 4y agoThere needs to be an entire class devoted to working with Product Managers without killing anyone...
- beltsazar 4y agoBecause in most universities it's a Computer Science degree, not a Software Engineering degree. I suppose in those universities that offer SE degree, they have more courses focusing on programming and managing software projects.
- fma 4y agoI had a class titled "Software Engineering" that prepared me very well for software dev life cycle, maintenance etc... It was a semester long project where the professor was the "business" person and everyone had shared roles (someone was QA for a sprint)...and we get lectures on code quality, testing, best practices. To my surprise it doesn't exist in every college. Even though I went to a state school, not all state schools in that state required it. I disliked the professor but am eternity grateful for the class...I would interview kids nowadays who want $100k but have no idea what Agile is. This was in mid 2000s.
- Rounin 4y agoIn some specializations of programming, you're going to need a lot of those things. For instance, working with game engines, scientific simulations, image or signal processing, finance, or simply making the base software and libraries that other people use, can involve a lot of CS. In larger corporations, the programming is often much higher level, and consists more of stringing together libraries and frameworks and entire systems so that they fulfill a business purpose. Even simple programs can take hundreds of megabytes of memory and have tens or hundreds of dependencies beyond anyone's control. If you want to keep practicing your algorithm skills, you might try something like https://projecteuler.net/ https://projecteuler.net/ , which is very mathy, or https://checkio.org/ https://checkio.org/ , which is a bit more user-friendly, and get some practice there. As for OS theory, there are always open-source operating systems one can contribute to, though I suspect many of them would consume a lot of a person's time.
- DennisP 4y agoI was surprised to see database normalization in OP's list. Working at a modest-size company, database normalization was something I dealt with all the time. It was up to the devs to do table design, if you didn't normalize you'd end up with a mess.
- fjfbsufhdvfy 4y agoI've never seen someone even mention the word normalization when working with databases, but the knowledge is useful to intuitively design more sensible tables. Perhaps many people don't realize they are doing it?
- Mezzie 4y agoI know I didn't until I took a database class in grad school. (I'd worked with databases before and was taught them as a kid by my dad, but I needed some kind of 'proof' for CV purposes). I didn't call it 'normalization', I just considered it to be part of future-proofing/not wanting to be bothered if new uses showed up.
- 4y ago
- jwmoz 4y agoI had an interview the other day and they asked a question on Big O notation to which I didn't really know the answer so guessed it. In 10 years of web dev, backend engineering work I've never needed to use it.
- LadyCailin 4y agoYou have, you just don’t call it that. You probably know that accessing an array list is faster than a linked list, and a binary tree search is faster than an array list search. What you may not remember is the specific big O notation for those, but that’s not the important thing anyways. The important thing is being able to reason over relative complexities of various operations. When I interview people, I ask the question, but don’t penalize them for not knowing. I penalize them for not being able to re-derive them after reasoning through the algorithm.
- dev_0 4y agoAfter working for years, you will have gut feeling on whether an implementation is slow or fast. This is done with testing on large N dataset
- kasey_junk 4y agoExcept on modern architectures your intuition about what is actually faster is likely wrong if it’s based on just Big O operation counts. Memory locality, prefetching and branch prediction are all likely more important to actual performance than Big O complexity and those things can change from architecture to architecture. When I was learning big o notation numa architectures where just becoming commercially viable. You’d get dramatically different performance results in one lab to the other based on which machines were in it.
- LadyCailin 4y agoMaybe, but for a given machine, a O(n) algorithm will certainly be worse than O(log n), for non-trivial sizes of n. For trivial sizes, those other things will definitely dominate, and are also good to keep in mind.
- kixpanganiban 4y agoAs you progress in your software engineering career, the level of abstraction of the knowledge you use on a daily basis gets higher and higher. The academic CS concepts underpin everything, but rarely do you need to go below a few levels of abstraction to solve problems in the real-world (at least in most non-cutting edge jobs). For example, to build a web app the level of abstraction your job requires is probably on the level of web frameworks and API's. Now and then you'd need to understand the web protocols. Rarely would you need to write software involving the low level transport mechanisms. Rarely would you inspect packets yourself and perform verification and decoding through pen and paper. Even rarer still would you need to use maths to design the signaling procedures between hardware components. Point being that it's normal to now know off-hand all the lower level CS stuff, but you recognize the patterns, and in the rare occasion you need to actually access all that information you wouldn't be at a complete loss.
- bbarn 4y agoNormal, yes. The nice thing about forgotten knowledge is that it's much easier to jog the memory and get it back than to learn it from nothing. You likely still use a lot of the fundamental concepts without realizing it. I am someone who came from a non-traditional, self-taught path ~25 years ago. I did get some formal schooling in electronics, which you'd think was useless, but I can think of a few times solid digital logic understanding has served me well in the past, for example. On the other side of that, I designed some shitty databases early in my career! Understanding normalization could have saved me a lot of headaches when I was new.
- dev_0 4y agoBut you don't know what you are studying is important or not until you are confronted with a real world problem
- xeromal 4y agoYup, I can't tell you what 6th normal form is anymore, but I can tell you if a database looks poorly designed or not. lol
- justbaker 4y agoWhich of those helps day to day? I’m always going to say the latter lol
- justbaker 4y agoI always think self taught is a better pathway. You gain more experience making mistakes and learning from them that way. You also pick up more “best practices” by learning how shitty your bad practices of the past were.
- atum47 4y agoI watch videos and read wikipedia to try to keep those things fresh in my mind. Do I still remember the Greek alphabet? What's the formula for (k choose n)? What's the difference between permutation and combination? Can I still write a Turing machine? What about a Turing with multiple tapes? I have a bunch of those "questions" that I try to always remember. My YouTube history is a bunch of those types of videos with some best moments clips from my favorite comedy shows in between them.
- vishnugupta 4y agoYes, totally normal. If you want to brush up on that knowledge it won't take much time either; maybe couple of weeks and you'll be able to recollect. The thing though is most of the thing we (at least I) learned are outdated by at least 10 years. So if you want to learn how things work out in the field I suggest reading about actual implementation. For instance this book is terrific about Linux OS [1], and this is a classic on concurrent programming [2], this one about MySQL [3] and so on. [1] https://www.amazon.com/Linux-Kernel-Development-Robert-Love/dp/8131758184 https://www.amazon.com/Linux-Kernel-Development-Robert-Love/... [2] https://www.amazon.com/Art-Multiprocessor-Programming-Maurice-Herlihy/dp/0124159508 https://www.amazon.com/Art-Multiprocessor-Programming-Mauric... [3] https://www.amazon.in/Understanding-MySQL-Internals-Discovering-Improving-ebook/dp/B0043EWUIO https://www.amazon.in/Understanding-MySQL-Internals-Discover...
- jongjong 4y agoI tend to be a somewhat slow learner but once I've learned something, I seem to remember it forever (I only lose a little bit of detail). I remember most of the stuff from university 10 years ago including the brand and model of the microcontroller I programmed (ATMEL ATMEGA8-16PU) and the names of the I/O registers on that chip, the name of the program I used to program it with (AVR Studio). I also remember most stuff I learned in Discrete Mathematics, pretty much every ADT (Abstract Data Type) I learned about in my Algorithms and Data Structures class and I remember pretty much everything I learned in Machine Learning (decision trees with minimax algorithm, alpha-beta pruning, heuristic functions, Artificial Neural Networks, step functions, sigmoid functions, backpropagation algorithm)... Time and space complexity... Except for time and space complexity and ADTs, I haven't really used the other stuff.
- primeblue 4y ago
- quickthrower2 4y agoThat sounds like unusually good memory, almost like Michael Ross level. Make good use of that!
- jongjong 4y agoMy ability to learn and remember stuff seems to be related to how interesting (how valuable) I find the information. The reason why I'm a slow learner is that I find it hard to remember things when I can't see their utility value. It takes a while to understand the full utility value of something. On the flip side, sometimes I don't even notice (much less remember) certain things. When I'm visiting a new city with someone else, I never seem to be able to remember how to get back to the starting point - I recognize almost none of the streets or landmarks on the way back (aside from a few particularly interesting ones). My mind just delegates the full responsibility of finding the way back to the other person. It's not a problem if I'm visiting a city alone though.
- washadjeffmad 4y agoDon't panic! That's how education works. I don't use every tool in my shop every day, but when I need them, I know I can dust off the manual and figure them back out. College was just your first stepping stone of hopefully a very long and interesting journey. It might have been special to you, but there's no need to take it along.
- primeblue 4y ago
- pm90 4y agoThis is quite normal. The CS curriculum is more about breadth than depth. My personal experience has been that this knowledge is useful as a way of knowing “the lay of the land”. My brain knows that a cpu has a limited addressable space due to the length of bits used to represent memory addresses. It has a sense for how bits travel between networks. A rudimentary idea of how computers actually work. Systems engineering makes you think about these things a lot more. e.g. I had to go back and relearn most of my networking knowledge to really grok DNS and firewalls in order to debug application connectivity issues. When you dig into them it feels like revisiting a garden you have been to earlier and you are excited to know how its changed over the years and whether there’s any new flowers in there.
- davedx 4y agoThey’ll come back when you need to use them. My experiences: using compiler theory stuff, state machines, database normalization, algorithms on the job. You start off feeling rusty and forgetful but once you do some reading and roll your sleeves up it comes back to you. Also I wasn’t a very diligent undergrad and my memory isn’t exceptional :) YMMV
- rramadass 4y agoNo, it is NOT normal if you truly mean you remember nothing from your studies. I really hope that is not the case and that you have only forgotten the intricate details (which is fine). The absolute fundamentals (some of which are listed below) should never be forgotten. 1) Computer Architecture vs. Organization, CPU/Execution Units/Caches/Memory, Clock, Pipelining, ILP, Multiprocessor, SoC. 2) OS responsibilities - Resource management(everything), Kernel vs App, Process vs. Thread, System Calls, Timers/Interrupts/Device Drivers. 3) RDBMS Normalization - "The Key, The Whole Key and Nothing else but the Key". 4) Serial vs Parallel vs. Distributed programming. Hit the books again if the above don't ring a bell.
- hluska 4y agoThere’s no reason to be demeaning. OP is obviously anxious. Why not try to be a bit kind? Encourage people, don’t demean them.
- rramadass 4y agoOh... That was not my intention. I meant it to be "direct" since i felt the other responders were not being quite truthful and tiptoeing around in their answers. IME, That is never a good way to help somebody when it comes to STEM subjects.
- dev_0 4y agoIt might take years to study these topics in depth
- rramadass 4y agoYou are looking at it wrong; you need to go for Breadth rather than Depth to shore up the fundamentals. Think of it as developing a "T-shaped skillset" (https://en.wikipedia.org/wiki/T-shaped_skills https://en.wikipedia.org/wiki/T-shaped_skills) and the ability to bridge the jobs of both an Engineer and a Technician (https://www.indeed.com/career-advice/finding-a-job/technician-vs-engineer https://www.indeed.com/career-advice/finding-a-job/technicia...). Also, the topics i have listed are "Applied Computer Science" and not "Theoretical Computing Science" and thus forms the everyday "working" knowledge for all Software Engineers. The emphasis/depth may vary based on the job but the knowledge is mandatory. You should easily be able to refresh/learn the fundamentals in a month or two given that you have already been exposed to them once.
- hluska 4y agoHonestly OP, it’s pretty normal. You have gotten used to working at a different level of abstraction. If you’re really concerned, you could crack open some textbooks and jog your memory. But you likely haven’t forgotten, you’re just stuck into a different type of problem. You’ll be okay and there’s no reason to panic! Panic will just make everything worse. Chill - you have got this and you will be okay.
- ahati 4y agoForgetting fundamentals is not normal, at least that is what I thought. Responses in this post is changing my perception. No wonder, recruiting is hard. I have found a knowlge of OS, computer organizaton, digital logic, networking, compiler design are crucial. If you are into datascience or ML, math is absolutely essential. I don't know why so many people think forgetting fundamental is normal.
- going_ham 4y agoExactly (esp for ML/Graphics/Vision). However, I cannot say for other fields. That is why it is necessary to keep revising these fundamentals. I always plan to do it, but end up doing something else. >.< If anyone has idea on ways to design a revision schedule, please help me. Thank you in advance!
- barrysteve 4y agoWhen you're up in the tree branches, it's easy to forget what the roots look like. You're right though, we should hang on to the fundamentals to make adapting to new tech easier.
- scarface74 4y agoBecause most of the 2.7 million developers in the US are “Dark Matter Developers” writing yet another CRUD app.
- enumjorge 4y agoNot sure why people are surprised that others can have different experiences than they do. Sounds like your job requires knowledge of those fundamentals. Not every job is like that. If you’re writing an Android app or crud web service I’d say you’re likely not having to apply knowledge of compiler design. It’s pretty normal for people to forget knowledge they’re not using. Do you remember the physics, chemistry, etc fundamentals that you learned in high school/college if you haven’t been using them?
- arinlen 4y ago> I don't know why so many people think forgetting fundamental is normal. Because it is normal. The notion that you recall everything from a random class you took some semester years ago, and that it won't ever leave your memory, is not realistic nor grounded on reality. Furthermore, "fundamentals" don't mean the same for all people. Most developers will go through their entire career without implementing a single data structure or write a single pet OS or put together a single parser. They will however have to handle OO programming and software architecture and concurrent programming. I guess that the definition of "fundamentals" is tied to what you need to do to perform on your every day life, and that's why absurd things like interviewing candidates based on data structures and ask stuff like what's placement new in C++ is a complete waste of time and effort to assess how a candidate will perform.
- BitwiseFool 4y agoThat matches my experience. In all honesty, as a programmer working on enterprise software development, I feel more like a mechanic than an engineer who designs machines. To stretch an analogy, I spent time learning all of the ins-and-outs of how a transmission works and how to make one from scratch. But in the real world the transmission was already made by someone decades ago and my job is to maintain it and swap out some parts when necessary. I suppose this would be an issue if I were working at a startup or doing some greenfield development, but I suspect the majority of software developers/engineers are working on a codebase that is already established. And, the need for those from-scratch fundamentals is low to non-existent and naturally that knowledge atrophies.
- wombat-man 4y agoYeah, it can be a lot of fun to build a product up but it's also a shit ton of work and also whoever is in charge is, at best, faintly interested in best practices and desperately concerned with when the thing will be ready. It does feel silly working on a big hulking code base but I have to appreciate the precision.
- asdev 4y agoI think most jobs are like this. You quickly learn how to work on a codebase, how it's deployed etc. There are always constraints on large codebases. From there it's mostly just figuring out business logic. From that point, years have passed and you don't know how to start a codebase from scratch again
- sanderjd 4y agoThe most important part of any foundational education like yours in computer science is to solve the problem of unknown unknowns. It isn't necessary to recall all the answers to questions, what is useful is to know what kinds of questions have already known answers (and by corollary, which ones don't), so that you can look them up when needed rather than trying to reinvent the world.
- Tomis02 4y agoIt just means you've been doing jobs where CS is (apparently) unimportant. If you're ok with that type of job then by all means, continue, it pays the bills. The downside is that it might get mind-numbingly boring in the future. Pushing bits between API calls isn't exactly computer science.
- asdev 4y agoCS is unimportant in 99% of jobs. What's important in a job is making an impact in the company you work for. This means building product features, improving systems etc. but this rarely intersects with "CS" problems
- Tomis02 4y agoPeople think CS is unimportant, which is why we have crap software left, right and centre. But I don't want to get into that, so let's suppose you're right. What OP needs to figure out is if a job where CS is considered unimportant is what they want from their professional life. Pushing bits between API calls and learning new frameworks, building product features into a codebase without breaking existing ones.
- dunemaster 4y agoYou mean CS is unimportant for 99% of all code monkeys. But it is absolutely necessary for bleeding edge development and creating libraries that people who deem CS unimportant. It’s like saying that math is a complete waste of time because no programmer needs more than school algebra ever. True? Absolutely! Do we still need math? If you married rich or grew up rich then it’s a nice brain teaser. Otherwise touch grass.
- bell-cot 4y agoPerfectly normal, in a very wide range of fields. A friend of mine was a career Civil Engineer (& Professional Engineer, etc.). He ditched all his old textbooks & such when he retired - because he had neither looked at them in 30+ years, nor ever needed to.
- wombat-man 4y agoYeah is part of why certain interview styles are so tough. Hard to remember classes you took years and years ago.
- pphysch 4y agoAcademia, at its worst, is a closed system; it should be regarded as a lucky coincidence if any practical ("real world") skills are obtained in the process of earning a BS/MS/PhD.
- balls187 4y agoI suppose it's where you studied. My alma matter focuses on undergraduate education emphasizing real-world applications.
- orlp 4y agoWell the problem is that academia has been co-opted into being a vocational school (especially for STEM), when its purpose is scientific research. People looking for vocational schooling (e.g. "computer programmer") are frustrated that a lot of the education is theoretical/purely scientific and therefore "useless", and professors are frustrated having to teach disinterested students or university mandated material not relevant to research. Both parties feel the other is wrong when in reality neither is---the relationship society has forced them into is wrong.
- asdev 4y agoyour brain is an LRU cache. It'll prioritize what you're using daily and what knowledge you need to rely on. It's completely normal to forget stuff, even the fundamentals
- FZ_BA 4y agoThey are still in your mind, just locked in a little dusty room.
- Tade0 4y agoWelcome to the tail end of the Dunning-Kruger curve. Everyone experiences this eventually, but not everybody realizes it at first. Now that you know your capacity I recommend doing an annual round up of the things you still remember and can confidently put in your CV. Also take note on how job interviews all but ignore this phenomenon.
- twblalock 4y agoYou might not have it at the front of your mind, but you have probably internalized a lot of it. When you see a problem that would benefit from application of CS theory you might end up applying it without realizing that is what you are doing.
- FunnyBadger 4y agoYou will forget things but if you had your textbooks and flipped through them, would it come back? Have you tried doing that?
- WalterBright 4y agoI've retaken subjects by watching MIT courses on youtube. It shakes the rust off, and it comes back.
- dev_0 4y agoEdX or just lectures? Do you do the assignments?
- WalterBright 4y agoJust the lectures. Complete MIT lecture series are on Youtube. I didn't do the assignments, though it would certainly stick better if I did. I'd just watch the lectures while I did my exercises.
- jdmg94 4y agoIts normal, and you'll only need that for the next time you're doing 9 rounds of interviews
- analog31 4y agoI studied math and physics, not CS, but the situation is probably similar. I think the best, if not only realistic way to retain what I will call "theoretical" knowledge is to be genuinely interested in those things, possibly to the detriment of the most rapid possible career advancement. The other thing is that it's normal. As systems get more complicated, the number of interactions between N elements grows as O(N*2). Thus, most "engineers" spend the bulk of their time organizing and arranging things, fitting things together, troubleshooting, dealing with vendors, etc. In some fields, manually operating tools such as CAD becomes more efficient than understanding the algorithms programmed into the tools. This is basically human powered information processing. The work needed to make the things that are fit together, such as algorithms, falls to a small fraction of the workforce, who are not necessarily the most highly rewarded, as their work is not so visible.
- bazhova 4y agoYou only hurt yourself by drawing a line between academic knowledge and work knowledge. Very few people are actual geniuses that just retain information. Rather, most people know about things because they use them every day, that's all. Professors and researchers know CS stuff because that's what they need to get a paycheck. You know K8s because that gets you a paycheck. The fact that the former is called "knowledge" and the latter a "skillset" is just a technicality that shouldn't bother you. All knowledge is equal. If you need to know more CS stuff you will learn it no doubt!
- xtracto 4y agoThat may be also because you are working in a Software Engineering job as a Computer Scientist. Or even as an Alayst Programmer (Technical profession, not needing a Degree) These are 3 very different professions that have 'coding' in common. And given the huge demand for "analyst programmers" nowadays, a lot of people who studied the other two, end up working as the latter.
- rufius 4y agoThe thing most folks don’t realize is that Computer Science isn’t Software Engineering. They’re related but distinct. Software Engineering is a lot of the day to day work you do as software engineer. It’s more about people, process, execution. In reality, most problems you’ll encounter in day to day software engineering won’t be CS problems. Lots of CRUD-shaped apps of varying forms and sizes. Occasionally, you’ll get a real CS shaped problem and those are fun. As others say - refreshers worked well since you’ve already learned the material. Find some interesting books or ideas to explore and they’ll come back.
- jasonm23 4y agoThe lightbulb moment for me was when I read this definition of software engineering: Software Engineering = Programming + people + time.
- epirogov 4y agoWe have a local byword - because I never knew, I can not remember it now. when I say it to myself, everything falls into place.
- rvr_ 4y agoMy unpopular opinion is that you only forget what you have not learned and that you only learn what you do. The vast majority studies only to pass exams. So your situation is pretty normal.
- pragmatic 4y agoWait till you hit 10, 15, 20 etc. The prospects of passing leet code interviews without major time investment are not great .
- IYasha 4y ago>> I can't remember these CS stuffs Kind of nomal. >> my mind is delivering the feature to meet business goals and Kubernetes stuffs. Definitely not normal.
- kleer001 4y agoDon't worry. You've got the intuition necessary to ask the right questions and filter through the results to quickly find the solution to whatever problem you're facing in CS when it comes up.
- dev_0 4y agoI am going to use Anki to study again. Anyone is using Anki for CS?