Hi there, I am an asic design engineer. I am not a strong coder but I feel it’s high time I start developing the skill set for coding and eventually move towards SW. I tried to do some leetcode but I got depressed. I figured that I do not know basics of algo and data structure. My understanding is without doing basics and jumping directly will not only take a lot of time but also demotivate me. I would like to know what is the best way to start becoming a good coder and also develop the skill to crack software engineering interviews. What books, online courses or YouTube channels I could follow to make this happen? I use Perl and little python for scripting at work but nothing too crazy. My goal is to master python 1st. I am pumped to pick this up and be successful to make the career shift eventually. Thank you :) 5.5 yoe, 170k tc
if it’s your first time doing leetcode and struggling, it helps to read cracking thecoding interview or elements of programming interviews to get some handholding
usu coding interviews cover the stuff typically taught in the first two years of a cs program (discrete math, data structures, basic algorithms with a sprinkling of advanced stuff, and low level coding). depending on your specific background and experience, I’d focus on bridging the knowledge gaps
Great suggestion to read cracking the coding interview. +1
One thing that helped me was to take advantage of free courses. This was years ago but I watched and did the assignments for a Stanford or MIT (don’t recall which school) Algos course and other introductory CS courses. They provided the foundation and knowledge I needed to get started. Now there are many more offerings through Udacity and similar websites. Like the other person suggested in the previous comment. Look at university curriculums and try to find some courses online to cover the basics. Keep in mind these courses will teach you the fundamentals but not really the practical aspects of doing this professionally. For that you need hand on experience. The courses may be enough to get your foot in the door in a junior role. I made the jump from signal processing to full time SWE. It’s doable if you enjoy the process of learning. Best of luck!
CTCi, epi, leetcode, design of data intensive applications, interviewing.io, pramp
Try pranp.com for mock interview and interviewbit.com for preparation
You might want to do a boot camp like app academy.
Tech Industry
Yesterday
28237
Goog Employees Arrested
Cars
Yesterday
1339
Why are Americans obsessed with SUV?
2024 Tax
4h
682
Biden’s new tax proposal is wild
Software Engineering Career
Yesterday
3780
28 terrorist worshipping idiots just got themselves fired and I've never been prouder to work at Google.
Tech Industry
10h
1921
Go woke, go broke: Google fires 28 employees involved in pro-Hamas protest
Honestly ASIC design has nothing to do with SWE (done some ASIC design in the past). I would say just follow the same path that people who are learning to program from scratch go through, so you get a grasp on the fundamentals. Using python / perl for scripting is very different from actually coding, so I wouldn't get down if you feel like you're taking a long time to learn etc. since you're essentially learning from the beginning.
Agreed. Any suggestions where to start and what resources to look for? I just wanted to give my background so I mentioned asic
Not actually sure off the top of my head. I did a CS degree so I didn't really have to go looking for the fundamentals, so I'm not really familiar with what's out there. Regardless, really getting to grips with basic data structures is going to be the best start, which you can do in Python, but it's a bit harder to conceptualize when you don't have direct access to memory. Personally I learnt to program by coding in C, so that's what I recommend. You should be able to describe the basic structure and internal mechanisms (i.e. pointer manipulation) of how linked lists, trees, hashtables, arrays, vectors etc work. Once you have that down then you can start working on algorithms that use those data structures. You're not going to be implementing these data structures by yourself basically ever, but not understanding how they work is the most common gap I see in self taught programmers. I wouldn't bother with doing leetcode / CTCI quite yet.