Apprenticeship Program

Welcome to sophilabs. We are excited to have you onboard. This section contains common references you might use during your apprenticeship process.

We want you to remember these three things during your training.

  • 🎓 The focus now is on learning. As part of your onboarding process you need to figure out how we work. What are our values? How we work? We will do everything we can to make your two months as amazing as we can and prepare you for your step after the apprenticeship.

  • 🗻 Don't panic. The first weeks for any new hire are overwhelming. There is often an avalanche of introductions, meetings, and new hire paperwork and administrative tasks. Your Mentor and your Development Manager (DM) will give you guidance during this process.

  • 🙌 We love feedback and we look for a motivating environment and culture, where everybody trusts each other to receive constructive feedback and get the job done. Your mentor will give and ask you for feedback during your apprenticeship.

The Timeline

Please review the following timeline which is ordered chronologically from the first day up to your first client project. Your first month is invested in learning, after that you'll meet with your DM to introduce your first project.

Final Words

We encourage you to propose changes to the apprentice process. We believe in a continuous improvement process and we are constantly trying to do a better job at it. As an apprentice, you have much better insight into what could make the process better for you than does someone who's been working here for five years. Feedback is always appreciated. If you have feedback on the apprentice program, please discuss the issue with your mentor, or DM.

Note: This page is based on the great work done by Thoughtbot, available at their Github repository.

Your First Day

Office Tour

During your first day our Office Manager will take you for a tour of the building and the facilities, and be introduced to our team. Don't worry too much if you can't remember everybody's name or what they do, most people understand and won’t be annoyed if you say something like: "I'm sorry I can't quite remember your name" later on, in fact they expect it. Everyone in the office has been the newcomer at some point, so your teammates know that to get good work out of you and help you feel relaxed, they should be readily available to help you settle in and teach you the ropes. In any case, you can go to the sophilabs team page to help remember people faces.

Also, the first day you will be signing papers regarding your work agreement with sophilabs. Let the Office Manager or your Development Manager (DM) know if you have any special requests.

Trello Newcomer Board

Trello Newcomer Board
Trello Newcomer Board

During your first day you will be assigned a Trello board. If you need any help reach out your Mentor, DM, or the Office Manager.

Some Tips

  • We have general Company standups every Tuesday at 11am UYT/9am EST/10 am EDT, where we make announcements and we speak about the latest events of sophilabs projects. Be sure to attend punctually.

  • We have Friday Talks every Friday at 12:30 UYT / 11:30 EST, an instance to meet with your teammates, and spend some time together talking about technology related topics. Attending is optional and you’ll enjoy a lunch or brunch for free if you attend. Check out sophilabs Manual for more details.

  • Ask your mentor, DM or Office Manager if you have any questions.

  • We are a friendly bunch and we'd like to get to know you better! That being said, it's easy to feel intimidated or uncomfortable in a new environment. In sophilabs we often host meetups, and have after office events. So feel free to join into any of them to help meet new people.

Self-learning Path

Introduction

We don't expect you to know everything about Software Development. In the following one or two months after your arrival to the company you will focus to learn the ropes. Your mentor will assist you during this process and give you feedback along the way. We understand every new hire has a unique skill set, so we will give you objectives to learn to get up to speed in the basics about anything we think you should learn.

The Plan

In this process which takes from one up to two months, you will learn skills used in most of the projects, along with our common practices described in the Playbook. After you finish this process you will be more familiar with our style of work and be ready to start participating in a client project with more experienced Developers. We want you to get used to make Code Reviews, give and receive feedback, follow our guidelines on the different languages, and learn more about the technology stack we usually employ in our client projects.

In self-learning we must cover technical skills and the soft skills. The first are about the skills needed to be familiar with the tools used in almost all projects. We like to complement technical skills with soft skills, as software engineers should have a good balance between those two to reach their full potential. Software engineering is also a human activity, where communication is crucial, specially when dealing with people of other cultures, in an online environment where listening and expressing can be much different from communicating with a fellow teammate.

We usually organize self training by setting up a Trello board in the same way you newcomers do in their first day. The board will have one or more tasks related to self learning, and some tests along the way.

Self-learning Topics

The technical skills included in the Trello board are the following ones, depending on your technical background.

During your self-learning your mentor may give you quick assignment projects to allow us to give you feedback and to reinforce what you learned.

For communication skills we may include the following topics and activities:

  • Introduction to communication for Software Engineers

  • A sample Customer call

  • English assessment test (for non native English speakers)

  • Continuous Improvement process

Training Accounts

Be sure to ask your Mentor for training accounts to start your training. We use different sources for each topic. We have a Pluralsight account used for some training. We use some other sources depending on the topic, like Khan Academy, so be sure to have them set up properly to avoid any hassle during your training.

