Color Code — Mentoring Beginning Coders in Cape Town

I’d like to talk to you about a part of my life that gives me a strong sense of fulfillment — mentoring beginning coders. Mentoring is an activity that I wanted to spend more time on when I moved out of the financial services industry a few years back. I was fortunate to find an opportunity to work in that capacity before I left London 3½ years ago. Then, at the end of 2017, I found a vehicle for that passion here in Cape Town with an organization called Color Code.

Read on. I hope you see why it’s so important to me.

What is Color Code?

Color Code is an organization in Cape Town that teaches coding twice monthly to interested students on Saturday mornings from 09h30 to 13h00 at Greenpoint Coworking.

Our curriculum is based loosely on a set of tutorials written by a UK-based organization, codebar. The tutorials are web-centric, starting with HTML and CSS, moving on to JavaScript. There are tutorials on topics such as Node JS and Git, but these are much smaller in scope than the HTML and JavaScript ones.

Color Code’s use of the codebar tutorials is not incidental. One of the founders of Color Code, Steve Barnett, started Color Code as a Cape Town chapter of codebar. But more on the tutorials later.

We announce our upcoming classes on Twitter, post them to our simple web site, and also share them on a WhatsApp group that all of the students can join after they’ve attended at least one session.

Finally, the owner, Erik Brits of Greenpoint Coworking generously donates use of his space to us for those sessions. There is high-speed internet access but the students must bring their own laptops. Greenpoint Co-working provides coffee and tea, the Color Code instructors bring snacks in the form of pastries and fruit.

Session/class structure

Our Saturday morning sessions are more about self-directed learning than following a rigorous class structure.

For newcomers, we encourage them to start with the codebar HTML tutorials. The HTML tutorials give a general introduction to a declarative style of coding, i.e. you don’t worry so much about logic and can get started using programmer-specific tools such as code editors and source code control. It’s visual, familiar, and is a good launchpad to the JavaScript tutorial which does introduce basic coding.

However, as our students progress, they often move into other areas such as learning SQL and other languages such as Python or Ruby. By this point, they often move to tutorials of their own choosing. Coursera is a popular platform for this. The idea is that we give the students enough knowledge and confidence that they can start to take advantage of the massive amount of material, both free and paid-for, available on the internet.

Of course, some of the participants are already coding either on their own or with other organizations and are simply looking for a friendly environment with like-minded people to work in. More than once, I’ve been asked to assist someone on a work-related project.

And yes, access to high-speed internet, free coffee and snacks doesn’t hurt.

Finally, the instructors periodically give 45–60 minute sessions on specific topics. In the past, these have included:

  • CSS
  • Source code control using Git
  • Using the command line
  • Introduction to SQL/relational database

Not surprisingly, these sessions are quite popular and the sessions when we give them are well-attended.

As instructors, we see a lot of value in giving these sessions, and I suppose, as instructors we’ve also come to realize that there’s a lot of prep work involved in giving a semi-formal lesson on a topic. For example, in the above introduction to SQL and relational databases session, I ended up having to go back and review material I learned in graduate school and that was just for a high-level introduction to the topic. So, while this is an area that we plan to expand, I think we’re cognizant of the level of effort to make it happen.

But, like so many things, what you get out of it is commensurate to what you put into it.

My relationship with Color Code

As mentioned earlier, I got involved with Color Code at the end of 2017. I had worked with codebar in London from the end of 2014 up until my departure for Cape Town in March 2015. To be honest, at this point how I got involved with codebar is a bit hazy. I was attending a lot of Meet Up groups in those days and I think I must’ve been made aware of them then. Regardless, I enjoyed the evening sessions, usually in some tech company’s offices in Shoreditch, occasionally nearer to Piccadilly, often with a trip to the pub with the other instructors and students afterwards. After all, it was London! During the teaching sessions, which were about 2 hours, an instructor would be paired with 3 or 4 students who were either working on the same topic, e.g. JavaScript, or were roughly at the same level. It was good fun and the sessions, held every few weeks, were always over-subscribed.

I have a long, if intermittent involvement with teaching and presenting topics in computer science. If I look back to my early days as a beginning coder in the mid-1980s, I remember enjoying the teaching/mentoring sessions the founder of one of my first companies I worked at (Phact, now long defunct), David Graham, used to give. His “day job” as a consultant at big Wall Street firms often involved teaching Unix and C, but he freely shared his deep insights with me and I have no doubt that it was these teachings that gave me an edge to when I got my first job at one of those self-same Wall Street firms a couple of years later. I worked hard to understand his insights but I also learned the power of knowledge in our field.

In particular, from David I learned the craft of building software applications. Unlike what I was studying in university, which was focused largely on concepts like correctness and algorithms, at Phact I had my first real taste of what it meant to sell a commercial application. This meant learning activities like:

  • Automated testing
  • Automated builds
  • Support for multiple hardware platforms and operating systems

These are all topics that, over 30 years later, are still highly relevant for today’s application developers. Mastery of these skills is what makes someone a valuable person in a commercial setting.

In the intervening years as my skills and knowledge progressed, I often gave presentations or delivered white papers to the teams I worked with on new technologies. Later, recognition of my skills by my managers, in this area lead to my involvement in coaching and on-boarding interns.

Fast forward to 2015. When I first came to Cape Town, I connected with the founders of more structured organization in this space, codeX. codeX takes a more parochial and almost trade school style approach to teaching application development. They teach coding certainly, but they also make sure that their students learn the importance of testing early on. They also have stand-ups so that the students can get used to the idea that they are part of a team. They have had some good success, so much so that one of their graduates is a colleague of mine at Yoco as is one of the founders of Color Code, Emma Phiri.

But by the time I moved to Cape Town in early 2015, I ended up becoming quite involved with another start-up, not in the edtech field, Yoco Technologies. They were in their early days and I was one of a very small technology team at the company. I was keen to see how far I and the company could go and so my involvement with mentoring languished. There was a brief fling with a very worthy organization here, SA Yes that turned out to be a bit too difficult for me to commit to. They mentor to youth in need here in the Western Cape. But when my mentee was relocated to another home far outside of Cape Town, I had to give up — I had no car and Uber-ing an hour each way after work was beyond my means.

Thus, when I stumbled across Color Code in late 2017 — I just happened to visit codebar’s web site and noticed that they now advertised a Cape Town chapter — I was elated. This was an organization and structure that I knew. Steve Barnett had started and briefly run the codebar-inspired sessions but that had morphed into Color Code. By the time I reached out to him, he was no longer actively involved with Color Code but happily put me in touch with the main instructors of Color Code, Nathan Begbie and Emma.

So, what have I done at Color Code?

Our Saturday morning sessions at Color Code follow a pretty standard format. The instructors get to Greenpoint Co-working at 09h30 and open the place (so far, I’ve never seen anyone else there on a Saturday). We’ve been given a good size conference room and the adjoining lounge which has the all important coffee and tea making facilities. Mostly the students show up between 09h30 and 10h00. We do 1-on-1 coaching and intermittently, we give about hour-long presentations from 11h00.

The students, since they are self-selecting, are not surprisingly quite motivated. When new ones attend, I usually point them to the web tutorials. They’re visual and easy to follow and they don’t require enormous amounts of instructor time for most of the students.

Where I often do have to spend time with the students is with helping them set up their laptops to be used for development. Software development still requires a number of very specialized tools to be installed:

  • Coding editors or integrated development environments
  • Language compilers and interpreters
  • Source code revision control applications
  • Database servers
  • Web servers

Fortunately, there are some very good tools out there to help manage the installation and management of the above tools and applications. Still, this is a big hurdle for many new students and the installation of these tools due to their inherent complexity is often not for the faint of heart.

I think the most complex thing I had to do in this regard was to troubleshoot one of the students’ Linux operating system set-up. For reasons that are not completely clear to me, the student had managed to corrupt the permissions on some core operating system components. After banging my head against that wall for about 30 minutes, I asked her if we could just re-install the entire operating system. She said it wasn’t a problem, perhaps she felt that there was no other choice, and I downloaded a fresh installation of Linux onto a USB stick. An hour later, she was back in business.

I find it somewhat ironic that one of my most “useful” skills is being able to do system administration. That was another skill that David Graham, back in my days in Phact, taught me. As much as I’ve tried to stay focused on coding, I still find myself getting involved with installation and set-up of computers and networks. Maybe it’s because I don’t run away screaming and waving my hands in the air

Which is probably an important teaching interaction. :)

I’ve also given a couple of talks. The first one was on using the command line interface and the second on SQL and relational databases [provide links to slides]. My guiding principle when I’m teaching other coders is to show them how to use a, maybe new, tool in their toolbox. At one point when I was living in the US, my then wife and I embarked at one point on the inevitable home renovation project and so there were many trips to Home Depot. I was always impressed that Home Depot had freely available classes being given on Saturday mornings on various DIY topics. The instructors were clearly knowledgeable but what struck me was that in the DIY world, there is no bias about the students’ level. I think that this is what we must impart when we’re speaking to our students — these are not magic incantations, these are not concepts that only the chosen can learn. Coding is a human endeavor like any other and teaching it should be an exchange where student and teacher both seek to increase their understanding. The challenge with teaching and learning coding is that, despite the textual presentation, both parties must actualize these abstractions in their own minds.

This is tough. But that’s what we try to do with our students at every Saturday morning session. I think that’s why, when both we and the students succeed, we feel so empowered.

So what are we achieving?

We haven’t done any formal metrics (and perhaps we should start), but in the half year that I’ve been involved, I see mostly familiar faces with a few new ones. The numbers stay roughly the same, so clearly there’s some attrition going on.

Of the people who are staying, I can see that they’re advancing. Students who started out with the HTML and CSS sections are now working on SQL courses on other learning platforms. More than a few are working in the field and they use us as a place to come and hone their skills. We have a number of former codeX students who I think enjoyed the socially involved setting that codeX fosters and they’re looking to continue that experience after have completed their studies there.

Or they struggled to keep up with fee-based training. While codeX works hard to make sure that nobody is turned away due to costs, the reality is that learning coding is sometimes beyond the reach of young people in Cape Town who have grown up in less privileged settings. This is a reality of life here and the legacy of apartheid is something that still affects many people. So, there’s no question that by virtue of being free, we have a certain attractiveness. We’re not as formal or as structured as a fee-based organization such as codeX, but that is not our mission.

We certainly get a fair amount of informal recognition from our students. I think that they’re glad they have a place where they can study and learn without too much pressure.

Color Code’s future

Our goal is to continue Color Code in much the vein that it exists today. However, there are some challenges I see that were not as much of an issue for the London-based codebar:

  • Access to computing hardware — The requirement that all students have their own laptops is shuts out more potential students than it did in London.
  • After-work sessions — In London, we had mass transit that made it easy to go home, even as late as 22h00. Cape Town’s transit system is not nearly as extensive and there is also the concern of after-dark crime.
  • Mentor availability — Finding instructors was not easy in London, but there was definitely a larger pool in absolute numbers than here. The tech community in Cape Town is vibrant but pales in size compared to London.

I think that some of the above can be addressed by making a more concerted effort to reach out to the tech community at large in Cape Town. However, there’s also the question of growing the organization just for the sake of growing it. There, we don’t have as much consensus on how to move forward. Our challenges are similar to that of many start-ups — we know that there is interest and even demand for the service that our organization provides. But the biggest one is that of time, we all have day jobs and making Color Code a priority means that we need to have some clarity on how it will be self-sustaining.

But, before we get there, I think one of our biggest challenges is that we are still missing some key data points.

For example, we currently ask that all students have their own laptop. This has been identified from time to time as an obstacle to participation but at the same time, it is not a bad rubric for participation. If someone is serious about making coding their livelihood, it’s not unreasonable to go out and get the minimal piece of equipment you need for that activity. Moreover, the computing demands for learning the basics are low. For example, I do much of my work and coding for Color Code on an iMac that is over 9 years old, has only(!) 8GB RAM, so and so forth. I’ve managed to get Ubuntu Linux running on a PowerPC laptop from 2001 and while it’s slow, it certainly can run an editor, a browser, NodeJS and Python.

This is not to argue that computing can be done on sub-standard equipment. But it’s clear that the requirements for learning are not nearly as demanding as in a professional setting. I think back to my undergraduate days and remember that the first computer I had an account on was a CDC Cyber from the late 1960s. It was nearly 20 years old by the time I was a student. Yet, it served the needs of several hundred first and second year students learning Pascal.

The point here is that we, the organizers of Color Code, need to do our homework so that we can find our way forward and continue to serve the needs of the under-served in learning how to code.

About Me

I’ve been working in computing since the mid-1980s mostly in fintech, mostly on Unix-based platforms. I’ve been a coder, a team lead, a systems architect, and yes, a mentor. In that last capacity, I’ve worked with teens in the NYC Public School system, post-graduate students at the University of East London, and aspiring coders in both Cape Town and London.

Resources