Sophia's self learning plan on launching a career in software engineering, Objectives and Key Results (OKRs) style.
The OKRs methodology is for anyone who wants to set up an ambitious and measurable plan to achieve their goals, any goals. The resources below are for anyone who wants to explore or start a career in software engineering or software development.
Self learning is still (and is always) in progress! This repo is occasionally updated with new resources and learnings.
Objectives and Key Results (OKRs) is a strategic planning tool used by many tech organizations such as Google to establish cross functional team alignment, which ultimately helps move the needle closer to achieving the organization's mission.
Objectives are ambitious goals. If your objectives make you feel uncomfortable, that's a sign you're setting up your OKRs with a healthy amount of rigor.
To determine objectives, ask yourself, "Where do you want to go?".
Key results are measurable and specific milestones that directly contribute to the objective. Key results are outcomes, not activities.
To determine key results, ask yourself, "How will I pace myself to see if I am getting there?".
While OKRs are typically used by organizations for strategic planning to create alignment between teams, I've adapted OKRs for my own goal setting and tracking for my self learning journey on becoming a software engineer.
For more information on OKRs, here's Google's guide on OKRs, an easy to read and comprehensive overview of how to create and use OKRs.
- What are OKRs?
- Why use OKRs?
- How to use it
- Online Curriculum for a Broad Programming Foundation
- Paid Online Learning Resources
- Free Online Learning Resources
- Overview of Different Fields in Software Engineering
- Blogs and Articles
- GitHub Repos
- Books
- Tools and Other Helpful Resources
- Online Communities
- People Who Make Great Content
- Mailing Lists and Newsletters
- Conferences and Events
- Questions for Coffee Chats
- Projects
- Contributing to Open Source Projects
- Productivity Practices
- Learning Methods
- Interview Prep Resources
- Resumes And Cover Letters
- Job Search
- Career
- About Me
- Focus and accountability over three month increments.
- OKRs are not a task list. When designed right, ambitious OKRs help keep you motivated and track your progress.
Feel free to use my OKRs spreadsheet as a template for your own self study plan.
Steps to determine your Objectives and Key Results:
- Brainstorm possible objectives, using the question, "Where do you want to go?", as a starting point. Ask yourself "What does wild success look like?" to think big.
- Narrow down your objectives to 5-6.
- Brainstorm possible KRs, using the question, "How will I pace myself to see if I am getting there?", as a guide.
- Narrow down and prioritize KRs that will get you closest to achieving your objective. Aim for no more than 5 KRs per objective.
- Reminder: KRs are not a to-do list!
- Get validation and feedback on your OKRs from those who can give constructive and value additive feedback through their own experience or expertise.
- Get started on crushing your OKRs!
- Update your OKRs weekly to track your progress.
- Reflect monthly and adjust OKRs as needed throughout the quarter. OKRs are not set in stone!
- Do a retrospective at the end of the quarter to apply learning to your next set of OKRs.
These are paid online resources I found monumental to my learning journey.
- Coding Interview Bootcamp Algorithms and Data Structures: Udemy course by Stephen Grider. A walk through of commonly asked interview questions (Javascript)
- JavaScript: Understanding the Weird Parts
- The Modern Javascript Bootcamp Course (2020)
- JavaScript Algorithms and Data Structures Masterclass
- Pure React by Dave Ceddia
- Chingu: Online program that places you in a remote team to collaborate with others to build & launch real projects. Here's what I learned from my first team project.
- SQLZoo
- Jwasham's Coding Interview University
- Teach Yourself CS
- Learn JavaScript - Full Course for Beginners - 3 hour FreeCodeCamp Youtube video
- Learn React on Scrimba
- Techtonica Curriculum
- Tania Rascia
- Dave Ceddia
- Tyler McGinnis
- Eloquent JavaScript - Free Online book and Code sandbox for exercises.
- A Web Design Crash Course: From one non-designer to another
- Introduction To Responsive Web Design - HTML & CSS Tutorial
- Web Development in 2019 - A Practical Guide - 41 minute YouTube video
- Front-end Handbook
- BaseCS
- Dissecting Front End Job Titles
- The Front End Checklist
- Developer Roadmap
- Haseeb's How to Break into Tech
- How I Became a Self-Taught Software Engineer at a Major Tech Company
- The 2019 Web Development (Frontend + Backend) RoadMap
- What Is a Front-End Developer?
- 5 Free Tutorials You Should Complete to Master the Back-End
- Advice From a Hiring Manager to a Code Bootcamp Graduate
- 19 Tips For Software Engineers In 2019
- How I Became a Self-Taught Software Engineer at a Major Tech Company
- What I Learned by Transitioning from Backend to Frontend Development
- Software Architecture - The Difference Between Architecture and Design
- A-to-Z-Resources-for-Students
- Roadmap to becoming a web developer in 2020
- The perfect Front-End Checklist for modern websites and meticulous developers
- A list of helpful front-end related questions and my answers
- A complete computer science study plan to become a software engineer.
- Twitter: Some hashtags to follow and use: #100DaysofCode #WomeninTech #CodeNewbies #webdev
- Dev.to: Community for programmers to share ideas and help each other grow
- Reddit communities: Learn Computer Science, Webdev, GirlsGoneWired
- Elpha
- Coding Coach
- Code Buddies
Who | Medium | Content Type |
---|---|---|
Tania Rascia | Blog | One of the best blogs with written tutorials |
Dave Ceddia | Blog | One of the best blogs with written React articles |
Dan Abramov | Blog | Blog on React, JsavaScript, tech |
Veni | Career Advice and Job Opps | |
Denise Yu | Art & tech | |
Maggie Appleton | Visually explanations of programming topics | |
Chloe Condon | Twitter, BCC: All Podcast | Tech, getting into tech & tech, but make it fun |
Angie Jones | Twitter, Blog | Tech, blogging, tutorials |
Lydia Hallie | DEV | JavaScript concepts visualized |
Traversy Media | Youtube | Short and clear tutorials |
Mayuko | YouTube | Life in tech |
Code Drip | Youtube | Getting into tech & tutorials |
WesBos | YouTube | Tutorials |
Gaurav Sen | Youtube | System Design |
Colt Steele | Youtube | Clear JavaScript tutorials and explanations |
Coding Train | Youtube | Enthusiastic JavaScript tutorials and explanations |
These are some mailing lists and newsletters that are worth the email space. General career things:
Learning Javascript:
Learning React:
- Write/Speak/Code - 3 day conference designed by marginalized gender technologists for marginalized gender technologists.
- CodeLand
- PerfMatters
- FreeCodeCamp Bay Area Meetup - If possible, find a FreeCodeCamp meetup near you.
- Meetup.com
- Find events through queries like "Women in Tech Events in SF", "Tech Event in [insert your city]", etc.
Coffee chats are a great casual way to build your community, learn, and hear first-hand experiences. If you're stuck on what to ask, here are some questions to help get the conversation started:
- What does a day-to-day look like in your role?
- Can I get your feedback on X?
- What are some challenges you face in your work?
- What is something new you are learning right now?
- What are your goals for your career / next career move?
- Do you have advice for a self-taught dev?
- What do you enjoy doing outside of work?
- Can I reach out to you in the near future for feedback on X?
- Question about something specific to them (based off of your research about them / their company)
- Is there anything I can support you in?
Here's a blog of tips I got from coffee chats.
- A Philosophy of Software Design by John Ousterhout
- You Don't Know JS Yet (book series) - 2nd Edition by Kyle Simpson
Just start building something, anything! If you're struggling with projects, start small. This will allow you to build your skills and project size incrementally.
Document your project with a well written readme. Here's a guide by PurpleBooth. This will help recruiters, hiring managers, or anyone looking at your repo quickly understand what your project is and why / how you built it.
Some ideas for projects:
- Build a product landing page (7 Best Practices)
- Create a Chrome Extension
- Practice for New JS learner (Reddit thread)
- Javascript Project Ideas
- Rock, Paper, Scissors - Tutorial on Youtube
- Florinpop17's App Ideas
- A list of awesome beginners-friendly projects
- How On Earth Do You Use NASA APIs with Azure Functions? 🚀🌍
Work on projects with other developers:
Push out of your comfort zone, get validation and/or feedback by contributing to an open source project.
- Beginner Friendly Open Source Projects - A list of beginner friendly projects.
- HacktberFest - Sign up for HacktoberFest and get a free t-shirt after you submit 4 pull requests (PR) through GitHub in October.
- First Timers Only - Friendly Open Source projects with specific issues reserved for newbies.
- Supporting Non-profits with FreeCodeCamp
- Contribute to Techtonica's Curriculum - Techtonica is an apprenticeships with an open source curriculum you can contribute to.
- Open A11y OSS Issues Looking for Help
- Utilize spaced learning and repetition. Take frequent breaks.
- Don't binge on tutorials. Get out of tutorial hell. Make sure you get hands on practice in.
- 5 Ways to Stay Productive as a Self-taught Developer
- 5 Ways to Get Over Plateaus as a Self-taught Developer
In your learning journey, you'll likely come across written, video, audio or other types of resources. Try out different mediums and find out which enable you to learn most effectively.
Websites / Books for Coding Practice:
Practice Interviews:
General Guidance:
- TechStack - Find out what languages your companies of interest use.
- How to Craft Your Story
- The Software Engineer’s Guide to Interviewing Software Engineers
- Medium's Engineering Interview Grading Rubric
- How to answer “why are you interested in this job?”
- A curated collection of common interview questions to help you prepare for your next interview
- Tech Interview Handbook
- Materials to help you rock your next coding interview
- The Ultimate Guide to Kicking Ass on Take-home Coding Challenges
- Preparing for Top-Tier Engineering Interviews
- Fullstackinterviewing.com
Data Structures and Algorithms Resources:
- 4-Step Strategy to Frame Your Thought Process in a Whiteboard Coding Interview
- Curated List of Top 75 LeetCode Questions to Save Your Time
- Algorithms in JavaScript: 40 Problems, Solutions, and Explanations
Front-end Resources:
- Front-end Developer Interview Questions
- How to Succeed in a Frontend Interview
- The Frontend Interview Preparation Guide
- Cracking the Frontend Interview
- The single source for preparing for a Frontend interview
- A list of helpful front-end related questions you can use to interview potential candidates, test yourself or completely ignore.
- Javascript Questions
Questions to ask at the end of your interview:
- Creating and Hosting a Personal Site on GitHub
- I’ve read thousands of resumes. Most of them suck. Yours doesn’t have to.
- A Software Engineer’s One-Page Portfolio
- Do you have an awesome cover letter?
Apprenticeships:
Job Boards:
GitHub Repos:
Talk to real people, find recruiter emails:
Inspiration for this repo is from Jwasham's Coding Interview University.
Thank you to my friends and dev community who have continuously supported, encouraged, and inspired me throughout my journey!
Michelle, Alex, Diana, Scarlett, Andy, Mimi, Cat, Eric, Rachel, Donald, William, Melissa, Jessica, Mark, Andrik, Valerie, Audrei, Dani, Kate, Rafael, Ola, Ming, Chance, Jim, Tilde, Estelle, Yanet, Lori, Angela, Pearl, Judy, Jamil, Jeffrey, Chloe, Novella, Jeff, Alissa, Sandy, Tieshia, Sarah, Ben, Rahat, Matthew, Denise, Akshar, Abir, Peter, Ryan, Jacob, Dave, Robert, Radhika, Chi, Sharat, Becca, Stephen, Travis