Skip to content

onemonth/apprenticeship

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 

Repository files navigation

Apprenticeship

The Plan:

A high-intensity apprenticeship to introduce a new developer to the world of building software at a startup. We will spend the entire time working together closely on code used by thousands of people.

The goal is for you to learn enough to be a great developer by the end of the apprenticeship.

Pair Programming:

Pair-programming will be at the core of our apprenticeship because it’s a phenomenal way to learn. Some approaches to pairing we will probably use throughout the internship:

  1. One person writes a test, the other makes it pass
  2. Spike out a feature you don’t fully know how you’ll implement without tests, scrap the code, and start from scratch once you have a better plan
  3. Have a feature as your own responsibility, pairing with your mentor when you have questions, to review and test the feature, and refactor your code together

Timeline & Compensation:

3 months $500 per week

Key Focus:

We strongly believe that great software engineers are good at the following skills:

  1. Designing code for change and maintainability
  2. Working with existing codebases
  3. Managing time and energy between solving coding problems and business problems

As a result of focusing on these skills, we will touch on:

  1. Working with and supporting a team of other people who need help from engineering to accomplish their goals.
  2. How and when to apply different software design patterns. We will do a lot of refactoring together and these will make a lot more sense through the process.
  3. Working with Javascript, jQuery, frontend frameworks like React and CSS/SCSS
  4. Building features that not only work, but feel great to use
  5. How and when to write tests
  6. How to approach designing new features in a large and rapidly changing application
  7. Analyzing and fixing bugs in production
  8. Server / database management
  9. Performance
  10. Security
  11. Open source (using open source libraries and hopefully contributing)

Tools We Will Use:

Github - Managing our code, reviewing pull requests Slack - Chatting with the team about ideas, questions, details Asana - Organizing and managing our progress Airbrake - Finding and fixing errors in production New Relic - Monitoring and improving performance Dotfiles - A bunch of useful configuration files for Vim, iTerm, etc https://github.com/excid3/dotfiles

Fun Stuff:

Every Monday we buy the entire team lunch and eat together. It’s always fun and the food is great.

We also spend a lot of time recording fun videos, sharing our experiences, and contributing to open source.

If you’re open to it, we think it would be fun to blog and record videos together about what we’ve learned each week during the apprenticeship.

Feedback:

This apprenticeship is for you. We want you to become a great developer.

You’ll make progress very quickly and will certainly have tons of questions. We’ll meet each week so we can talk about things you’ve enjoyed doing, topics you’d like to focus on more, and what you’re having trouble with.

There are so many different types of software engineering jobs and we would love to help you discover the type of role that fits you best.

We’re also always learning ourselves so any feedback you have about our apprenticeship, our tools, or process are also welcome.

Things to incorporate in the feedback loop from mentor to apprentice:

  • What area do you feel the apprentice is most comfortable with?
  • What area does the apprentice have the most room for growth in?
  • What is your general assessment of where the apprentice is thus far?
  • Do you feel the apprentice is behind, on-track, or ahead of the goals set for the week?
  • Do you feel the apprentice is behind, on-track, or ahead of the goals set for the apprenticeship?
  • What is a ‘twitter sized’ piece of advice you would give your apprentice?

Things to incorporate in the feedback loop from apprentice to mentor:

  • What was your biggest struggle this week?
  • What do you feel most comfortable with?
  • Do you feel you are behind, on-track, or ahead of the goals set for the week?
  • Do you feel you are behind, on-track, or ahead of the goals set for the apprenticeship?
  • If you feel behind or ahead, please try to expand and answer, why?
  • What is a ‘twitter sized’ piece of advice you would give your mentor?

Questions for you:

What are your goals for the apprenticeship? and for the long-term?

Apprenticeship goals:

Have meaningful impact on a client facing project/feature Participate in full development cycle Feel more confident / comfortable code design Contribute to an open-source project / give back Be able to identify and implement refactoring opportunities Be confident in my OO design choices Explore at least one new language and become marginally comfortable Explore multiple new tools

Long term goals:

Find rewarding and satisfying work as a developer Learn another language and become proficient Build something which exemplifies my abilities as a developer Bring educational opportunity to those who seek it

If you could be strong at one skill by the end of the apprenticeship, what would it be?

Refactoring - I feel this would give me the best insight and perspective to design, readability, and art.

The Breakable Toy:

A feature, internal tool, or personal project of which a half day or day is devoted each week. This could serve as a code base which would continually be refactored and added to. This project could serve as a sandbox for the apprentice to test new tools, expose ignorances, and employ learned practices in a no-risk environment.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published