Skip to content

Instantly share code, notes, and snippets.

@renanlage
Last active July 10, 2018 04:20
Show Gist options
  • Save renanlage/e89afd01b87a629bf1a92511b5ee7887 to your computer and use it in GitHub Desktop.
Save renanlage/e89afd01b87a629bf1a92511b5ee7887 to your computer and use it in GitHub Desktop.

Know Your Tooling

Mastering Git

Why use a version control system?

  • Collaboration
  • Storing versions (properly)
  • Restoring previous versions
  • Understanding what happened
  • Backup

If you need further clarification on any of those points check here.

How?
Visualizing Git Playground
Attlasian's Getting Git Right
Git Branching Challenges

Use Linux/Unix as your Development Plataform

Why Linux/Unix?
Quora's "Why do developers like Linux so much?"

How?
Shell e a história do terminal
Digital Ocean Linux Basics
Cornell CS 2043 Unix Tools & Scripting

Get to really know and master your IDE to be fully productive.

Improve your Terminal experience
Zsh with oh-my-zsh + Guake + Tmux
Checkout my dotfiles for configs

Know The Web

Know CS

Algorithms

Why learn Algorithms?
Computer scientists learn by experience. We learn by seeing others solve problems and by solving problems by ourselves. Being exposed to different problem-solving techniques and seeing how different algorithms are designed helps us to take on the next challenging problem that we are given. By considering a number of different algorithms, we can begin to develop pattern recognition so that the next time a similar problem arises, we are better able to solve it.

How?
Computer Theory + Complexity + Algorithms:
Illinois CS374 Algorithms and Models of Computation

Operating Systems

Why learn operating systems?
Because sometimes when you're programming you can rely on your language or framework to abstract away the details of the hardware and operating system. This allows you to solve easy problems that language/framework designers have anticipated.

Other times, you'll be faced with hard problems that require you to roll up your sleeves and mess with the stuff under the hood. Before you can do this, you need to understand what operating systems do and how they work. If you can write this kind of code, there will be far more problems that you can solve.

How?
Udacity Introduction to Operating Systems

Compilers

Why learn Compilers?
Compilers is a microcosm of computer science! It contains every single problem, including (but not limited to) AI (greedy algorithms & heuristic search), algorithms, theory (formal languages, automata), systems, architecture, etc.

You get to see a lot of computer science come together in an amazing way. Not only will you understand more about why programming languages work the way that they do, but you will become a better coder for having that understanding. You will learn to understand the low level, which helps at the high level.

If you're not convinced, read Steve Yegge's post about it. "Gentle, yet insistent executive summary: If you don't know how compilers work, then you don't know how computers work. If you're not 100% sure whether you know how compilers work, then you don't know how they work."

How?
Stanford CS1 Compilers
Build Your Own Lisp (C)

Distributed Systems

Why build/use Distributed Systems?
Think of a sports team. A team has several players; each player has a function on the team. If a player goes down due to injury, the team can replace that player to continue playing. Instead of having one player having to play all the positions at the same time, you have separate players with each performing a specific task. This is essentially a distributed system. Issues are localized and fairly easy to replace in case of a problem.

But the team needs to be very coordinated to score points. This requires planning, strategy and execution. If you had one super player that handled all of these things, you wouldn’t need coordination. So distributed systems needs some sort of coordination to behave as a “team”.

How?
What we talk about when we talk about distributed systems
Four easy reads to understand distributed systems issues

Learn From Everywhere

Programming Bibles (AKA books)

Podcasts (Bus Time)

Articles Read List (1 per day)

YouTube Time

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment