As I am preparing for a interview I am facing this weird thing that whenever I learn a new algorithm I tend to forget how I got it working after few days have been passed in a programming language. But remembers the outline of the algorithms. So is this normal for a engineer to forget in IT industry?
That happens for me as well, It's not about how do we achieve the results, it's all about how do you understand the algorithms, you may find a better solution in the future for the same problems so understand the logic, not the code.
And We are human beings we cannot remember everything that we learn every day.
Practicing and relating problems with others that you have already solved will help a lot.
I think it used to be more realistic to expect people to remember more syntax off the top of their heads, because in the past more people were able to really specialise in a single language. So, it wasn't weird to expect that they got really deeply good at that one single language.
If you look at modern web application development, many people don't get to specialise like that. They need to know quite a wide range of languages, particularly if they are working cross-stack into the backend, data and devops layers.
In an app I work on right now you might touch HTML (via JSX), CSS (via SCSS), Typescript, C#, nodejs tooling, .net tooling, Powershell scripts and some specialised data APIs. Then you get into the various CI/CD, deployment and cloud hosting parts of the system used to deploy it.
Even if you wanted to very broadly lump these together as "Javascript and .Net" it's still two different ecosystems to keep in your head. So, being able to remember the specifics of your algorithm implementation becomes less important than knowing the shape and capabilities of that algo... as does the ability to quickly assemble solutions in a new context. "I think this system has an API for that... (googles to confirm)... and I can probably use X algorithm to make use of it, it worked in another language (googles for an implementation in the current language)..." etc.
If you are worried about losing language fundamentals, maybe try having a personal library of isolated implementations. So you have a file somewhere that you've worked on and commented while you got the algo working, so if you need it again you can go back to your personal store of code. It can quickly refresh your memory and since the implementation wasn't done in-situ it's likely to be more 'liftable' to your new use case.
Oh man, you have no idea dude. The amount of code and forget is crazy. There is just way too much stuff for any one person to keep in their head. Happens All the time.
I might be weird, but after writing a piece of code which gave me trouble, I tend to read it over and over again, sometimes even a few days later. The result is that I memorize patterns I used, reflect what I did (and sometimes find ways to improve the code), and I also remember the algorithms and their troubles.
Self-reflection like that helps me solve problems from scratch, which I know I solved somewhere else, but this time quick and smooth, and maybe even in a way which better fits with the new environment.
So, you might want to try to not only read about algorithms, but also write them and then re-read them and do some reflection about what you did.
Well it's not really a "good" thing of course - it would be more convenient for ourselves if we could remember everything.
But yes it's normal to not remember all or even most of the code you write, there's just to much of it. Some people remember better, and it'll get a bit easier if you've seen more code, but in general you can't remember everything.
Which means that writing clear code and leaving comments is not just for your colleagues, it's also for your future self!
Unfortunately for me I have this and it's something I have to live with, but this is also why I have gone for the self employed route as most employers don't understand it. Yes I could easily recall how to type in HTML and CSS because I've done it enough over the years, but even with Python even though I'm good at it, if put on the spot like I was for an interview I couldn't recall it.
I am the type of developer who has a book always near me or cheat-sheets to reference back to something I had written. Only way that I know is years in comparison so if you've been working with it long enough, you'll remember it but short term unless you're one of these personality's that have a photographic memory, it will take time.
I know for me its due to pressure and stress and being put on the spot that gets me, but there are a new generation of employers who will support you, i can only hope that you will find one of these :)
Thanks for sharing your opinion. And I hope the same I got a employer which supports me during the interview not just wanted a solution to a problem.
Joshua Alpuerto
Full Stack | NodeJS | React | PHP | React-Native | Web | Mobile
Not really a "good" thing but this is normal. What matters here is when you get back to your code and can understand it easily. Don't be discourage if you can't(We all experience it), but you'll learn that its time to do some refactoring it to make it more readable.