What I'm Currently Learning and Why
With my new job starting in October, I have a four-month window to dedicate to personal and professional development. To make the most of this time, get in the habit of a full-time role, and set myself up for success, I’ve created a semi-structured plan focusing on:
- Direct Career Enhancement: Skills and knowledge that will directly contribute to my success in my upcoming role and long-term career.
- Indirect Career Benefits: Broader, less related knowledge and skills.
- Personal Growth as a Muslim
Career Success
Machine Learning and AI
The current trend in software, which is probably not going to die anytime soon. It’d be stupid for me not to at least become acquainted with it.
My learning process can be broken into 3 parts:
- Foundations: Learning ML & AI from the ground up, building my own models and libraries, and understanding the mathematics.
- Practical Applications: Using existing models and APIs to build projects, which would more likely reflect what I’d do with AI in industry.
- Using AI Tools: Can offer a great productivity boost when researching and learning new topics.
AI is a growing, high-potential field I can see myself working in in a few years, so developing a strong background early on is a no-brainer.
Resources
- Hands-On Machine Learning: A bit outdated but still a great resource for the fundamentals.
- Scikit-learn: The documentation is great, and I’m currently developing a simpler implementation of their models.
Git & GitHub
The most used VCS and Git platform by FAR and is universally used. I know how to use Git for simple work, as that has gotten the job done for everything I do. I mainly use add
, commit
, push
, branch
, switch
, and some other commands. This is fine for individual projects, but for collaboration, getting comfortable with other features, maybe Git clients like LazyGit, and more advanced features like rebasing would definitely help.
Data Structures and Algorithms
- Used in all interviews at this point.
- I’m making a DSA library which will help in understanding how the underlying Data Structures and Algorithms work
Indirect Benefits
Low Level
Ever since I’ve started programming, I’ve wanted to know how the internals of a computer actually work, as programming languages just felt like magic. Over time, I’ve understood more of how languages work underneath the hood, what the OS is and how it works (mostly from switching to Linux — Windows is awful for a programmer), and electronic components like the CPU, memory, etc. The problem I’ve had is joining all of these together for a more comprehensive understanding, so I’ve dedicated a good portion of my studying to this.
Writing an Interpreter in Go
Goes through a step-by-step process of creating an interpreter in Go. There’s a sequel about creating a compiler which continues straight from this book, which ultimately made me choose this over ‘Crafting Interpreters’.
nand2tetris
A course to create a computer from scratch. I would have liked for it to have a physical implementation of the computer, but it’s a great resource nonetheless.
CODE: The Hidden Language of Computer Hardware and Software
Takes you all the way from the physics theory and physical implementation to programming languages.
Mathematics
I truly believe learning a hard topic/subject such as physics or pure maths would only benefit you in any aspect/area you find yourself in. The ability to go through tough and hard problems in a logical manner is a great skill to have.
I’m going through ‘Calculus’ by James Stewart which provides a much more rigorous path to learning calculus than I did at A-Levels and Uni.
Personal Growth
Islam
Arabic
If I want to understand the religion and the Quran better, it’s fundamental that I learn the language it is in. Currently going through the Madinah Arabic Book 1.
Hifz
I’ve been doing Hifz for about 3.5 years. Currently taking a break to focus more on Arabic and revise previous surahs.
Ilm
- Reading books of Ilm
- Lectures