Lessons from 42 July Piscine Part I
I joined the 42 Singapore Piscine from 24 July till 18 August 2023, and wrote about it here in my Now page. TLDR – it’s a very intense, enriching learning experience which I really, really enjoyed. I’m happy to say that I got accepted into the 42 Core Curriculum, and will be joining the programme from 5 Sept onwards.
My two questions
In the middle of the July Piscine, 42 Singapore organized a AMA session with the June Pisciners (the first batch of Pisciners). The two questions I asked them were:
- if you were to do the Piscine all over again, what would you do differently, and why?
- what was the biggest mistake you saw in your batch, which you would advise us against?
The June Pisciners gave very varied answers to my two questions, and I think everyone’s answer will differ. Below is just my take.
Q1: if you were to do the Piscine all over again, what would you do differently, and why?
If I were to do the Piscine all over again, I don’t think I would do THAT much differently… the reason is that, for the most part, my strategy and approach to the Piscine was to try different things as aggressively as I could at the start. To give an example, I took a bus on the first day of school, biked to school on the 2nd day, and borrowed my parents’ car to drive there on the third day. I also made it a point to try new and different things as much as I could: participating in the rush (group project) for the first two times. In general, I would strongly recommend this trial-and-error approach to the Piscine, because everyone’s mileage will vary: you need to figure out what works best for you, given your circumstances.
One thing I did wish I did earlier, was to learn how the positive deviants learned. In the middle of the Piscine, I realized that a couple of classmates were extraordinarily fast learners: one of them, Nick, is a former corporate C-suite (he was the former CFO of a large Singaporean firm), but was REALLY fast in progressing on the modules. And it’s not like he didn’t know his shit: Nick was explaining his code to another classmate in his peer evaluations, and my friend Mr T (who is a coding God) overheard Nick’s explanation: Mr T exclaimed happily “Nick REALLY gets it!” I asked Nick and another classmate Jerome how they approached their learning, and both shared with me that they often “sat” with the problems for a while: they kept trying to solve the problem their way. Until they got to a dead end, then they would ask for help. Nick also shared that he had found a couple of repositories on Github and Gitlab of previous Pisciners, and he found it helpful to look through their code to understand their logic. Then he would try to replicate, and to do it by himself.
Nick’s advice was a real game changer for my own learning, because I had previously stuck to the “strategy” of just banging my head against the wall. While persistence is an element of learning (see my answer to the next question), perhaps I had erred on the side of being too persistent at the start.
The other thing I wish I did earlier, was to organize debrief sessions with my classmates after our exams. I did relatively well on my first exam (exam00), and I thought I would be ok on my next exam: instead, I failed exam01 and 02 quite badly. In exam 01, I was stuck on a question about pointers, which I had explicitly prepared for. I could not understand why, until I spoke with my classmate Danielle. Danielle explained that, the way that the question was phrased, the question was actually asking for a void function to return the value through the pointer. (if this sounds like gobbledygook to you, just know I misunderstood the question…).
On exam02, I was all prepared for pointers and misleading questions (I thought). Instead, I got stuck on a question that had a very, very strange response: the question asked me to write a function to print out the alternative characters in a string, and gave examples of the desired command-line arguments and output. I tested my function by copying-and-pasting the examples of the question into my programme, and my function seemed largely correct, EXCEPT for two things:
a. my programme seemed to be inserting a bunch of unprintable characters, and
. there was this STRANGE apostrophe mark, which didn’t seem to be an ASCII character: it was rendered either as a strange character (like a ? in a hexagon), or when I added the apostrophe into my code logic, my code couldn’t compile. I went on a hunt for the ASCII-number equivalent for this apostrophe… I was stuck on that for a VERY long time, until eventually I failed.
I was chatting about it with my friends, and one of them (Nat) said “Oh! I know what you mean. I overcame that problem by ignoring the apostrophe: I just tested it with the normal single quote, and the code passed.” It turned out that my original code was actually correct. But because I had copied-and-pasted from the examples (Mr T told me never to do that), the feedback gave me the wrong impression that my code was not working. I was solving for a problem that I actually didn’t have, which caused me to fail the exam (sounds a lot like life, no?).
I’ll share more about my other learnings, based on my “successes”: the strategies and tips that worked well for me in the Piscine.
Q2: what was the biggest mistake you saw in your batch, which you would advise us against?
Nowadays, generative AI is a hot topic. The biggest mistake in learning which I saw around me, was an overreliance on AI for learning. Basically,people mistaking their ability to understand and to copy-and-paste answers from ChatGPT, for real learning.
This was driven home one day, when one of my classmates (let’s call him V), suddenly asked Nick about how he learned. V shared that, until then, he had been copying and pasting the questions into ChatGPT, and then copying-and-pasting the answers into his programmes. That had been fine, and he was progressing with the modules until he realised that, actually, he didn’t really understand what he was doing at all. Nick was quite emphatic in telling him “no, you have to make sure you understand before you copy!” (and Nick himself would also kinda practice replicating the solution).
And I think that is why the 42 Singapore staff kept emphasizing that the exams are for us to test our understanding. While we have access to all resources (including ChatGPT) during our assignments, we have no access to these resources during our exams: all we are allowed are a pen, a piece of paper, and a water bottle.
I lucked out: prior to 42, I had finished the Learning how to Learn course, and it really emphasised the importance of drilling and practice, in order to shift your learning into long-term memory. So I was extremely wary about copying-and-pasting ChatGPT answers the way many of my younger classmates were doing, as I knew that was just cargo cult programming.
Done right, the 42 Piscine is actually a great way to really, REALLY drive mastery: like Launch School’s Mastery based learning approach, if you don’t pass A, you aren’t allowed to progress to B. But mastery is ultimately an individual choice, and the system also doesn’t allow you to spend an infinite time without penalty (you won’t get into the Piscine if you were just on C01 after 26 days!)