Roadmap to become a professional Software Engineer
First of all, I am starting it off by saying what is computer programming?
It is the ability to take any idea that you have and to digitize it and bring it into the world whether it is you want to make practical applications, get clients, get a job, work as an independent contractor or you want to make cool games. Either case programming is for you.
Why should you learn to code?
There are a million reasons to answer this question, but I will talk about the best ones,
1. The flexibility of work (you can work from anywhere you want(freelance))(resources: [Freelancer], [UpWork]) so, working remotely is a great benefit that you can have so you don’t have to be at a nine to five job.
2. Job security: software development is the number one growth industry in the world so there is no job scarcity happening here.
What is it?
This is my own perspective plan to be a professional software engineer for a large company, this article is for beginners and intermediate students who have knowledge in computer science and students who don’t have.
Why use it?
When I enrolled in the faculty of computer science I didn’t know the difference between Hardware and Software, didn’t know what is a programming language, anything about web development, so I decided to make a change then I become a person who is very passionate about the field of technology.
First you must don’t feel you aren’t smart enough
1. Focus on basic coding instructions, Online Resources:
- Introduction to computer science(CS50), Harvard
- Introduction to computer science, Udacity
- Introduction to computer science using Python, Edx
The more you code the better you’ll get, the muscles can’t grow without practicing, also publish your projects on any academic forum, and you should develop your portfolio.
Books: 1- Java, How To Program, 9th Edition 2- C++, From Control Structures Through Objects, 8th Edition
3. Object oriented programming:
- Software Development Using UML and Java
- Bob Martin SOLID Principles of Object Oriented and Agile Design Bob Martin SOLID Principles of Object Oriented and Agile Design
- SOLID Principles SOLID Principles
5. Develop a strong knowledge of algorithms, algorithmic complexity, Big-O, and asymptotic analysis, Online Resources:
- Introduction To Algorithms, MIT
- Asymptotic notation
- Intro to algorithm complexity analysis Intro to algorithm complexity analysis [Brute force algorithm]
- greedy algorithm
- divide and conquer algorithm
- dynamic programming algorithms
- genetic algorithms
Recommendation Book: Introduction to Algorithms, 3rd Edition
6. Develop a strong knowledge of operating systems,
- Learn about caches
- Process and Threads
Recommendation Book: Operating System Concepts, 8th Edition
8. Develop your computer architecture knowledge,
- Numeric Representation
- Binary Arithmetic and Bit Operations
- Floating-Point Representation
- Character Representation
- Memory Organization and Access
- Composite Data Types and Memory Objects
- CPU Architecture
- Instruction Set Architecture
- Memory Architecture and Organization
Recommendation Book: Computer systems A programmer’s Perspective
9. Learn Networking, Online Resource: Network Fundamentals, MVA
10. How the internet works, Khan Academy
I will write a specific blog about system design, scalability, and data handling but you can read about it in HiredinTech, also I will write about data structure and algorithms that will include more resources and more definitions.