In this article I want to talk about how a non-CS engineer can prepare for a software engineering role, along with the must-do CS topics for interviews. I made this switch myself: I'm an electronics engineer from VIT Vellore who moved into software.
Many want to become good software engineers, but only a few succeed, because it demands:
Data structures and algorithms. Arrays, maps, sets, trees, graphs, and dynamic programming. GeeksforGeeks and LeetCode are great for practice, and "Data Structures and Algorithms Made Easy" by Narasimha Karumanchi is a solid book.
Database management systems. I learned to write SQL on the job, but you're expected to know joins, SQL queries, and indexing. Practice with LeetCode's database problems.
Operating systems. Concurrency, threads and processes, race conditions, deadlocks, semaphores, and scheduling algorithms. Galvin's "Operating System Principles" is the classic reference.
High-level design. Gaurav Sen's system design videos and "Grokking the System Design Interview" are good starting points.
A few interviewer favourites worth mastering:
There's no shortcut to interview preparation. As a non-CS engineer you have to bring yourself on par with CS engineers applying for the same role, so invest the time. Beyond this list, solve many more problems so you can find optimized solutions to unseen questions during interviews.
I may have missed some important topics; feel free to suggest resources and I'll happily update this. I'm still a newbie at tech blogging and would love your feedback.