Roadmap to Becoming a Developer and getting known.
Tags: beginners
Published: 2021-09-28 03:31:45

There can be a lot of doubts for a person who wants to get into development on how to start. This blog is made to clear some of those doubts. 
So first and foremost, what is development?
It's the art of creating something. It can be anything that you create. It could be a website, a game, an app or a service.
There are a few basic steps that every developer has to follow in order to start their journey. Here are the steps:

###1. Pick a language:
![Languages](https://miro.medium.com/max/1838/1*HLGtY6O2vUHqIyEbWdmBgA.jpeg)


This may seem obvious, but selecting your first language is the very first step to your developer journey. You can select whichever language you want weather it be Python, C++, Java, JavaScript, Go, etc. My reccomendation would be to pick Java as your first language. You can switch to other languages too after you have learned the basics. I say Java because it is the most used language in large industries. Learning Java is also easier compared to learning C++ as C++ has the concept of pointers and memory management whereas Java has dynamic memory management i.e you do not have to manually allocate the memory. It is done automatically. If you are still contemplating which language to choose, remember this one quote, "First analiyze the problem, then select the appropriate technology to solve that problem". If you ask me to elaborate on this then in simple words, you cannot drill a hole in the wall with a screwdriver, you will need a drilling machine.

###2. Learn Data Structures and Algorithms:
![Data Structres and Algorithms](https://res.cloudinary.com/practicaldev/image/fetch/s--AO0dFdQ5--/c_imagga_scale,f_auto,fl_progressive,h_900,q_auto,w_1600/https://thepracticaldev.s3.amazonaws.com/i/srnvrd7vfeeq5qpxnabq.png)

Data Structures and Algorithms (DSA) are the basics in learning any type of development. They are useful in developing various applications. DSA is also asked in interviews for Software roles, hecne it is really important to get a really good grasp on the basic concepts. After you learn the basics of any language you should move on to learning the data structures and algorithms. You can select any language for this as DSA is langauge exclusive i.e It is the same in all languages. If you want a DSA course, there is a free course on youtube by [Kunal Kushwaha](https://www.youtube.com/playlist?list=PL9gnSGHSqcnr_DxHsP7AW9ftq0AtAyYqJ).

###3. Learn Development.

Saying "Learn Development" can be a bit ambigious so I am going to break it down into a easier to understand format. The first thing you need to know is that there are many fields of development. I will list some of them below with a brief description ->

- **Web Development** :![Web Dev](https://image.shutterstock.com/image-vector/web-development-chart-keywords-icons-260nw-394793860.jpg) Web Development is just making a website. Now you may know that there are tools such as WordPress or Wix which can be used for creating a website. However, if you hardcode your website, you get a lot more development flexibility. The most basic technology used in web development is HTML, CSS and JavaScript. A great place to learn web development is [Free Code Camp](https://www.freecodecamp.org/learn/) There are more aspects to web development as well, they are ->
   - **Front End** : This refers to everything the user sees. The page layout, UI is what is considered the front end of a website. 
   - **Back End**: This refers to everything that happens behind the scenes of the website. Sending requests to the server, receiving packets, sending data, the process of Loggin in, etc is all included in back end.
 
   - **DataBase** : Database is where all of the user data is stored. User data can be the bio you write, or your loggin credentials (They are obivously encrypted when stored).
  
   - **FullStack** : Fullstack is basically a developer who knows about all the above 3 mentioned aspects. A fullstack developer handles the frontend, backend and the database too.

- **App Development** :![App Dev](https://www.mobileaction.co/blog/wp-content/uploads/2019/11/type-mobile-apps-1024x690.jpg?x38980) App Development, also known as mobile development is developing apps for phones. Android and IOS development both are included in this. However it is important to know that the technologies used for Android and IOS are diffrent. IOS primarly uses Swift where as Android can use Kotlin or Flutter.

- **Cloud Development** :![Cloud](https://www.emphatictechnologies.com/images/Cloud%20Computing.png) Cloud is basically a computer somewhere in the internet. You can connect to this computer and store your files or use the processing power of this computer to run your applications. Cloud Development refers to using tools such as Azure or AWS or Google Cloud to manupilate this space.

- **Machine Learning/Artifical Intelligence** :![Ai/ML](https://www.qubole.com/wp-content/uploads/2018/08/1-400x387.png) Artifical Intelligence is just as it sounds. Teaching the computer how to think. Machine Learning is giving the computer many taste cases and train it on a certain pattern. There are varrying levels of AI you can see everywhere. Alexa, Siri and Cortana are good examples of Artifical Intelligence.

- **DevOps** :![DevOps Cycle](https://intland.com/wp-content/uploads/2019/07/devops-infinity-1-1.png) DevOps is not exactly a type of development. Rather it is a way of working. It combines two departments i.e Development (The team that develops the software) and Operations (The Team that monitors the deployment and stabilty of the software). DevOps is a method incorperated in order to avoid app crashes. There is continous testing in every phase. For more information on DevOps, there is a [DevOps Bootcamp](https://www.youtube.com/playlist?list=PLhc-GEHI0F7_8mbj23YWFpsgu1fl1yGL_) by Civo.

- **Game Development** :![Game Dev](https://image.shutterstock.com/image-photo/creative-male-game-developer-works-260nw-718743151.jpg) Game development is just as it sounds. Creating video games. However it is more than that. It is also used to create simulations or real life models. Game Development has a lot of aspects in it such as design, graphics, art, sound, animations, etc. Other types of development such as AI also plays a part in Game Development.

### 4. Start Applying : 

Once you have learn a development skill, it is time to start applying your new knowledge in some projects. It is also important to know that you do not have to know the development field 100% in order to create something. Even if you know only 30% to 40% of the tech stack, you can still apply your skill. Some ways of applying your knowledge are as follows:

- **Open Source** :![Open Source](https://www.intuit.com/blog/wp-content/uploads/2018/12/open-source-software.png) Open Source is a great way to apply your skills, level up your skills, interact with a community, and network with people. Open Source will also open a lot of doors for you if you are doing good work in the community. In order to contribute to open source you require to know [Git and Github](https://www.youtube.com/watch?v=apGV9Kg7ics&t=1602s). Git and Github is already needed in large scale development. Open Source also can give you a lot of experience of how the development cycle is in larger companies.

- **Making Personal Projects** :![Portfolio](https://s3.amazonaws.com/www-inside-design/uploads/2019/05/portfoliofeature.png) You can even create your own personal projects. An example with web development is that you create your own Portfolio website. You can also create templates for various websites.


### 5. Networking :![Network](https://insights.dice.com/wp-content/uploads/2019/09/shutterstock_738913864.jpg) 
 Getting known in the Community is a great step not only for getting opportunites but even to get mentors and meet great people. I advice you to make a twitter account and share about all your learnings and all the good work you do. You can also join various communities which will also help you in finding great people.


That is the end of this blog. I hope you found this helpful and good luck on your developer journey.