Get the most out of your mentoring session
So you hit the wall in your project and Google has failed you, and thus in despair you turn to Codementor for salvation.
Before you jump into a session with a money thirsty caring mentor, I want you to consider this ...
Having a session is usually a BAD IDEA.
From my experience, a good PR is much more efficient, effective, educational, and some other high value packed words I can't seem to recall at the moment.
Now, I know in many cases the code is hosted on a private repo, and you cannot just give someone access without your entire organisation knowing about it and raising an eyebrow or two.
Fortunately there's a very simple way around that, and it's free!
Bucket to the rescue!
Unlike GitHub, bitbucket is free for private repos for a limited number of collaborators (5 if memory serves, but my memory ain't what it used to be ...). You can easily copy paste your project to a private bitbucket repo and share that with a mentor of your choice.
The benefits of a PR vs session
-
Faster. Much, MUCH faster. There are many hickups in a session, in which one side has to explain to the other side "no, no, look at line 56 ... yeah, yeah, just one more line up. Good, now go right to the XYZ method ... inside the brackets ... no, not the curly ones, yeah exactly ... "
This is slow and consumes a LOT of energy on both ends. In a PR however, remarks can be easily shared with direct reference to the relevant code. -
No need to be online at the same time. We all have our busy schedules, and one of the awesome advantages of Codementor is having access to mentors from all around the globe. When working "offline", there's no need to sync availability. Both sides can work on their own time and thus ship things quicker.
(At the time of writing this I'm in the Philippines, GMT +8, not easy at times ...) -
Video Companion. When I'm sending PRs to my students, I add (when applicable) a video of my screen while I was working. I also verbalise every little thought that comes to my mind, so the student can tap into my thoughts process, and not just the end solution.
Imagine we could have access to the brains of top developers, like the creators of languages and famous frameworks like React (my fav!). That would be priceless! -
Forced Duck Debugging. Having to write a detailed outline of your problem makes you think about it from a new angle, which helps crystalize the situation to yourself. You will be surprised but sometimes that will lead you to the solution and will save you time and money.
-
Cheaper!. My students end up paying waaaaay less for waaaay more when I refactor their code, fix bugs, and add features through a PR. Codementor also made it very easy to pay for that instead of a session.
When live session is the best solution
Of course sometimes a session IS the best way to move forward. In that case, I suggest the following procedure:
Before the session:
- Download Zoom. And notify the mentor you have it working.
- Share as much code as you can.
- Write down the problem in great detail, as if you would post it to Stack Overflow. Sometimes, you will sudddenly realise you can actually ask this on SO instead of paying for a session.
- Write down what you have already tried.
- Write down your debugging/research process <--- This is a killer if you wish to get better at debugging and problem solving. DO NOT half ass this, as tempting as it may be.
I know our impulse is to "get things done" as quickly as possible, but your #1 priority should be improving yourself for the long term, as brilliantly noted in the 7 habits book.
You don't want to rely on a mentor forever just to stay at the same level as a programmer (same applies to any profession, by the way).
At the beginning of the session:
-
Give succinct background about the project: Is it for your job, a task for college, a freelance project etc ... ? Also mention if others are working on the project, and which parts are your responsibility.
-
Clearly convey your expectations and wants, so the mentor could conduct the session accordingly. Do you want a just quick fix? Or maybe as much refactoring as possible? Those are two different "session mentalities" alltogether.
-
Show the program/app first (i.e. browser, terminal), BEFORE showing the code. Demonstrate what is happening, and what should happen. When possible show an example of an app that have the desired outcome (i.e. "I want the same swipe effect as tinder").
-
Briefly show what you've tried, give an overview of the relevant code, and let the mentor do his/her magic.
Do you have some tips for better sessions? Share below for a dose of good karma.
To better sessions,
Adam Goldman
PS. I also suggest you add the following to each request you post on codementor:
- Deadline
- If you tried a mentor already and why it didn't work (i.e. lacked knowledge in AWS lambdas)
- Example of the desired outcome if possible (i.e. Web based video editing like Snapchat)
- Succinct information about yourself as a programmer
If you have some requests open already, or some of the above is too sensitive for the public, incorporate these points somewhere along the interaction with your mentor, ideally before the end of the begginig of the session (when the mentor "takes over").
I think that working in a git repository can be great if thatās how your relationship works with the person specifically, but at that point you are basically a contractor. Talking one-on-one with people and learning about their personality in order to see where they are at, is really important in my experience. Iāve mentored people and been mentored by people - and in both cases a PR wouldnāt have been the way to go for me at all. I think the most important thing is that everyone understands the goals and the constraints. Iām never trying to keep people on the line to bill more. Iāve seen people who are a little freaked out that the timer is rolling - but when they finally relax and get forget about the bill, they learn 10x worth the price. Iāll have to write some counter-point article about value.
āI think the most important thing is that everyone understands the goals and the constraintsā - Yes, thatās crucial to any relationship, business or otherwise, indeed!
āIāve mentored people and been mentored by people - and in both cases a PR wouldnāt have been the way to go for me at all.ā - Have you ever mentored or got mentored by mainly PRs?
āsee where they are at, is really important in my experienceā - Same here. I find that having a quick session AFTER seeing some code tells you much more about the person from a less biased way, since code is code, and the way we interpret personality is subject to our biases.
Of course we all have our styles at the end :)
Iāve been teaching for over 20 years and Iāve always had a āthingā for streamlining processes, so thatās my style, which Iāve been to able to optimize a lot using the written approach (in coding it translates to PRs with video companions)
Gitlab provides free private repos as well, with no limitation. Bitbucket allows 5 private repos per person, which means if you as a user already have 5, you wonāt be able to get invited to another one, which a person who wants to invite you will only be able to find out precisely at the moment they click that āInviteā button.
itās free for 5 users, not repoās :)
https://bitbucket.org/product/pricing?tab=host-in-the-cloud
For lazy github users, gitlab also provides free private repos and you can use github credentials to sign up
Didnāt know that, thanks for the tip!