Goodbye October! Devcon Swag Fashion, CS50 Lecture 2 Arrays, Problem Sets

Devcon was held in mid October this year. The Bogotá, Colombia Edition. I wasn’t there but I did get some swag. Among the stuff I got, a few items stood out to me. Crypto swag fashion item number one. A black cap. With a beautiful blue and purple Ethereum logo on it. I absolutely love it. I’m wearing it every day now. It’s so perfect for Autumn days in Asia.

Crypto swag fashion item number one. A lovely black tote bag. It came from Scroll (a startup that builds native zkEVM layer 2 solutions for Ethereum) as part of their swag collection. I heard that were giving away limited editions of their swag to folks who showed up at the Rollup Day event in October. Unfortunately there is no crypto swag fashion item number three. I was looking forward to picking up a few classic crypto swag style T-shirts for women that are not black but that didn’t happen.

Overall the month of October was mostly about learning how to program. I had been a little obsessed with courses and youtube videos on learning how to program in general. I started doing this very popular free online course Harvard CS50’s Introduction to Computer Science. So far I did three of CS50’s lectures (Lecture 0 - Scratch, Lecture 1 - C, Lecture 2 - Arrays), as well as the problem sets. Here’s one lecture video link:

I went for the less comfortable problem sets for the three lectures. They weren’t exactly easy as I had previously thought they would. It was my first time doing a programming-related course. I didn’t take any CS class in college (which is something I’d regret forever!). I was giving myself a chance to take it by taking advantage of Havard’s educational resources that are out there and free.

A few days into the course, I quickly noticed I needed some guidance when working on the problem sets. I went through the youtube videos for some hints and solutions here and there. Went through almost all of the posts put out on CS50’s dedicated online forums, in particular reading closely on the posts who were asking questions that I also feld I had. I bugged Anton, my blockchain developer friend (blockchain developers generally speaking are software developers who are constantly heads down writing Solidity smart contracts). I bugged Chinyu, one of my young college kid friends, who is currently taking several CS courses in a university in Taiwan.

There was a lot of frustration going on when writing C. One particular frustration that was quite memorable was there was this one time when the program couldn’t compile properly. I thought it was when I was working on the problem sets for Lecture 2 - Arrays. The main task of this problem set was to implement a program in C programming language that would encrypt messages using Caesar’s cipher. Somehow I wrote the program that wouldn’t compile. I turned to the internet and asked for some help. I turned to Google, I turned to all of these Youtube videos, I even asked real people in real life like Anton and Chinyu – the reponses I collected turned out weren’t exactly what I needed.

So I thought maybe it was something very specific, I don’t know. In the end I had to go over what I wrote by myself. I had to trust myself, deliberately telling myself I’m smart enough to resolve this specific issue. (You’ve got this.) I don’t remember what I did exactly but eventually I’d got it worked out fine. It took me 4 days. In the end I submitted the problem sets on a Saturday morning.

Something peculiar immediately followed. Just a few minutes after submitting the program sets, my partner (who happens to be the smartest Ethereum developer in the city) asked me to show him what I wrote. Further, asked me to explain the code, the syntax, and the logic, line by line, to him. He basically wanted me to give a detailed walkthrough of the program. (Remember I barely finished it that morning.). Then, some 20 minutes later into this session, he did something almost all good software engineers would do when reviewing code – optimize it. By rewriting the program I just wrote.

A kind reminder that this act is not recommended for teaching beginners on how to program. It’s especially bad if your students are only a few weeks into computer programming. Also, it’s especially bad if they have already experienced a lot of frustration in the first few weeks. Because you may not say it out loud, but your actions are saying: You’re dumb! The code you wrote are so bad that I had to help you get rid of the whole thing and write a new one, a better version, for you! It felt awful. I’m certain this is not true but it really had felt like (at the time I’d experienced it) I was around a person who would always look down on me, like I’m not smart enough, not good enough to him, not intelligent enough to be his friend. It’s hard to articulate this kind of negative feelings. Maybe it was the way he said it. I’m not sure.

But I wasn’t expecting this. It really came as some sort of shock. Suddenly I was feeling very upset, emotionally overwhelmed, and started to cry. I had spent the whole week for this particular hard task (at least for me it was quite hard). Of course you could write better code. Of course your code would be prettier and more optimized than mine. You have been writing codes for the past ten years, while I wrote some seemingly bad code (they’d looked good, or at least looked okay, to me before your criticizing) for about two weeks. Anyways… that weeked was ruined.

I’m writing to better reflect on this whole experience that happened in late October, and I’m saying goodbye to it! Goodbye October! I really hope I give myself enough time to keep on going and keep on following the rest of CS50. There’s a lot of good stuff in it. Don’t let one not-so-great experience stop you from experimenting and exploring. I’m glad October is so over now. I might want to put out another blog post (Hello November!) and write something about the things that I look forward to this month.