I have mentored many junior engineers in my career. Additionally, I have mentored a number of career changers. In my experience there's a slew of concepts and skills that definitely have come in handy for myself, and others I have spoken with.
In no particular order:
Basic computer engineering concepts
- Interacting with the computer (i.e. shortcuts like copy/paste, touchpad gestures, keyboard navigation)
- Components of an Operating System
- The filesystem
- Programs/apps
- Runtimes (i.e. the executables or frameworks programs run with)
- Source code vs compiled code
- Basic scripting
- Executables (binaries and scripts)
Command line and CLI utilities
- Traversing the filesystem (every tutorial starts with asking you to
mkdir <my_cool_app>
thencd <my_cool_app>
but never really goes into what is happening) - Creating/listing files/dirs (similarly, learning about showing the contents of a folder or file and creating them(
- Executing command line apps, binaries, etc.
- Processes, threads, sigterm, stdout/stderr, exit codes, redirection and /dev/null
Basic Internet/Networking Concepts
- What is a web server
- What is a web page/app
- Lifecycle of a web request or network packet
- APIs/JSON
I can go into depth on each concept individually, and I may in the future add these to an eBook or course, but for now I just wanted to write it down for people to Google individually at their leisure. For many of us in the field, we suffer from the "curse of knowledge" which manifests itself in our course, blog posts and tutorials as glossing over what we feel are concepts everyone is already familiar with, but can prove challenging to newcomers. I hope that with enough empathy we can lower the barrier to entry a bit for career changers who haven't spent their lives interacting with computers and learning much of this along the way.
Top comments (0)