It's been 3 years since I graduated and started working as a full-time software engineer, but I still struggle with leetcode problems. Even easy ones. My day to day work involves gluing together API's and not writing algorithmic code to solve tricky puzzles. Don't think that just because you can't solve leetcode problems you're not meant to be an engineer. And trust me, I feel your pain. I haven't written a binary search tree from scratch in years, so reading through my algorithms book right now is a struggle. I'm also actively interviewing for jobs and it's really frustrating to work 40-50 hours at work then come home and put in another 20-30 hours of leetcoding for interviews. It's really really tough.
I'm ready to be downvoted for this, but if you can't solve a problem in 15-20 minutes, just look at the solution, understand it, and memorize it. The more problems you work on the better your pattern recognition will get, and it'll be easier to solve related problems. Unless you're a genius programmer, I seriously doubt most normal people can easily and flawlessly answer these stupid questions within 15 minutes in an interview setting.
Also keep in mind that the vast majority of interviewers will tell you that they're looking for a good thought process as opposed to the correct solution, but they're 100% full of shit so don't believe what they say. There are hundreds of engineers who have already memorized 300+ leetcode problems and WILL write correct and bug-free code in an interview setting, and they will get the job no matter how good your "thought process" is. However, there are SOME companies that care about thought process, and those are the ones you have to look for. Unfortunately I haven't found out how to determine which companies actually do that, but typically they're start-ups. This only applies if you're in the Bay Area, however. I can't comment on what it's like outside of California.
I feel like nobody in the thread truly read your original post. You asked for alternative career options because you can't solve leetcode problems and that's absolutely ridiculous. You can absolutely get hired as a software engineer, you just have to play the game. Keep leetcoding and you'll eventually crack an interview. It's just a numbers game. Good luck!
I write my notes in a plain text file using Vim and just push them to my github repo for backup. I like this method because I can grep for keywords and find information quickly. The point of this personal knowledge is to record important information from books I've read, but so that I don't have to read through the whole book again to find information.
I try to things as simple as possible, and do all my note taking in Google Docs. Sometimes I worry that I depend too much on Google, so I started to take notes in plaintext using Vim and uploading them to my GitHub repo. For everything else (including visualization) I use pen and paper (or a graph composition notebook).
Debugging by David J. Agans. It's about 206 pages and the information is pretty high level, but it taught me to systematically debug problems instead of blindly changing random code.
I've been seeing a lot of threads/articles about systems thinking come up on HN lately. As a developer, why is it important to learn "systems thinking"? How will it make me a better developer?
I listen to 4-5 hours of music per day (includes commute to/from work and being at work). I don't get how people don't listen to music for that long, music is wonderful...
Hana Haus in Palo Alto is a great co-working space, and is about a 15 minute drive from MV. Otherwise I really enjoy the Mountain View public library, just make sure to get there early before it gets flooded with engineers and Stanford students. The study environment there is even more intense than my old college library.
I graduated from college more than 2 years ago so I forgot almost all of them CS topics that I've learned and wanted to review the fundamentals (OS, databases, computer architecture, etc). And no, I don't use of these concepts very much at work, only surface level knowledge. I've also been trying to learn more about malware analysis and reverse engineering, and it seems like having a solid foundation in CS concepts is key to being proficient at it.
I recently decided to review operating systems, but my old Tanenbaum textbook from college would take forever to read through especially now that I'm working full time. I've been watching the Berkeley lecture series on Youtube (CS 162) and its been pretty good at covering the main topics concisely.
Don't forget Big Data and Data Science. Sometime in 2017 cryptocurrency really blew up in popularity, and suddenly everyone in my LinkedIn network went from being a Data Scientist to Cryptocurrency Expert or Blockchain Developer. People love bandwagons.
Exercise. Lifting weights, running, playing tennis/football/basketball/etc. In college I used to mentally review and visualize algorithms and other CS concepts during long 10+ mile runs. I always came home with new insights. Even if I'm not thinking anything technical, after exercise I'm always mentally invigorated. Also a good night's sleep will improve every aspect of your life.
I'm EXTREMELY interested in finding a new job at literally any company outside of my own. Maybe interviewers don't think I'm interested enough when I can't crank out a 100% correct and optimized algorithm in 15 minutes? /s
All I do at work is fix bugs by changing a few lines of code and glue together API's to send data from A to B. I don't regularly search BST's using DFS/BFS algorithms or find the kth shortest string in a merged unsorted linked list or some shit like that. Preparing for these technical interviews is like a part-time job after my full-time job.
1/10. Constant mass layoffs, most subject matter experts have quit, the code is a legacy pile of bugs and where changing one line of code is incredibly painful. Also new college grads are making 20k+ higher than my current salary despite having 2 years of experience in the bay area. I've been trying to find a new job but I'm so exhausted and stressed out at the end of the day that I don't have the energy to grind leetcode/algorithms problems to prepare for technical interviews, and those whiteboarding/system design interviews are brutal.
I think this generally applies to self-help style books, where the majority of the book is fluff with very little useful content. Those books can definitely be condensed into short blogs posts. However blogs and random tutorials don't do technical topics justice. If I'm learning how to reverse engineer a piece of malware or how to create a blockchain application, textbooks are the best resource to guide me.
The Subtle Art of Not Giving a Fuck is a cringy read, I couldn't get past the first chapter. Deep Work as a whole can be summarized in a sentence. My interpretation is: put away distractions and focus on getting things done. There's other advice there but none of it is anything you haven't heard of before. CODE is great on the other hand. Just skip the nonsense self-help stuff.
As an engineer working on security applications, how do I learn more about the machine learning/deep learning discussed in this article? Is it enough to have a general understanding and use off the shelf tools/libraries, or I should study the nitty gritty math? I have a CS degree but haven't touched math in years.
Flannel button-down shirt (untucked, sleeves rolled up), jeans, boots (Iron Rangers). On colder days I wear a bomber jacket. This is a really basic outfit that almost every mid-20's engineer in the bay area wears, but I still think its casual enough to wear on a night out but formal enough to look decently professional.
Code Complete, Clean Code, and Debugging were profoundly educational to me as a junior developer. The Obstacle is the Way helped me deal with personal issues, but it's still a work in progress. The Joy of Less was a great introduction to minimalism. I just started reading Neuromancer but its got me hooked on the scifi/cyberpunk genre.