How to Learn from Students: Insights from Coach Clark Oake

How to Learn from Students: Insights from Coach Clark Oake

 m

Can you introduce yourself?

I’m Clark Oake. Formerly an Electrical Engineering Technologist, I am now the Software Development Team Lead at PolyUnity a Coach with Get Coding, and I recently just became a father as well!

How did you get into programming, and what attracts you to it?

I’ve always been a curious person, I love to see how and why things work. It’s what drew me to engineering initially, then to coding when I got laid off during Covid. Programming is an extension of that for me, directing data flow and control through code feels really satisfying to me, like working on machinery or building things. Its a practical thing and you can see the results of your work in real time 

Why did you decide to become a coach in Get Coding? What does coaching mean to you?

When I was asked to be a coach, it was an easy decision. Being one of the first people through Get Coding gave me some great insights into the challenges that students face and being able to help people on that journey is incredibly rewarding. To me, learning to write code is relatively easy, my job as a coach is to help people tackle big challenges with a positive outlook, see the bigger picture of what software development is, and create a space to fail safely and learn from mistakes. It’s super fun and I usually get to learn just as much from my students as they do from me!

Is there something in your coaching that you consider unique or especially important to share with students or other coaches?

I don’t have a Computer Science background, everything I know about code I’ve learned through Get Coding or in my work with PolyUnity. I think this gives me a more ‘down-to-Earth’ approach to code that focuses on how things work in very pragmatic terms. I also faced some pretty major challenges in my life when I went through Get Coding program so I like to think I have a very empathetic coaching-style that gives people the tools and space they need to progress at their own pace

What changes in the programming field are you most excited about right now?

I think AI is super cool and I can’t wait until it can write most of my code for me, however, I am also pretty stoked about how many new frameworks are coming out, I am only just getting into Next.js but there are so many backend and database frameworks out there that abstract away so much complexity and let you focus on writing the code you need instead of building environments for it to run in. No-code, low-code, and Frameworks-as-a-service are a great trend

How have you evolved your coaching methods since starting at Get Coding?

When I started, I was very much the coach that I wanted when I was a student. Clear expectations, tons of resources / homework, and very structured lessons and feedback. This approach was resource-heavy and had mixed results with students, I have since adapted a more ‘agile’ approach with sessions broken into retrospective, hands-on instruction, and planning.

Now my sessions tend to be open-ended / tailored to the student and I can focus my energy more readily on areas the student wants support. I have found this is way more efficient and has yielded some great results (and great discussions/lessons that I otherwise wouldn’t have done)

Do you use any techniques to maintain students' motivation?

I think the biggest motivator for most people in Get Coding is securing a job as a Developer, to that end I typically give students a more holistic vision of what that actually looks like. This can be discussing the ins and outs of full stack development, sharing stories from my work with PolyUnity, or talking about what types of roles exist for developers (as well as the different types of work that developers can do).

I find it helps a lot to let them see themselves in the role and connect with that vision as they are working through hard problems.

How do you manage a student's workload?

Communication, it all comes down to how much they can realistically achieve in a week and ensuring they aren’t feeling overwhelmed. I also spend a good bit of time helping them to ‘prune’ their projects and remove complex/unnecessary elements. They are adults and it’s up to them to deliver results, I just support them by helping say ‘no’ to things and prioritizing topics based on how much bandwidth they have week to week

Are there any things that you have learned while being a coach that you applied to your regular work life?

So many, as a team lead I am constantly moving between managing people and working on deliverables so any time I get to refine those skills is super valuable. Being a coach gave me a tremendous confidence boost in my skills as a developer which helps a lot when working on things at work that are too uncertain to start coding.

Getting to teach the material in different ways with each student based on ther background and learning styles is also crazy valuable for my technical communication skills and really helps me connect with a non-technical audience as well!

What technical skills do you consider most important for beginner programmers?

Outside of basic computer literacy and a positive attitude, the most important skill beginners can focus on is how to find answers/resources for the problems they are facing. Whether it is an error in their program, not knowing how to ask a question, or being stuck on an algorithm, learning how to iterate through Google searches or read through documentation is probably the single biggest gap (other than experience) between beginners and seasoned developers

Are soft skills, like communication and teamwork, important in programming? 

I would actually argue that these are the MOST important in programming, especially at a junior level. “If you want to go fast, go alone, but if you want to go far, go together”. You’re going to spend a LOT of time with your team and there will be stressful times when deadlines are approaching or things aren’t working in the codebase. The difference between these tough times making vs breaking a team all comes down to the soft skills of the people on that team.

What is your perspective on the significance of grasping programming fundamentals in comparison to mastering a particular technology?

I think it depends a lot on what type of work you plan on doing as a developer. Some devs stick with a single stack for their whole career and others change languages / frameworks almost constantly. Overall, I think anyone who is getting into coding should focus more on the fundamentals.

I also think  professional experience from other industries, I think there are a ton of transferable skills that lend themselves well to understanding the basics of web development and can really “level up” a new developer fairly quickly

Are there any new technologies or tools you strongly recommend students explore?

I always recommend that students try to use AI in their workflows, it can be a double-edged sword but so long as you understand the code it produces, I think its fair game to include in your projects. I have also recommended the ‘rubber ducky’ approach to problem solving, where you talk to an inanimate object and tell it how your program is supposed to work, then what it is or isn’t doing. It’s a great tactic for getting yourself back on track when you get stuck

What role does community and networking play in a programmer’s professional growth?

One of NL’s greatest assets is the strength of its tech community, people here are so supportive and happy to see other people’s success stories. Getting involved in the community is rewarding and often a huge boost for your career as a developer. Get out there and volunteer some time to Canada Learns Code, go to meetups for local tech groups and stay connected with friends and colleagues.

These are all excellent ways to fast track your professional growth and career prospects!

In your opinion, what is the role of coaches' feedback in the learning process of programming?

Its up to coaches to reinforce good habits and identify bad habits before they become too ingrained. It can be uncomfortable to have difficult conversations sometimes but the reality is that anyone can learn to code from internet tutorials, not everyone who learns to code on the internet can become a good developer / dev team member. Its up to us as coaches to help our students get to the point in their growth that we want to hire them onto our teams.

What is the best advice you would give to students starting their journey in programming?

What you are doing is hard, otherwise everyone would be doing it. Be gracious with yourself and make sure to give yourself time and space to learn. The only time you should be worried about not progressing quickly enough is if you look at code you wrote a month ago and don’t see any room for improvement.

Are there common mistakes you often see among beginner programmers, and how can they be avoided?

Thinking that things are ‘simple’ and are therefore ‘easy’. Running a marathon is ‘simple’ but people still train for years to participate in them. Understand that learning new skills takes time and effort, you are retraining your brain to think like a computer, it isn’t gonna happen overnight.

How can students stay up-to-date with the latest trends in the world of programming, can you recommend some sites, channels or other sources of knowledge?

For those that want to stay up-to-date, I like websites like dev.to, ui.dev, medium, etc. I am of the belief that learning is best done on the job though, I love building systems I have never built before and finding best practices for them, then figuring out how to make them work within an existing codebase.

It can be super challenging but a great way to get a deep understanding of the problem and code!

About Get Coding

Get Coding trains people to become software developers by building real-life projects with the most in demand skills, while being coached, one-on-one, with software developers from local tech companies. Students learn on their own time, making the program accessible even to people with a full-time job, family or both.