Skip to content
Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

OKRs for Self Learning

Click here to see a template for OKRs.

This GitHub repository contains a lot of reources from 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.

What are OKRs?

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.

Table of Contents

Why use OKRs?

  • 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.

How to use it

Feel free to use my OKRs template spreadsheet as a starting point for your own self study plan.

Steps to determine your Objectives and Key Results:

  1. 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.
  2. Narrow down your objectives to 5-6.
  3. Brainstorm possible KRs, using the question, "How will I pace myself to see if I am getting there?", as a guide.
  4. 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!
  5. Get validation and feedback on your OKRs from those who can give constructive and value additive feedback through their own experience or expertise.
  6. Get started on crushing your OKRs!
  7. Update your OKRs weekly to track your progress.
  8. Reflect monthly and adjust OKRs as needed throughout the quarter. OKRs are not set in stone!
  9. Do a retrospective at the end of the quarter to apply learning to your next set of OKRs.

Online Curriculum

Paid Online Learning Resources

These are paid online resources I found monumental to my learning journey.

Free Online Learning Resources

Resources on learning HTML, CSS, JavaScript, React, and other coding concepts.







Computer Science:



Overview of Different Fields in Software Engineering

Blogs and Articles

GitHub Repos


Tools and Other Helpful Resources

Tech Websites

Online Communities

People Who Make Great Content

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, JavaScript, tech
Veni Twitter Career Advice and Job Opps
Denise Yu Twitter Art & tech
Maggie Appleton Twitter 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
WesBos YouTube Tutorials
Gaurav Sen Youtube System Design
Colt Steele Youtube Clear JavaScript tutorials and explanations
Coding Train Youtube Enthusiastic JavaScript tutorials and explanations

Mailing Lists and Newsletters

These are some mailing lists and newsletters that are worth the email space.

General career things:

Learning React:

Conferences and Events

San Francisco Specific Meetups

Questions for Coffee Chats

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?


These are the top 10 tips for self-taught software engineers from 20+ coffee chats:

  1. Build projects, any projects. Get out of tutorial hell, especially in the early stages of your learning. Once you've built a couple of mini projects, apply your knowledge to solve a problem that's interesting to you.

  2. Document your projects well. Recruiters and hiring managers will look at your projects. Write good documentation to help them quickly understand what you’ve built, why you built it, and how you built it. Here’s a guide on writing a thorough readme.

  3. Pair program. Practice collaborating with other developers, explaining your thought process out loud, and speaking technically. This will help prepare you for interviews and real world work.

  4. Build a community. Go to local meetups and conferences to meet people in the industry who you can learn from and also learn with.

  5. Teach others. You learn better by teaching others. Teaching a concept, even if you're not an expert, is a great way to identify gaps in your own knowledge, test your understanding, and deepen your understanding of the topic.

  6. Stand out. There is a sea of junior developers. Show your personality and how your unique perspective will bring value to the team.

  7. Determine the right type of role for you. Do you need structure? Can you create structure out of chaos? Is mentorship a strong requirement for you? Can you dive right into the weeds without structured support? These are some questions to reflect on to help determine if you should look for an internship, apprenticeship, or a full-time job.

  8. Understand your "why". Why do you want to be a software engineer? Your answer to this question will be your North Star. Your North Star is what’s going to guide you and keep you motivated even when you face rough patches.

  9. Hustle! Being a self-taught developer can be hard. Imposter syndrome is real, but know that you can and you will move forward. You're going to go the extra mile to network, keep learning, and crush all the interviews.

  10. Take care of your mental health. Mental health is important. Schedule time each week to do at least one activity that brings you joy. Don't burn out.

Reading List


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:

Work on projects with other developers:

Contributing to Open Source Projects

Push out of your comfort zone, get validation and/or feedback by contributing to an open source project.

Productivity Practices

Learning Methods

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.

Interview Prep Resources

Websites / Books for Coding Practice:

Practice Interviews:

General Guidance:

System design:

Data Structures and Algorithms Resources:

Front-end Resources:

Questions to ask at the end of your interview:

Resumes And Cover Letters

Job Search


Job Boards:

GitHub Repos:

Talk to real people, find recruiter emails:


About Me


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, Kimberlee, Novella, Jeff, Alissa, Sandy, Tieshia, Sarah, Ben, Rahat, Matthew, Denise, Akshar, Abir, Peter, Ryan, Jacob, Dave, Robert, Radhika, Chi, Sharat, Michael, Robert, Becca, Stephen, Travis, Jamie, Veni, Amruta, Brandon, Adam, Zoya, Michal, Joe, Martin, Rez, Mark, Andrew, Elly, Brantone, Nick, Zainab, Jeremy, Greg, Alaina


Sophia's OKRs for learning how to code.






No releases published


No packages published