42SG | Week 2

42SG | Week 2

People, C and the Economics of Piscine


by Shen Nan

Jun 2023

Looking back at the past week


Kind of apologetic yet unapologetic for not posting for the past week. Past the first day, everyday has just been a cognitive overload (partly because new language, new environment and other non-42 stuff happening in the background).

Past the first day, everyday has been struggling to understand the processes, tooling and requirements to submit and get your assignment graded. There’s this interesting economics of 42 that incentivises you to work more collaboratively and be a lot more an*l about your code, that I can elaborate later on.

Coming from a software engineering team, equipped with tooling, software and team support, to having to code in primitives (think vim, fish without plugin support, having to run lint after compiling) is honestly very painful. I’m really thankful I didn’t have to live through that era of just bad tooling support, and am super grateful now for lint-on-save and other blessed OSS that really makes DX super enjoyable. That said, going back to the roots makes me appreciate building software and the whole ecosystem a lot more, and for that I’m grateful.

🤔 It’s at this level of abstraction that software engineers in general can worry about other not-so tangible problems like user acquisition, buy-vs-build decisions etc. I suppose back then, there’s barely any buy solutions, so it’s pretty straightforward for engineers to just get into the grind and build. Now, there’s just so many solutions out there, it’s quite challenging as a senior / staff or even executives to decide to plunge their entire solution into a cloud provider / SaaS and incur that sub-million dollar fees.

Pensiveness aside, Piscine@42 has been really humbling, seeing folks with no coding background at all struggle and eventually succeed has been really inspiring too. I’d wished, earnestly, that I had this experience back in 2021 after leaving the military, to be able to come here to absorb whatever that I could with everyone else. In hindsight, it really is Rocket, compressed into one month, with a very painful grading structure, and 149 other people suffering here with you.

People of Piscine


I’ve always loved meeting people from different walks of life, yet share the same passion and interest in tech. After a few days, natural cliques start to form purely from “geographical location” (basically, which computers you choose to colocate near). There are retired folks doing tech “for fun” (he mentioned that he is still very serious about his work 😀), some older start-up founders running their own hardware and software, and some who left their old businesses to go back to their computer science roots. These people interest and inspire me more than the younger fledglings in programming, partly because they still remain committed in investing in their own growth and are not daunted to jump into this field and hold their own against the younger, more tech-savvy generation.

Maybe we could do some interviews here? 🤷🏽‍♂️

You also get your fair share of weird behaviours here. As mentioned previously, you’d have to participate in code defence both as a reviewer and submitter. It has been fine providing help or advice, but there are some very rude behaviour where they just stick their notebooks between you and your screen, and just plain demanded an explanation why they could not solve the problems. I’ve no idea why anyone would do that without a bit of courtesy (one of these even claimed to be a C# developer), but that has just been one of the downs in Piscine. A group of us agreed that we would stay away from these folks, and they have gone to “conquer” other tables and left us alone.

Meeting with C


My first and primary objective was to come here and understand the heck out of C, and to be honest, I have not been let down. Managing pointers and referencing / dereferencing has been really really painful, and I am glad I do not have to do this in my day to day work. It has been a cognitive battle trying to map addressing (&) and pointers (*), and even the positioning of the pointers as demanded by the code styles have been extremely confusing.

// compare this 
char* text;
// vs
char *text;

To me, the first one seems more intuitive (it is a character pointer), whereas the second one is just plain confusing (is the variable a pointer? but technically we are calling a type pointer??)

That said, I really love learning about how many programs, and a whole freaking OS was written in this language. This demonstrates how far of a dearth of knowledge and abstraction modern developers are shielded away from the inner workings of the OS and system, and starting to learn this really made me understand things a little bit better. First week, this coming week should be way more interesting.

Economics of Piscine


The interesting thing here is that everyone starts off with 5 Evaluation Points (EP). Whenever you complete and submit the work for evaluation, it first needs to pass two defences by your fellow classmates. Each defence incurs 1 EP, and participating in a defence earns you 1 EP. The annoying thing about the auto-grader is that you have to pass the defences first before even getting any grades, and the auto-grader is superrr strict on even the smallest code blocks.

Case-in-point:

# this was marked as wrong
git log --pretty='format:%H' -n 5
git log --format=%H -n5
# notice the lack of spacing between n and 5
# this was accepted

There are other little nuances here and there, but you learn by failing, and by failing you get to talk to two more people for your defence, and you have to talk to another two to watch their defence. I guess this sorts of work out to balance the ecosystem and force everyone to communicate with each other, and learn from others, network and get to know different solutions to the same solution.

This also means, it just doesn’t pay to be the first, or rush to be the fastest. You face the problems first, you tell everyone about it, and you have to suffer through another 4 more defences. In the end, you end up being back to the middle of the pack. It pays a lot more to be collaborative and learn with each other.

Closing


Will speak more about Exam00 and Rush00 next, which is the collaborative projects we had to do over the weekends.