If you are reading this, then you are either someone who has recently graduated from college or someone who is looking to build a career as a Software Engineer. Not too long ago, I was in the same shoes as you. My goal here is to help you understand how to start your software journey as I did, based on the experience I have gathered so far. I'll guide you through the essential skills you will need to get started with software engineering, the tools and resources you can use, and some tips for success.
The initial doubt
A large number of people, especially students, are of the opinion that a degree in computer science is a mandatory requirement if you want to pursue the career of a software engineer. I, myself, am from the electrical and electronics engineering branch and have personally witnessed many examples where students from a mechanical engineering or chemical engineering background have also digressed into software engineering. Many software engineers come from diverse backgrounds, including engineering, mathematics, physics, and even music. What's most important is having a passion for technology and a willingness to learn. With the right skills, tools, and resources, anyone can become a software engineer, regardless of their background.
Basic essential skills for software engineering
In today's day to start with software engineering you need to have a good grasp of three essential skills:
Programming languages - There are a plethora of programming languages out there in today's date. C, C++, C#, Java, Python, Golang, Rust, JavaScript and a few others are the most common ones. Among these Python would probably be the most popular programming language to learn for beginners as it has a relatively simple syntax and is easy to learn. However, I would recommend you start with C++, C#, JavaScript or Java as these provide a better understanding of how a programming language works.
Data structures and algorithms: Data structures are the foundation of computer science, and algorithms are the building blocks that allow developers to solve complex problems efficiently. Many companies and hiring managers are looking for developers who have a solid understanding of data structures and algorithms, as these skills are crucial for building efficient and scalable applications.
Object-oriented design principles: Object-oriented design principles are a set of guidelines that help developers design and write code that is easy to maintain, understand, and scale. These principles revolve around the concept of objects, which are entities that represent real-world concepts and have properties and behaviours.
Step-by-step actionable process and resources to learn from
Choosing the right programming language: It's important to go for the programming language that interests you and has a large and reliable community to support you in your learning endeavours. The two of the following links will provide you with some pointers that will let you pick the programming language that's right for you.
Start with the basics of the programming language: It's important to have a strong hold on the fundamentals viz:- the syntax (the rules that govern the programming language), the data types (they define the type of data a programming language can work with), the variables (they can be assigned values that can be referenced later), the conditional and looping statements (they are used to define the flow of the program), the functions (they are reusable blocks of code that can be referenced later), the libraries and frameworks (they contain pre-written codes in the form of classes to make the process of programming simpler and faster).
Resource:- Use the following links to learn about the following programming Languages:
Have a good understanding of the data structures and algorithms viz: arrays, linked lists, sorting, searching etc.
Resource:- This playlist is pretty popular and is very informative.
https://www.youtube.com/watch?v=rZ41y93P2Qo&list=PL9gnSGHSqcnr_DxHsP7AW9ftq0AtAyYqJ (this would be one of the best resources for java programmers)
https://www.youtube.com/watch?v=pkYVOmU3MgA (this would be a good resource for python programmers. I haven't gone through this completely but this is from a very reliable source in the developer community.)
Have a good knowledge of object-oriented design principles.
Resource:-
Tools
To get started you will need to know about the tools or software that you will require as a software engineer.
Firstly, you will require an IDE(Integrated Development Environment) which is a software application that provides a comprehensive suite of tools and features for developing, testing, and debugging code. A beginner has many options from which he can choose:
Visual Studio Code and Visual Studio: Visual Studio Code is a free, open-source IDE that is highly customizable and supports a wide range of programming languages. It offers a valuable set of features, including intelligent code completion, debugging, version control, and more. It is used for developing various types of applications, including web, mobile, and cloud-based applications.
Visual Studio is a heavier IDE compared to Visual Studio Code. It is used for developing windows-based desktop applications and web applications.
IntelliJ IDEA: IntelliJ IDEA is an IDE that offers a comprehensive set of features for Java development. It includes support for other programming languages as well, such as Kotlin, Python, and more.
PyCharm: PyCharm is an IDE specifically designed for Python development. It offers a range of features, including intelligent code completion, debugging, and support for scientific libraries.
Eclipse: Eclipse is a popular IDE for Java development. It is highly customizable and offers a wide range of features, including code completion, debugging, and version control.
NetBeans: NetBeans is a free, open-source IDE that offers support for Java, C++, and several other programming languages. It includes features like code completion, debugging, and version control.
Then comes the Version control systems which help you track changes to your code and collaborate with others. Git and SVN are popular version control systems.
Tips to Succeed
I would like to list a few points that I feel are important for a beginner to know and practice. These are based on what I have learned from my experience so far:
Be regular: With people, the most basic problem is that they start strong but as they go ahead in the process of learning they lose patience and determination and eventually stop. This is why most people fail. So, to overcome this try to keep a specific time of day aside to learn. The period for which you study in a day may differ according to your daily requirements but never skip a day.
The Tutorial Loop or the Tutorial Hell: So in the developer community this is a common phenomenon that beginners usually face. This term talks about a state of being stuck in an endless cycle of watching or reading programming tutorials without actually applying the knowledge learned to real-world projects. Always try to learn by doing and focus on implementing what you have learnt before you jump to the next resource. To learn more about how to avoid the tutorial hell you can go through this blog by Jessica Wilkins on freecodecamp.
Contribute to Open Source: Contributing to open source projects is a great way to improve your coding skills, gain experience working on real-world projects, and build a portfolio of work that can help you land future job opportunities. It also allows you to give back to the community, collaborate with other developers around the world, and make a positive impact on the software industry as a whole. Check out this video by Kunal Kushwaha where he explains what open source is and how you can start.
Resource:-
The process of learning never ends for a Software Engineer: Stay up-to-date with new technologies and trends in software engineering: Software engineering is constantly evolving, so it's essential to stay up-to-date with new technologies and trends.
Software engineering is a fascinating and rewarding field that requires dedication and hard work. With the right skills, tools, and resources, you can build software systems that make a real difference in the world. I hope this guide will help you get started with software engineering. Good luck, and happy coding!