Post

Welcome ✨

Hey there, I’m Anish.

At the time of writing this post, I’m a final-year university student completing my Bachelor of IT degree with a Co-op scholarship at the University of Technology Sydney. I’ve got experience programming in various languages like Python, Javascript, Java, and C#, and I’ve got internship experience as both a Junior Data Scientist and a Full Stack Software Developer. At my latest internship I was part of a backend and frontend team, developing in both .NET and React for a subscription management service at a dataroom company (Ansarada) - think mergers and acquisitions but done securely on the cloud. I also got really into AI and Machine Learning during this time and built a bunch of tools and chatbots for internal use by the go-to-market team. At my internship before, I worked as Junior Data Scientist, playing around with oil and gas pump data for a major energy company (Origin Energy).

Both were really rewarding experiences. I learnt heaps about the industry, about the importance of workplace culture, and how on-the-job learning trumps almost all the knowledge and skills you get from university. These experiences were truly insightful and I’m super grateful for them, however, I’ve discovered that my skills and competencies in computer science + programming + technology have not greatly improved. In fact, I would say my skills have optimised for the minimum amount of knowledge required to achieve the minimum threshold of quality.

I don’t consider myself particularly ‘efficient’ or ‘effective’ at programming yet. I have a deep passion for computer science and programming but I’ve never really given myself the time to dig deep and learn the fundamentals. There was a short period of time where I followed the tried-and-true NAND to Tetris pathway, but gave up halfway because I realised that knowing the microarchitecture of a computer doesn’t translate over to your ability to program a nice looking UI for a company that will treat you like a cog in a well oiled machine.

The truth is, I had to be pragmatic - go down the usual path, learn Javascript, learn React, get some plug-and-play web apps under your belt and boom, you’re qualified. Anything else and you’re risking your ability to land a role or get paid at a competitive rate. Moreover, I was was in the “I-am-the-next-steve-jobs” phase of my life where every solution… was in search of a problem and every problem… wasn’t really a problem (but I built a web app that could scale to 100,000 users just in case). This desire to make heaps of money, either as a developer for a big company or from a unicorn start-up, fed into this need for practicality - only learn what was necessary and most efficient - avoid going too deep and really learning what was going on. Indeed, people were landing roles left-right and centre in tech industry - sure things had slowed down and there were big layoff’s, but the environment seemed to always benefit those with lots of projects and frameworks and experiences in microservices under their belt. Why learn Javascript back-to-front when I only needed to learn enough to build a functioning web app? Why learn how to build a UI when there are Figma extensions that generate the code for those UI’s with the click of a button? In the age of Github Co-pilot, why even learn to program?

I’ve pondered a lot, and I think my answer to these questions aligns best with the following quote:

“The fastest way to a small success is not always the fastest way to a big success”

I guess you could read this as “think long, not short”, but I think there is a little more to it. By learning only surface level skills, I’m most certainly setting myself up for a lucrative position straight out of university - but for how long? How valuable are the skills I’ve collected? Plugging micro-services together was not really a valuable skill - in fact, it was built to be a replaceable skill, thats why they’re micro-services, they’re lego pieces you can plug together while all the complexity is abstracted away. What do I really know about computer science and programming? I don’t know much if anything at all about data structures, or algorithms, or anything really beyond for loops and conditional statements. I know enough to get by. But I’m really only a professional “frameworker”. I know how to get API’s to talk to each other, but I’ve never learnt the fundamentals to bolster my skillset meaningfully.

For the longest time I’ve only bothered with JIT (Just-In-Time) information - information only when you need it. Its faster, its more efficient, and you only learn whats necessary - there is no wastage of time or effort. But what I believe now is that JIC (just-In-Case) knowledge forms the basis one’s understanding when allocated correctly - e.g. you shouldn’t learn Svelte just in case you need it, but you should learn data structures and algorithms just in case. In fact, there’s lots of JIC knowledge that one can learn to elevate the quality of their output. I’m no longer interested in learning from the top-down with frameworks and wrappers - I have the time, and more importantly, I have the passion and drive to learn from the ground up.

I’ve always wanted to really understand how computers work - I wanted to go all the way down to first principles, beginning with bits and bytes, and work my way up from there. Right now, I have no clue what a compiler is, or what a half-adder is, or even how 1’s and 0’s could possibly translate into the vast landscape of possibilities in computer science - but what I can’t wait to find out. I no longer care about building side-hustle web apps or learning the freshest and latest tech stack - I really just want to explore this field I am so passionate about, from the ground up, learning all its intricacies and working my way up from my current novice position to ultimately mastering the computer science landscape to the best of my ability.

Again, I’m not doing this so I can get better career prospects or build a billion tech start-up. I am doing this because I am passionate about all things computer science and I’m ready to excel in my field of choice.

That’s truly the purpose of this project. My CS Chronicles - a self-guided journey towards mastery of the computer science landscape.


I’m super excited for all the projects to come. I’ve created this as a reference for myself and don’t expect anyone else to really read any of this but if you have read up until now, thanks! I’m sure this site will be filled with projects and posts and videos soon enough showcasing what I’ve explored and built, and I hope you enjoy it all 🙂

This post is licensed under CC BY 4.0 by the author.