You said> How did you get started on the "make something neat" part? > I can only make useless academic-like stuff or baby-tier fun stuff.
You are at a cross roads. There are many choices for interesting projects in advanced subjects. What you choose is up to you.
I would consider what you are interested in, as well as what you already know and what you are willing to learn.
Here are just a few of them.
1) Learn and study code optimization.
Not exactly relevant for everyone but for some niche jobs, often important jobs - like working as a software dev at somewhere like Google - where there are large scale servers or super computers - or for specialized contexts that you might find in the defense industry - it will be relavent.
Going down this path involves learning a lot of additional theory - as you go deeper, it can be mathematically complicated — like optimizing execution time for computation heavy stuff like machine learning algorithms or advanced signal processing algorithms for real-time sensor fusion.
2) Get a raspberry pi or similar electronic sets. Get some motors, sensors, etc. maybe a used/old FPGA if you have cash and time.
You can find some of this stuff for free at a university but you can’t take it out of the lab. Otherwise consider buying it used on a site like Amazon or eBay. If you want to go full cyberpunk — try scavenging parts from broken or obsolete machines. Then build stuff - anything really. This is the hobby electronics/robotics route.
Fun, cool, interesting career options, and somewhat beginner friendly. There are a lot of good tutorials online for this.
Getting into the finer points of it will likely require you to learn about some basic electrical engineering theory, enough knowledge of hardware to cobble stuff together.
If you want to go far - like highly coordinated movement, maintaining stabilizing in turbulent conditions, high speed navigation, etc. you will have to get out the math textbooks again - physics and control theory - possibly signal processing. But that’s for building your own drone aircraft or fully autonomous vehicles, or other fancy stuff.
C) Cybersecurity/Hacker Route.
Learn about the fine details of computers and programming. N.B. — you can’t learn hacking directly perse.
Rather you learn the ins and outs of computers so throughly you can find mistakes in the design, which you use to bypass or subvert security boundaries.
This means learning a lot about topics like Assembly code - basics of hardware architecture (at a conceptual level) - code obfuscation, becoming a master of disassembly and debugging, learning about how operating systems work in detail, analyzing code from executable binaries, and learning how to use the “cyberanalyst’s toolset” : different specialized types of debuggers - different tools for running virtual machines and sand boxing.
Advanced topics include side channel attacks - networks and communication protocols - and cryptography (digital signatures, secure hashes, cryptographic algorithms and various attacks against them).
I only have a limited knowledge of this stuff and it gets intensely technical.
There are great
employment options if you really master this stuff.
Get payed hundred of thousands USD to help protect corporate giants from Nation-State hacker groups.
Work in the highest levels of your countries Intelligence Services to steal valuable secrets from hostile nations or hunt down Pedos, Terrorists & Organized Crime.
Hack the Gibson and become 1337.
D) Back End Web applications and Database stuff.
Be careful - this stuff might become mostly automated in the near future at which point you will be a lot less valuable. It’s already happening to some degree.
Beyond that, it pays well but it’s painfully boring, at least from my experience. You can get into to some interesting theory about database design- optimize for different aspect of performance or storage, but… I never found it compelling.
I would pass on this.
E) Data Analysis / AI / Etc.
This is the Math route - learn lots of theoretical math / statistics and eventually become a master of machine learning and other fancy algorithm stuff. You would greatly benefit from learning B.D. level statistics if you want to teach yourself. There are 2 major pitfalls here that make me tear my hair out in frustration. First
Virtually anybody can learn machine learning at a basic level. Many programmers/engineers/scientists will learn about it at a intermediate level. But the enthusiast/casual learner
bs only goes so far.
If you wanna work with the cool kids, on the hottest projects, in the top places, getting payed the big bucks - then focus on mastery of relevant math/stat theory. It’s a long term goal.
This is hard for many - myself included. So we try to get by learning as little as possible.
That means trial and error, rules of thumb, google-fu, and applying new techniques based on someone’s recommendation without pausing to ask why. You will hit a brick wall when you attempt to apply what you “learned” in a career setting.Pet Peeve #2Because there is so much hype and no academic body to standardize terminology and curriculum — corporations and “gurus” are inventing bs buzzwords that mislead newcomers and rebrand old math as their own state-of-the-art arcane inventions.
Avoid this by starting with the basics.
Try to work through an intermediate level statistics textbook.
You’ll want at least
the theory behind the hypothesis testing, tolerance tests, moment generator functions, and theory about “estimators”. Ideally - ANOVA, basic clustering theory, markov chains, and maybe some basic information theory. Also consider covering multi variable calculus. If you are an overachiever/math whiz - introductory abstract algebra/real analysis will be quite valuable as well. (Although I haven’t covered it yet myself)Avoid random internet guides/tutorials.
I cannot emphasize that enough. You will waste time doing activities that give you the impression that you are learning quickly but actually it’s just oversimplified concepts and misleading explanations.
All of it you will have to “unlearn” later.If you want to learn some good quality, beginner friendly introductory material without jumping into directly into math textbooks
- I recommend Khan Academy, 3Brown1Blue on YouTube, and legitimate academic resources like MIT OpenCourseWare, Coursera, etc.
Other stuff is generally rubbish and should be treated with intense skepticism.
If you spend a few years
studying patiently, without rushing or cutting corners, that’s when you rise high enough above the trend-chasing masses that you can stand out
and make a worthwhile career out of it.
F) The interdisciplinary STEM path.
Learn about a STEM field and write useful software based on that knowledge - like simulations and other sorts of numerical analysis tools.
I myself like this idea and occasionally sketch out ideas for small simulation projects - I have one that I am currently working on. I will post an overview of it below to give you a sense of the process that goes into it.
G) Network specialist
I would like to say more about this field - but I myself do not know all that much about it as I haven’t covered it yet in my curriculum - so my knowledge is just some general concepts.
Stayed tuned for future developments.