[one of my next article to publish]
I got a list of questions from TechStars company investor. I don’t know if I can mention his name, but I will share this article to him.
Again, these questions help a lot to understand problems, that this project can face in the real world.
I think it’s time to share my concept. I want to open a coding school. The idea is to teach students, that have basic coding knowledge on practice. Only practice. Hardcore hands on board, coffee in the cup and start to use your brain to deal with problems.
Btw, we actively discussing this project with awesome HN community section. You definitely should register here: [link to sign up]
[link to my thread]
This article is the 4th in my series, so for previous parts, go here. [links to articles]
[list of questions]
Source of ‘real tasks’ at scale?
Source of real tasks at scale is not an easy thing for sure. I was struggling with onboarding to my backend project and getting the first tasks done. Maybe in the future, I will need to have help from another project manager that will track the progress of interns teammates. Another way is to promote one of the interns to that module Team Leader.
Documentation is also a crucial part of the process [link]
I split our code into small parts. Each has separated space at GitHub.
After failing my first interns I find a solution I start to understand how to improve my process and reduce the level of entry of them. Interns usually stuck at setting up a local environment and other preparation that is important to start. So everything should be as simple as possible to do. If you want to add interns into a big ongoing project - you will get a lot of pain. Everybody knows it, but I didn’t realize that onboarding is so important.
At the beginning.
In order to deal with this kind of problems - I split my project into small modules/chunks.
To be honest - these modules are the cleanest code that I have
I also added some “robotic” scripts. When interns push their code changes --> we have tested and builds. We use the Jest module for Q&A and Travis CI that help us to fight bugs.
Then completed modules are published at npmjs.org and imported into our projects.
It also created very easy to understand development workflow.
Example: you can assign a file uploader form as a single task(both frontend and backend) or you can split it into 5-10 small tasks. You will get a better solution, that intern can do really easy.
The second way is more preferable. But it takes more time from my side.
How to monetize this project?
It will be free for students, small fee for companies that want to teach their team members. Maybe we will launch small job board with “featured” section --> where companies can post their jobs.
I don’t want to make money by charging students. At least for now. Maybe we will change our process and will have paid plans in the future. But I don’t want to do it. I’m getting some of the tasks done at my projects. So it is like an exchange between students and me.
We will need money for hiring other teachers or pay a stipend to our students. But it is long term goals. By paying a stipend to our students I will feel “guilt-free” (because some people think that I’m using these students, by not paying them).
But it is only can be done when this idea starts to be profitable only. I’m interested to explore projects like GitCoin and OpenCollective.
Both of these projects also will help us to improve our management process. It is open to everyone and you should have good tasks descriptions, in order to use GitCoin system.
So documentation is also important. And I like to know that this approach will make out finances open. It’s a cool and good move.
A major part of my interns is from developing countries. So I don’t want to reduce the number of people, by adding a price tag.
It is better to help them to learn for free. It is my official position.
Also, there a lot of cool and free places to learn to code. Or some of them costs very cheaply.
But if you know what to google, you can find tons of free content. Medium, YouTube, are some places where I’m learning each day something new.
But to be honest - I want to think about monetization only when basic steps will be finished. I’m sure there will be a lot of pivots at the next 6 months. We have said: “Don’t think how you’ll use a bear fur, before killing him”
(Don’t kill bears, please – they cute and adorable) [picture]
I think right now I can easily handle 20-30 people at the same time. It requires the part of my time. If I didn’t code myself frequently - I can manage even more. Assign tasks, make code review, etc.
If I will have more people at the same time, for example with 50 people I will add more branching/hierarchy.
Interns that spend more time with me will become leaders: review code changes and handles basic questions from newbies of our small projects.
In the future, when I will see that the number of interns will be overwhelming for me. I will add additional qualification it will lower the number of people that we need to onboard and increase their skill level.
More skilled developers --> less time to spend. It will be a very happy time for me, actually.
I have an assumption that companies will limited resources like mine also looking for coding help. Maybe we can forward some of the interns to those companies. It will be like a recommendation from me -> certificate that this candidate can be a good asset.
Enabling a job board can also help people that looking for an entry-level job. There a lot of job boards for sure, but it can make is some bucks.
[link to article]
If companies want to test-drive their future employees can be a source of money too. It is like a remote employee validation service - if you are not ready to put intern into your office right now. So I will train their developers. I think with our price model it will be very competitive.
They will lover level costs for HR, onboarding, electricity, PC, chair, coffee, etc.
The company also can save time. Because I will be responsible for training. I will handle the skill check of those people.
And if I find out some lack of skills --> I will teach them.
We keep everything open to the public at GitHub. So it can be easy to see actual progress that was done. Commits cannot lie, you know.
How to overcome the hesitation of real customers?
I’m testing this approach at my own projects. So it’s doable. But it requires some homework for sure.
Big and small companies hiring after-grads(entry level jobs). I see this trend and assume they’re a lot of possibilities.
It can work if the code has a good structure.
Good documentation and manager – it can work. If someone wants to incorporate interns but if it is hard to do - it can be a good sign that your code base actually has a big tech dept and no one(skilled or not) as a new employee will be able to deal with it.
Trust me – even experienced developers will burn your money with bad structure. So it’s not related to experience.
More details should melt this ice of fear to deal with entry-level developers.
I still think that some companies, that have a small amount of money are a good way to understand if they need to hire new people or not. This test drive can help to figure it out.
How can you maintain QA on a project.
- I don’t have a simple answer here. It’s related to previous questions and project configuration. Yes, I agree that QA will save a lot of time.
I’m trying to figure it out on practice, receiving feedback and making improvements in our process.
For tests, we having a separated place for them. Right now it’s hard to cover all of our functionality with good tests. But we’re aware of it and making small improvements.
This question requires more time to think about it.
A new version of answers. As I create a bunch of posts at this forum - I realize what problems we have and how management process should be improved and solve some of those issues.
Maybe part of the conversations should be reduced at our GitHub tasks. If I’ll create a lot of tasks in bulk and someone helping me with management - I can have a more easy workflow.
- Interns don’t work fulltime. So it is fewer moves that managing full-time people [at scale]
- with proper documentation, a lot of their questions can be replied with links only to documentation
- sometimes, if not to reply to their questions immediately - they can handle it without my input. Instead of replying quickly -> it’s better to extend documentation.
As our process evolving, I’m becoming more confident to keep the big number of contributors. I mean if they can chat together and help each other.
They will spend a similar amount of time, working on tasks, but my time can be reduced
So, the new approach is: with each new intern you should prepare at least 5-10 tasks ahead.
And notify a team member about it. With proper tasks description and help from experienced members – onboarding can be less time consuming for me.
So for me, it can be a side stream of income and interns will help to build my projects.
And some talented and hardworking people will have an opportunity to start their developer career.