What a ride! In just a few chapters, we've gone through so many concepts. You now have a foundational understanding of:
- the terminal, shell, and the other terms used for them
- REPLs and one programming language distinction, compiled vs interpreted
- the Linux file system
- variables!
- a whole assortment of terminal programs you can use as building blocks
- how to customize and personalize your terminal experience
- writing more general shell scripts
While you're still a ways to go from being a terminal master, you should have enough knowledge to pick up a book on programming and focus on the programming part, without getting too bogged down in the often-underexplained bits about installing and commands and whatnot.
What's Next?
Before sending you on your journey, I'd like to offer my perspective on a common question: what programming language should someone try first?
The answer to that question, like so many others in this wonderful, frustrating life, is: it depends! That's not very useful though, so to expand: it depends on what you'd like to do with programming.
If you'd like to dive deeper into Linux, operating systems, and how they work, I would recommend looking into: C, Zig, or Rust. These languages are considered systems languages because they're well suited for writing, well, systems! They'll have a steep learning curve, but a lot of concepts in that learning curve will make you one hell of a programmer.
If you'd like to work on machine learning and AI, I would suggest either Python or, for the more adventurous, Elixir. You should also learn some statistics, as AI and machine learning are, in essence, gigantic statistical models.
If you'd like to work on mobile applications, you should look at Kotlin for Android, or Swift for iOS. There are technologies that allow you to develop for both simultaneously, such as Flutter and React Native, but in practice they are not perfect at bridging the gap.
If you'd like to work on web applications to build SaaS products and other web experiences, you may prefer more "complete" development toolboxes such as Ruby on Rails, Elixir Phoenix, or Laravel (PHP). There are also many Javascript frameworks such as React, Vue, and Angular that have been used in countless web applications today.
Lastly, if you're like me and you're starting to learn programming so you can make games, the good news is you have many more reasonable options than I had when I started! If you want to do everything from scratch, it's hard to name a better language than C or C++, but only because of the ecosystem for game development.
If you'd rather have a complete toolbox with a graphical editor and a wealth of other fantastic resources, look into game engines like Unity (uses C#), Unreal Engine (uses C++), or Godot (uses a custom Python-like language called Gdscript, but can also use C# without much setup). All of those engines are free to get started with, which is another advantage for aspiring game developers today!
Final Plugs
If you haven't already, I'd appreciate if you signed up for my mailing list, where I'll post updates about other things I'm writing, announce upcoming books and courses, and recommend learning resources for all kinds of aspiring developers!
If you have questions, comments, or suggestions about the book, please feel free to message me on Twitter or email me at [stephen.hara@stephenhara.com]!