navigating your journey in tech
Khalid Lafi
This talk is based on my personal experience, as a reflection to what worked for me. While trying to generalize the lessons learned.
You just started, don’t focus on one discipline.. explore everything, know what’s out there. With time you should dive deeper at the areas that interests you.
According to Paul Graham:
The first step is to decide what to work on. The work you choose needs to have three qualities:
it has to be something you have a natural aptitude for, that you have a deep interest in, and that offers scope to do great work.
You’re about to graduate or you’re a freshgrad
What do you need to do?
Build something, take it through the full cycle. And keep it
running!
Don’t pay attention to best practices.
Just build something and deploy it. You gain have a mental model of how
things work on a very high-level.
Examples:
Now we dig deeper.
What do you need to learn?
You should be able to answer these questions:
My first outage was caused by full disks. Because, i didn’t know i had to rotate logs
Advanced
Programming in the UNIX Environment, 3rd Edition
- Read the first section only.
Learn algorithms and data structures
You have a CSV file containing
start_ip, end_ip,vpn,hosting
192.0.0.1,192.0.0.2,true,false
...
...
...
The file size is 10GB on disk, but in memory it becomes 200GB. How can you read it into memory to serve a function like this
func is_vpn(ip string) bool
Which data structure & algorithm you would use?
Git
Git uses merkle-trees. I explained them here
Learn how the network works, on a high-level
Learn SQL and how to use databases. Pick an RDBMS and learn it, preferably Postgres.
Pick a language and build things in it, practice as much as you can.
Learn how to use Docker
Keep in mind there’s no magic anywhere.. it’s all abstractions made by humans and you can dive deep every now and then to see how it works.
Congrats you got hired!
Software delivery cycle:
Spend time learning the company core business:
- What matters to them? how they make money?
This will be handy when you want to make technical decisions, because you can align what you do with it.
Read a lot of open source code, from different projects you’re
using.
It’s the best way to become a better engineer.
Examples:
Read how other engineers, work. I highly recommened Coders At Work.
Read my post on
Learn distributed systems
Books
Video Course
Learn how load balancing work
Thanks you!
For more questions reach out to me on: