030 #powercoders

030 #powercoders

Whether relocating or intensely travelling, one becomes acutely aware of the challenges and opportunities of starting afresh in a new place and culture. The topic of migration is close at hand for anyone who, like me, may wish to use data to orient themselves - or for anyone concerned about crises of nationality erupting around the world. If I didn't really know what to do about any of this, that became clear soon enough: through a project bringing people in need together with people in the know, setting ambitious goals for their learning and practice.


Contemplation

At one point, there were plans to organise a make.opendata.ch event boosting projects like OpenAid or VSJF-Refugees Migration, and other bold ideas on the table. These plans had to be put on hold, though I tried to support events from fellow chapters and journalists, prop projects like the Refugee Phrasebook in the Open Knowledge and School of Data network.

During last summer's Adventures in Data Visualization workshop in Tessin, I then pitched an idea of doing a collaboration to students who worked on a migration project visualizing the hundreds of languages spoken in Switzerland. This seedling of an idea continued to germinate over the following months, culminating in the March Data Expedition we started with the Museum of Data Arts - an urban data art space in Zürich which pays special attention to the needs of migrant populations.

At the beginning of August last year, one of my good colleagues in Bern asked me and his friend to tea, inviting me to a brief conversation that would profoundly influence my activities over the course of the following year. Over espressos, I learned about a coding academy for refugees to be located at the Effinger Coworking Space in Bern. My interest was immediately piqued.

Discovery

In the months after that pivotal meeting, I got involved in workshops with social workers, visited several asylum camps, got to know their residents and integration projects like In-Limbo. I became aware of the technical interests and potential to work together, and discovered many basic (and some a little more challenging) issues around helping people from very different parts - following very difficult paths - to become confident contributors to society.

And then the year flew by and with a splash, the first Powercoders were selected, and a quickly formed group of volunteer coaches and mentors - yours truly among them - got ready to rock and roll at the obligatory launch party.

The coding academy itself took place over 12 weeks from January to beginning of April, and was followed by an at least 3 month internship:

"The ultimate goal of the Powercoders pilot in Bern is the permanent placement of trained refugees in IT-companies and IT-departments in the Canton of Bern. Participation is free of charge (laptop, food and transportation are offered) and includes a mentoring program."

Wow! It was hard not to be excited by the ambition and scope of this effort. Indeed, this rallying call to the IT community in my home town resonated through the offices of many of my colleagues - in particular among principled companies who put people first, and just a wide variety of people willing and ready to confront real world problems by investing into the project.

Analysis

I won't go into too many details of how the teaching was organised, but refer you to the Powercoders newsletter for reports and details to come. I do wish to share a little bit about my contribution to the course. Having some proficiency in several programming 'tongues', I offered myself in the position of meta-coach, available on demand when anyone got stuck.

Having joined the coworking space at the end of last year, I worked from a desk near the classroom, and could offer on the spot assistance when needed in person or over Slack. We had lots of friendly discussions about things like JavaScript frameworks and code editors with fellow coaches, as you would expect in any room IT folks meet. In general they seemed to do a great job of keeping the class motivated and focused in the beginning.

The classroom awaits.

Towards the middle of the program, I prepared and ran two day workshops on data structures and sources. The students already knew the basics of web services, but they were a bit confused about what was really going on. We went back and thought about what's going behind the scenes. I explained how memory works, how the CPU works with information registers, how heaps are allocated and memory shared between applications like web browsers, and within them, web pages.

From there we moved on to the modern day, profiling and optimizing memory footprints of JavaScript applications with developer tools. The students told me a discussion of objects and data types worked best. They had a lot of questions about persistence, so we played with localStorage and jQuery.data() and SQLLite. I asked each student to make some data of their own, imagining a schema and writing up a social profile using JSON notation.

After lunch we kicked off with "data projects", working in small groups like at a hackathon, building use cases from what we learned.

The next day I started with opening the code and running three open source JavaScript games, which I invited the class to try to beat in 15 minutes by poking around in the code and skipping levels through the console encouraged! I realized that some people didn't have a clear understanding of where the code was actually running, so I explained the difference between locally and remote running code, View Source vs. Inspector, and why its not a good practice to expose a lot of global variables.

Here are some of the projects our Powercoders worked on:
Tic-Tac-Toe. A customer database. Kanban-Board. E-Commerce website. Slack bots. Visualization of contact data with D3. Address management with Firebase-DB. User Interface to make graphs with D3. Search Engine Optimization tools.

As we continued working on these projects, I went around the groups and helped with a little bit of spreadsheet-fu or D3.js or Unicode or RESTful APIs. A few students really started to struggle at this point. Sitting down with each, I tried to see where difficulties lie, asked them to share their frustrations - and appealed to common sense. I sensed that our combined teaching styles and characters will definitely give each student a head start in their coding life.

We were lucky to have an intriguing guest step in during these data projects, a fellow by the name of @BarJack, who talked about his own experience learning to code with data from scratch during an intensive programming camp a few months prior. He inspired us with his projects, like one where he used public websites and open data wrangling tools to create a provocative and impactful Data Journalism report on the judicial process (presentation slides here).

Python

Later in the program, I participated as coach again with focus on Python proficiency. In my workshop we first discussed how estimates and logs (of code commits, browser histories, etc.) can contribute to a better understanding of our efficiency as programmers. We tried tracking time spent on learning activities in a log (e.g. spreadsheet or a text file) then visualizing progress.

I shared a bit of history of Python, building on what they knew already from other coaches, explaining the different approaches for working with terminal/web/desktop software, then shared two real-life Python projects with them - one commercial based on Django, the other open source and Flask based.

Highlighting every step of the process, I explained how coding projects go from initial discussions and evaluations, planning notes, estimations, first prototypes, all the way to production support. I think they got the message that Python is a very important component, and that it usually nestles in together with other programming languages and environments. I encouraged them to pick a topic that they are personally interested in (programming or otherwise) and do a small Python project in that direction.

We also had a special guest join us, bringing insightful perspectives on building Web applications with security in mind. Writing more readable code, limiting exposure to other people's bugs by being in control of dependencies in your project - good engineering tools and practices like test-driven-development and support for encryption techniques like Secure Socket Layers are fundamental to any serious web project. I knew it was a lot to cover, but of all the reasons I work with Python, security practices are right up there - knowing that we build on a solid foundation really helps us programmers sleep at night.

Next

Powercoders is a remarkable project, in its ambitions, and in the behind-the-scenes efforts of a large community that made it happen. From helping with a social event at our new E-0010 space, to being plugged in to DJ at the graduation ceremony, the program gave me a chance to not just connect with motivated people thirsting for knowledge, but to re-evaluate my own story and what role I wanted to play in the intertwined story of technology and culture.

Due to a mix-up, for a time my photo got stuck along with the others on the student's wall board. And, in truth, I learned a great deal of important things about my work and place in the world, about the nature of learning and the power of coding. Right now I feel incredibly privileged to have become a Powerteacher through the experience.

Which makes me so pleased to announce that, thanks to support of the Effinger community and my partners at 89grad.ch, I was able to offer an internship at
Datalets.ch to one of the first fifteen Powercoders. Several students were undaunted by the fact that I was basically a one-man-show, and came to interview despite the wide range of work involved. I made it quite clear that freelancing can be akin to a rollercoaster ride.. Nevertheless, one student had a clear match of technical interest, social acumen, professional attitude, and communication skills. I look forward to letting my new colleague introduce himself to you here soon!

In the meantime, thank you Powercoders, to each of the founders, hosts, backers, fellow coaches, mentors and students, for many challenging and amazing moments these past months. Good luck to each in your next steps, as one community with minds and hearts wide open. Keep it up, keep smiling, make your commitment pay off, continue making a positive impact on your new community, pave the way for others to come.

Enough said. Let's code the planet! 8-)

Creative Commons Licence
The works on this blog are licensed under a Creative Commons Attribution 4.0 International License.