A Brief Outline of Survival Skills in CS

Posted by shengliangd's blog on September 8, 2021


  • Writing Dockerfile to build your environments
  • Enabling GUI applications
  • Enabling privileged operations inside a container, e.g., read/write serial ports
  • Mounting your host directory into containers
  • Exporting and loading images/containers


  • Learning one of the most powerful IDEs, Emacs/VSCode/Jetbrains…
  • Tracking declarations, definitions, and usages
  • Tracking code changes and managing your source code versions
  • Editing files remotely
  • Debugging

Debugging networking problems

  • Ping
  • Checking routing tables
  • Setting up IP addrs

Debugging environment issues

  • Identifying important error messages from bulk outputs
  • Resolving version requirements without messing up everything else (e.g., with venv, conda, docker, etc.)

Shell operations

  • Redirecting input/output to files
  • Efficiently sharing files across your experimental machines (e.g., with NFS)
  • Pipelining commands
  • Using environment variables


  • Writing intuitive and neat code
  • Coding with understandable comments


  • Googling