The transition from Core to Software
My journey of transitioning from Core Electrical Engineering to Software Engineering
Some Background
I’m a Third Year Electrical Engineering Student at Veermata Jijabai Technological Institute, Mumbai. I’m an Incoming Technology Consultant Intern’22 at PWC, India.
I initially started composing this as an answer to a frequently asked question about the roadmap for transitioning from Electrical Engineering to Software Engineering. So, let’s get started…
Declaration - Deciding to Code
The story begins with me joining Electrical Engineering at VJTI, Mumbai. The initial days were full of fun. But the reality struck after I had a brief chat with one of my seniors who also happened to be my School senior. He advised me to start programming and naturally try if it turns out well. I told my brother the situation. He gave me the necessary resources and suggested I should start with C. This was after around 3 months of joining and enjoying the initial phase of my college life.
Tip: The earlier you start the more you can explore. So start early!
Initialization - Hello World!
I started learning C Programming Language. I followed Saurabh Shukla Sir’s C Playlist. The initial phase was tough because I hadn’t learned anything by myself before this. I used to ask my brother doubts, frequently googled the basic terms, searched through the book for similar problems. Many times I felt like giving up, but the motivation to solve more problems kept me going.
It required me 3 months to get good at C and transition to C++. I solved over 90 questions from Hackerrank and Geeks for Geeks. I know that’s a slow pace but managing college and coding in the first year is tuff! Following my profiles growth, my love for programming also started to grow. Then came the breakthrough of my programming life i.e. the Lockdown of 2020. Everybody was locked in their houses, and we had nothing to do. Our college offered us a complimentary premium subscription to Coursera for three months. Again my Guru i.e. my brother suggested Web Design for Everybody Specialization and Python for Everybody Specialization. After completing these two courses, I ascertained this was the field I require to establish a career in.
Tip: Pick one programming language from C++, Java, or Python and start learning its basics. I naturally prefer C++ just because it is fast and is preferred for Competitive programming. Practice the fundamental questions on Hackerrank which is the best platform for beginners according to me. You can also check out the Geeks for Geeks practice section or HackerEarth. Learn the library functions and standard containers. E.g. STL in C++, Collections in Java.
Inheritance - Building the first major Project
The next big thing that happened was the Inheritance’2020, organized by CoC VJTI which represents the coding community of VJTI. I built a real-world blogging website along with my team. The tech stack was Flask, HTML, CSS, JS, SQLite, and Python. I also learned about Git and Github. My mentors were extremely helpful and properly guided us throughout the program. After the conclusion of Inheritance, I wanted to explore more domains to master one. Again to gain some needed help I moved to my Guru. He suggested I should explore the basics of each chosen field for a week and then decide if I can perform that for the whole day.
Tip: Before developing a major project make sure you build mini-projects while learning any technology. Practicing hands-on will not only aid you to enhance your muscle memory but will in addition provide you a boost while you’re making some major project. HTML, CSS, JS are a must for Web Dev so make sure you explore their basics at least. Try learning JavaScript up to the intermediate level to develop dynamic sites using frameworks and libraries like Vue.js, Node.js, React.js, etc.
Polymorphism - Trying out various domains
I followed the Guru and started with Data Science which was a bit interesting, but because of the rigorous computation and math, the interest faded in a couple of days. Exploring the next field, I started learning App Development with Android Studio. My laptop was low end thus the Android Studio made it heat like hotcakes. Also, the knowledge of Java made me numb as I was a C++ person. Like so, I dropped the idea of App Dev. Moving ahead I was getting frustrated after trying and dropping domains, therefore I decided to try for one last time the GameDev. I started with making a basic snakes game with the PyGame module. It was fascinating and made me move ahead with Unity, again as my laptop was low-end back then I had to drop the idea of Game-dev, but it is something that I desire to iterate on in near future.
Tip: The more domains you try the better idea you get about your passion. Try out things even if they don’t make sense or seem uninteresting at first. You can’t relate to what your interest is until you attempt it yourself. Plus, avoid dropping a domain just because of a lack of resources or low-end resources. Research about any domain in detail before starting. There are tons of videos and articles available on the internet.
Encapsulation - Putting it all together
Until this point, the colleges had started operating in online mode. Electrical Engineering seemed boring to me as my focus always shifted towards programming and building stuff even during lectures. In this manner, I started building more Web dev projects from Youtube. Days passed, and I started learning Graphics Design just for trying new things which I do throughout my life. Suddenly my posters started getting featured on various community handles of my college. It was a great Dopamine Kick after gaining feedback and appreciation from the seniors whom I barely knew. Many of those seniors stay good friends. They constantly support me whenever asked.
Tip: Utilize your time wisely. Time is the key to everything. Try to be consistent in whatever you undertake..
Recursion - The cycle of Problem Solving
Around 1 year had passed and I had C, C++, HTML, CSS, JS, Flask, SQLite, AdobeXD in my tech stack. But, as soon as I tried to get intermediate proficiency in these tech stacks the problem arose of being unable to understand things, then I addressed the problem to my Guru and he advised me to learn Data Structures and Algorithms along with core CS fundamentals. I started following this series of tutorials by MyCodeSchool. I again started solving questions on Hackerrank and GFG. The kick again started coming after solving the questions. It was like a recursion that I experienced. Alongside DSA I also started building my Portfolio. At this time our end-semester holidays began. I discovered my passion for programming when I sat for straight 10+ hours building my portfolio website in a single day.
Tip: Problem-solving can be frustrating at times when you get errors or wrong answers. Try learning from your mistakes. You can follow this method to solve questions that have worked for me. Try any question for 25–30 minutes. If you’re clueless, try receiving a hint if available, or else see the editorial/solution. Just read the steps don’t refer to the code straightaway. Try coding it yourself for 15–20 minutes more after receiving a hint. If still you don’t get the correct answer then see the solution but don’t submit it. Understand the code and bookmark the problem. After 1–2 days iterate on the same question and try solving it again. Try dividing your day as 65% for DSA & Problem-solving and 35% for development and building stuff.
Code - Internships and Open Source
I was fortunate enough to get a remote Internship in my second year at Centrestage. I worked as a Full Stack developer on real-world industry code and that taught me so much about development. My task was to automate the Emails and Notifications for the social platform. The mentors and team members were amazing, they supported me with even the silliest of doubts. I was extremely confident about my skills after the end of this internship. I even participated in GSSoC’21 wherein I contributed to various open-source projects.
Tip: Try open-source at least once in life. It will support you grow as well as applying your skills. Try doing an internship in your Second Year or holidays. You can easily get internships at startups through LinkedIn or cold emailing to the founders of recent startups. Don’t look for a stipend, just grab the possible opportunity even if it’s unpaid. You’ll undoubtedly learn a lot from these internships.
PS. By internships I mean tech roles and not Campus ambassador or marketing roles :’)
Build - Skill Up 2.0
Another breakthrough represents my participation in the Skill Up 2.0 Program by GDSC VJTI and CoC VJTI. I built 2 amazing projects. The first was a client project for a boutique named Fashion-o-phile. The team consisted of all the seniors (Saif, Palak, Devanshi, Parth, Aliabbas) who constantly helped me with all my doubts and instructed me how to write clean code, how to debug problems, and many more. The second one was a machine learning project named Stockrr which was based on predicting the stock price for the next day. My mentor Riya supported me with all of my doubts and directed me to complete the project before the deadline.
Tip: Interact with your seniors. Try building projects with them if possible. You’ll undoubtedly discover a hell of many things from them. In addition, make sure to find a Guru/Guide as in my case was my beloved Elder Brother, who himself is a Software Engineer.
Precomputation - Preparation for Internships
Now followed the most crucial phase of my Developer life. It was around the 3rd week of May 2021, when my Guru suggested that I should get proficient at DSA, as it was the most important for the interviews. In addition, I needed to learn about some core fundamental subjects of CS like OOPs, DBMS, OS, etc. I typically had 3 months to properly prepare. Initially, it looked like a lot but as time passed I started to devote ample time and became consistent. For Data Structures and Algorithms, I followed Abdul Bari Sir’s Playlist, Aditya Verma Sir’s Channel (All videos are GOLD), Strivers Placement Series. For practicing, I followed the SDE Sheet by Striver, solved key questions on Leetcode and GFG Practice Section. For DBMS, OS, CN, I followed Gate Smashers.
Tip: Preparation is the key! Focus on your preparations.
Execution - The Interview
On 25th September 2021, I gave the OT for PWC India which had visited our academic campus for a Technology Consultant Intern role. I did well in that and thus was shortlisted for the Interviews. The interviews were scheduled for 28th September 2021.
Tip: The interviewer is the most chill person. They’ll instantly make you comfortable and start with casual questions. It depends on your sales skills. The more you can sell about yourself, the higher remain your possible chances of selection. Try giving mock interviews, they are very underrated. They assist you a lot to build up your confidence as well as tackle the situation.
Output - The result
On 29th September 2021, we got the results from the TPO and I was one of the 11 selected candidates. Check out my Interview Experience here!
Hard work never goes in vain. Believe in the process and the results shall follow.
Conclusion
One of the crucial parts of my journey was GDSC VJTI. I was fortunate enough to be on the core team in my second year. I undoubtedly learned a lot from the talented teams as well as the lead, who always guided me. I gained practical knowledge from the workshops conducted by seniors at GDSC VJTI. Like so, to give back to the community, I constantly wanted to be a part of the team and fortunately, I am presently the Web Dev Head at GDSC VJTI. I want to guide juniors and peers in a similar situation as I was back then. I genuinely want to make them aware of the ample opportunities as well as help them improve their necessary skills. Being the Web Dev head, I look forward to reflecting on my capabilities in the web by teaching to juniors and improving on my social and academic skills.
Lastly a brief roadmap for the ones starting late or who want to make a switch to software engineering. I’ve also linked other influential articles and courses which supported me prepare and performing better.
I hope this helps and motivates you to make your transition from Core to Software!
All the Best👍