This week we celebrate one year of producing Complete Developer Podcast. It is exciting as we hit our goal for the year a month early. In this week’s episode the guys talk about the apprenticeship program that Will put together to get BJ up to speed as a developer. Just like this episode the program grew organically.
10:11 Where BJ Started
Starting off BJ describes his history and path to programming from initially falling in love with computers in high school to graduate school for psychology then medical shool and coming full circle back to programming. He delves into personal details about why he left medical school and the mental and emotional state he was in when Will and other friends reminded him of his previous passion for programming.
15:03 Asking Questions
At the beginning Will was working from home and BJ would come over to study programming while Will worked. BJ would ask questions about the materials he studied. Will would also call BJ over to see what he was working on and narrate his programming for BJ.
16:10 Intern vs Apprentice
“A lot of companies will do the summer intern thing and what they do is they bring you in and say you’re a junior dev and give you junior dev stuff.”
Typically internships shelter new programmers from the difficulties of programming by giving them simpler tasks to accomplish. An apprentice however sees everything and learns by watching and participating in those difficult tasks.
17:34 Starting With Small Assignments
Eventually Will began giving BJ small assignments to accomplish on his own. It started with building this website and then his own blog. Then later he paid BJ to transfer his company website from WordPress to a Hexo generated static site.
19:26 The Programmer As Artisan
“It’s like learning math and how to solve for x, now do differential equations”
Many of the programs written in the classroom are academic only and not designed to be resilient in the world. Computer science degrees teach the science behind programming but not as much the how to build apps. On the other side is the bootcamps that teach practical skills but do not teach the underpinnings of how the computer works.
“The term software engineer increasingly bothers me”
Computer science is the production of fine French wine and programming bootcamps give you a fermentation kit and say go. You want to be able to create something that is drinkable and that people enjoy. Both bootcamps and computer science degrees need something after to get a new programmer up to an employable level.
31:05 Knowledge Tests and White Board Problems
Going through a recruiter or being hired directly you will have to take a skills test to show that you can do what you say you can do. From having done the apprenticeship BJ tested as a mid level developer on some tests. He was also able to discuss more complex topics from conversations he’d had with Will as an apprentice.
34:54 Using The Right Term
“Well, he’s not an intern but…”
In the beginning Will and BJ called the relationship an internship because that was the only term that came close to describing the situation. Describing to interviewers the exact situation was difficult because while Will was teaching BJ while working on paid products BJ was not being paid for working on them. The term apprentice changed the way these questions were asked allowing Will to better describe BJ’s skills.
“It’s like you were the guy pumping the bellows at a blacksmith and eventually you learn to use the hammer”
It was a recruiter that pointed out after speaking with both of them that it sounded like an apprenticeship. After hearing the term both Will and BJ looked into what an apprenticeship really is and decided that described the situation much better.
35:45 The Apprenticeship Model
If you go to a trade school you learn the basic skills to do the job and not get injured. Then you go to work with a tradesman. Learn the basics and then refine them with an actual teacher in the real world not academia.
“I wrote a big program and I got an A…emotionally that’s nothing”
In academia you do not get the same pressures as in the real world such as priorities changing or working with other members of a team not as capable. The teacher’s can’t be training 20 apprentices.
Historically people would take their parent’s profession. A person would start as a child with simple tasks and work up to more complex task to eventually take over the profession.
42:10 Learning to Admit Ignorance
“I had to learn to admit when I didn’t know something”
Admitting ignorance can be uncomfortable and BJ did not want to say he didn’t know something. It took time to get over that uncomfortable feeling. This became a valuable asset as interviewers will ask questions just to see that a person can admit they do not know something.
Even though he couldn’t admit his ignorance BJ would look up the concepts after the conversation then come back and ask questions later. This process was made simpler and quicker when he was able to admit he didn’t know something and ask for direction in where to learn more about the topic.
45:09 Becoming a Black Belt
“They think they [bootcamps] are in charge of the whole program and when you are done you are a black belt”
In martial arts having a black belt doesn’t make one a master but means that the person has learned the basics and can proceed to the deeper learning without getting hurt. Computer science programs and bootcamps get a person up to the level to start learning the difficult tasks in programming on the job.
Try to get a core level of knowledge to where you can provide value. Learning to write the same thing in multiple languages will not help anyone. On the other side going too deep into one language or area will not give enough feedback and you will get burn out. Do enough to be able to provide value and someone will invest in you.
49:20 Client Work
The active apprenticeship started when BJ took on his first active coding for Will. The rite of passage was building the Complete Developer Podcast website. Will planned on following up with BJ as he developed it but got busy with work and came back after it was completed. He had to look hard to find something to critique.
BJ’s first paid work was on a part of Will’s website. Then one of Will’s regular clients needed a website built for a podcast he facilitated BJ contracting directly with the client.
Through the apprenticeship BJ started with a memory of programming in Pascal in high school to now two years after starting having a full time position as a contract-to-hire employee.
Iot DIY Handbook
This resource provides project ideas and glimpses into ways others are using connectivity in their latest projects. It can be filtered based on platform type: Arduino, Raspi and other available options. Use it to get details on how to manage and control your project using smartphone apps.
Tricks of the Trade
We tend to trivialize the danger a bug can create. We are getting into a more interconnected world. With interconnectivity comes systemic risk when you ignore problems. It’s easy to create cascading failure in an interconnected world. Little things compound when you connect other things to them. Your software had to be able to fail, fail quickly, and not cause other software to fail. Stop calling them bugs, stop visualizing them as mosquito’s you squat.