GitHub – MohamedAdelZidane/Roadmap-to-become-a-professional-Software-Engineer

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>

Technical Tips

  1. Focus on basic coding instructions, Online Resources:

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.

  1. Master one programming language (C++, Java, Python, JavaScript, Ruby, etc.), to do this you must write a lot of code and read a lot more. You need to be very comfortable in the language and be knowledgeable.
  • Read more about choices
  • Online Resources: 30 Days of Code (Java), HackerRank
  • Books: 1- Java, How To Program, 9th Edition 2- C++, From Control Structures Through Objects, 8th Edition
  1. Object oriented programming:
  1. You should learn data structure:
  1. Develop a strong knowledge of algorithms, algorithmic complexity, Big-O, and asymptotic analysis, Online Resources:
  • Introduction To Algorithms, MIT
  • Asymptotic notationAsymptotic notation
  • Intro to algorithm complexity analysisIntro 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

  1. Develop a strong knowledge of operating systems,
  • Learn about caches
  • Process and Threads

Recommendation Book: Operating System Concepts, 8th Edition

  1. Test your code, Learn how to catch bugs, create tests, and break your software, Online Resources:
  1. 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

  1. Learn Networking, Online Resource: Network Fundamentals, MVA
  1. How the internet works, Khan Academy
  1. Then you should develop logical reasoning and knowledge of discrete math and statistics, Online Resources:

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.

Xổ số miền Bắc