Tips for Self-learning

Taken from Self-Studying: What’s the Benefit and How to Do It.

Self-learning does take significant discipline and can be difficult at first, but like any endeavor, with time it becomes easier. Self-study, when done correctly, is an effective learning tool, so it can be helpful when used to prepare for a test or learn an entirely new subject matter on your own. Here are some tips for practicing successful self-studying:

  • Prepare and maintain your study environment: when learning remotely it is important to have an adequate study space. If you want, you can relax in a sofa in the office while reading. We usually do this in sophilabs. In the same way we meet in meeting rooms, we eat at the dinning room, you may find more effective to learn outside you assigned space.

  • Find what works for you: There are many ways to learn, and it is important to adjust studying techniques to find what works for your brain. The sites we include are good start points. We encourage you to keep going and try different sites if you find them more useful.

  • Review material the same day you learn it. After taking notes in an online course, or reading the next chapter in your textbook, make sure you review all the new material, by typing up your notes, practicing your new skill using a Breakable Toy Project.

  • Study in short, frequent sessions. Instead of treating your study session like a marathon, break up your material by topic into a series of short sessions, separated by short breaks.

Training Project

As an apprentice, once you complete the self learning process you will be assigned to work on a Ticket System Project, which will give you a chance to apply your current knowledge and to continue learning as well as to practice giving and receiving feedback with your Mentor. The Ticket System specifications can be found online at sophilabs training. Your mentor will give you the actual requirements for the project and a deadline, which can be anywhere from one to two weeks from now. This project is an excellent opportunity to practice before facing real clients, handling deadlines, managing expectations, negotiating a real scope, and prioritizing.

Requirements

Training Project
Training Project

The ticket system requirements are described in the sophilabs training page.

Activities

Training Project Activities
Training Project Activities

This section describes some activities you will complete during your training project.

Kickoff

Your mentor will meet with you to present the project, explain the scope, and set the deadlines of the project. We will create a gitlab repository for the project where you can commit your code. Make sure you have access to the private company's gitlab. Please set up gilp commit hooks for Python and for Javascript in order to ensure that your code complies with the language guidelines. You can download a sample gilp ready gulpfile.js here and adapt it to your needs.

Feature work

After the kickoff meeting, you should be ready to work on the project. This is the perfect time to practice implementing our development process. You should follow a git flow branching model development. In this project this means that whenever you make a new feature, you should create a feature-specific branch for the work you are doing. Whenever you finish your work you should create a Merge Request so that every commit onto the master branch is reviewed by a teammate first. In the training project your mentor will act as the reviewer following the Code Review Guidelines and give you feedback on your work.

Demo

At the end of the project, we will ask you to demo your Ticket system for your mentor. Think of this exercise as a product demo after the end of an SCRUM sprint where your mentor will act as a product owner. This article gives some ideas about how to make your demo as effective as possible.

Tips

  • Prioritize: Mandatory Requirements vs Optional. Consider doing mandatory requirements first, and then focusing on the optional ones if you have time.

  • Organize: Keep your work organized using a Trello Board, this will prevent you from getting stuck and help you to focus on the most important things.

  • Negotiate: Any developer should be able to negotiate requirements if the scope is too big. Feel free to negotiate the deadlines and requirements. Hitting deadlines and negotiating scope are common software projects with a fixed timeline.

  • Ask: If you get stuck, ask around for help. At sophilabs we have several ways to find help when needed. - Use the /guru slack command to find experts in a certain area. Try it in any channelGuru Slash Command- The specfic Slack channels #devs, #devs-python, or #devs-react are also great places to look for help. - Ask around! We are a friendly bunch and someone will surely know or at least be able to point you in the right direction.

Your first Client Project

Our goal is to get you to the point where you can join the company as a full developer or designer. At the end of your second month, you'll meet with your Development Manager to discuss your next steps. One of our goals is to help you land a job at the end of your apprenticeship. If you want to work at sophilabs, we will be prepared to either make you an offer or tell you there isn't a good spot for you at sophilabs.

If you will be joining us the Development Manager and the Operations Manager will find you a client so you can start working. The first weeks won't be billable to the client. We expect you to learn how the client works, study the code, any needed technology and start getting along with your new teammates. This is the part where you stop being an full apprentice and start being a developer.

Tips

  • Ask your Development Manager for access to the project source code.

  • Ask your new teammates how to set up your project, so you can test the code in your machine.

  • Learn any technology needed for the project. We don't expect you know every up front, but we do expect you to be able to fill the gaps and become a full fledged developer when time passes.

  • Don't be afraid to ask around about how the project works. Any large project can be daunting at first, so having someone else to explain how things work is essential.