# My Software Development Journey
> This document is designed to guide you through the initial steps of your software development journey. It will help you identify your desired career path, understand the core skills required for all developers, and focus on the specific skills needed for your chosen direction. By going through this document, you'll gain clarity on some of the practical aspects of software development that are crucial for real-world success in the field.
---
#### Slides: [Click here](https://www.canva.com/design/DAGAvOaQKH0/pbbldihlPmrBUBccDTepYg/edit?utm_content=DAGAvOaQKH0&utm_campaign=designshare&utm_medium=link2&utm_source=sharebutton)
---
### Step 0: Laying the foundation
In your own time, watch the provided videos to gain a foundational understanding of computer science and programming concepts.
- [🔗Introduction to programming](https://www.youtube.com/watch?v=zOjov-2OZ0E)
- [🔗Harvard CS50: Introduction to computer science](https://www.youtube.com/watch?v=LfaMVlDaQ24)
---
### Step 1: Identify your development focus
Explore and decide on the specific area of software development you want to focus on:
- Front-end Developer
- Back-end Developer
- Full-stack Developer
- [🔗Specialization](https://hackmd.io/@Bayological/ryTKNEWJC) (e.g., Mobile, Data, AI, Blockchain)
In your own time, use YouTube to find videos of people working in your chosen focus area.
Search for videos using the phrase "A day in the life of a [front-end/back-end/full-stack/specialty] developer" or "A day in the life of a [front-end/back-end/full-stack/specialty] engineer," replacing the brackets with your specific focus area. These videos will give you insights into what professionals in your desired area do on a typical day.
---
### Step 2: Core tools for all developers
Familiarize yourself with some of the essential skills and tools that every developer should know, regardless of their specialization.
* Integrated Development Environment/IDE (e.g., Visual Studio Code, IntelliJ, xCode)
* Version control systems (e.g., Git)
* Collaboration tools (e.g., Jira, GitHub projects)
---
### Step 3: Specific skills for your focus area
1. Find 9 junior/entry-level job vacancies online related to your focus area. You can do this by searching on google.
2. Create a table with the skills/tools mentioned in the job postings and their frequency:
| Skill/Tool | Frequency |
|------------|-----------|
| Example Skill A | 5 |
| Example Skill B | 3 |
| Example Skill C | 1 |
3. For each skill/tool, find both free and paid courses on platforms like Udemy, Coursera, freeCodeCamp, and YouTube. Add them to the table:
| Skill/Tool | Frequency | Free Course | Paid Course |
|------------|-----------|-------------|-------------|
| Example Skill A | 5 | youtube.com/skilla | udemy.com/django |
---
### Step 4: Regular coding practice
Establish a consistent coding practice routine by signing up for Codewars, setting your level to beginner, and dedicating at least an hour a day to solving challenges using the languages you identified in Step 3.
- [Codewars](https://www.codewars.com/dashboard)
---
### Step 5: Personal Project
Brainstorm, plan, and start building a practical project based on your chosen development focus to apply your new skills and knowledge.
1. Brainstorm a project idea that aligns with your chosen focus area and utilizes the skills you've identified.
2. Outline the project requirements(what it needs to do) and create a plan to build it.
3. Start building your project, applying the knowledge and skills you've acquired.
4. Push the code for your project to your [GitHub](https://github.com/) account. Create one if you do not already have one
If you can't come up with an idea you can pick from [this list](https://hackmd.io/@Bayological/ryCD0EZJA)
---
### Step 6: Contribute To Open Source
1. Create a GitHub profile:
- Sign up for a GitHub account at https://github.com/join
- Set up your profile with a profile picture, bio, and any relevant links
2. Fork a repository:
- Visit the repository: [Click me](https://github.com/bayological/website-template)
- Click on the "Fork" button in the top-right corner of the page
- Select your GitHub account to create a copy of the repository under your profile
3. Add your username and profile to the forked repository directly on GitHub:
- Navigate to your forked repository on GitHub
- Browse to the file you want to modify (content/_index.md)
- Click on the pencil icon in the top-right corner of the file view to enter the edit mode
- Make your changes to the file directly in the GitHub editor.
- When you're done editing, click the "Commit changes" button
- Enter a descriptive commit message in the first field (e.g., "Add my name to contributors list")
- Select the option to create a new branch for this commit and start a pull request
- Click on the "Propose changes" button to save your changes and create a new branch in your forked repository
4. Open a pull request:
- Go to your forked repository on GitHub
- Click on the "Pull requests" tab and then click on "New pull request"
- Verify that the base repository and branch are correct (the original repository, not your fork)
- Add a title and description for your pull request, explaining the changes you made
- Click on "Create pull request" to submit your changes for review
In your own time:
1. Read the Open Source Guide on how to contribute:
- Visit https://opensource.guide/how-to-contribute/ and read through the guide
- Familiarize yourself with the different ways you can contribute to open source projects, such as reporting issues, suggesting improvements, or adding new features
2. Find beginner-friendly open source projects:
- Browse through the resources listed on https://www.firsttimersonly.com/
- Look for projects/issues that match your interests and skill level
- Read the project's contribution guidelines and code of conduct
- Identify issues or tasks that you can work on, such as those labeled "good first issue," "beginner-friendly," or "help wanted"
3. Continue contributing to open source projects:
- Set a personal goal for open source contributions (e.g., one contribution per week)
- Communicate with project maintainers and other contributors to get feedback and guidance
- Document your contributions and learning journey in a blog post or online portfolio
- Join online communities and forums focused on open source to connect with other contributors and learn from their experiences
Remember, contributing to open source is an ongoing learning process. Start small, be patient with yourself, and enjoy the opportunity to collaborate with developers from around the world. Every contribution, no matter how small, is valuable and helps you grow as a developer.
---
### Step 7: Continue Learning and Growing
Congratulations on getting this far! You should now have a clearer understanding of your chosen development focus and the skills you need to acquire.
To continue your learning and growth:
1. Dive deeper into the technologies and languages you've identified
2. Address any knowledge gaps or areas you struggled with
3. Keep practicing regularly and challenge yourself with more complex projects
4. Engage with the developer community through forums, meetups like these, and discussions
5. Stay updated with the latest advancements and trends in your development focus
Remember, learning and growing as a software developer is an ongoing journey. Embrace a growth mindset, celebrate your progress, and don't be afraid to take on new challenges.
Keep this document as a reference and roadmap for your continued learning. 😄