toastom@toastom-tech:~/Documents/"A need for tinkering"$ date -d now %F
2024-03-16
For some reason lately I've had the urge to write. Not sure why. Not sure what about, but at this point my domain name has been collecting a nice thick layer of digital dust. I guess I should finally put it to use in the form of a blog post. I want to turn this website into a place where I can write out and share my thoughts on tech, engineering, careers, and life in the hopes that someone else might resonate with them. Most likely my words will just disappear into the SEO void, but I'm not really concerned about that. Maybe I've been watching too much of ThePrimeagen lately, I don't know. Anyway, let's get into it.
The problem
Something I've noticed recently among my peers and classmates has been a lack of... passion? We're supposed to be engineers, we're supposed to be problem solvers, but I've noticed that some of them get stuck when they come across a problem. That is, they come across a problem for the first time--whether it be in the design of a circuit, working through a bug in their code, or troubleshooting errors in the setup of a development environment -- and they just get stuck. When presented with a problem that doesn't have an immediate answer, many have no idea how to move forward -- or even know what the problem is, much less how to solve it.
This is normal, of course, especially for those in college where the point is to fail occasionally and to get things wrong, but above all else to learn. Troubleshooting can be a difficult skill to build. It requires some familiarity with your field or the technology/tools you're using, but even the most basic ability to figure something out can sometimes be lacking. Why is this?
I think the problem is that some students don't develop their own research skills or an ability to think for themselves.
It's always said that college is supposed to teach you how to think. On some level that's true. However, at least at my school, the engineering curriculum doesn't have you designing something -- really engineering anything -- until the final semester of your degree, in your Senior Design class. If you're a student who goes to class, goes home, does his homework, and goes to bed (and nothing else!) then you won't get any real, practical engineering experience until your last semester. In my opinion this is far too late to play pretend at being an engineer before you're applying to jobs. You'll be missing out on the self-confidence required to design and stick to a solution, simply because you've never figured anything out on your own.
Becoming a tinkerer
Since I was little, I've always seen "using" the computer as synonymous to "playing" with it. It started with video games, of course. Most of my time using the computer in elementary school was spent playing video games. The computer was simply an entertainment device no different from the TV or my Nintendo DSi. As I grew up and got older, however, I naturally moved into the direction of using computers as a tool. I occasionally typed papers in Microsoft Word and made PowerPoints for class, at least as much as an elementary-aged kid would, circa 2010. This would of course grow with the rise of the 2010s' so-called "21st Century Learning Skills" pushed in class. But it was always fun to learn new software and figure out all that I was able to do. Even as I dipped my toes into the world of programming towards the beginning of middle school, I could never separate that feeling of "using" the computer as being anything different from "playing" on it.
I think a main component of this mindset that I was able to develop, especially early on, was that nothing was every truly "work" for me. Not that I'm some naturally gifted and talented programmer that has never run into anything I couldn't solve -- believe me I have. But I was able to experiment. I was allowed to have fun with it. I played around with different programming languages, libraries, and technologies early on, with no requirements or deadlines set by some upper management. I could find what I liked. I had no one looking over my shoulder, making sure I was on task -- it was all up to me to try something out, fail, and learn. I allowed myself to branch out and generalize my skills, with (almost) endless time to research, watch tutorials, and read documentation. Rush home from school, start a new project, fail, get distracted by a new one, fail, look something up, fail again, and learn. THAT was my daily routine. And while unlimited time is certainly not the case for me anymore, especially in this semester as my Computer Engineering degree comes to a close, I think this approach should not be exclusive to kids or those without responsibilities. At work you'll have less leeway, but adults can play, too.
Developing the tinkerer's mindset
def. tinker verb.
To make unskilled or experimental efforts at repair; fiddle. To manipulate unskillfully or experimentally.
- From The American Heritage® Dictionary of the English Language, 5th Edition. link
Becoming a tinkerer is something you can learn, and in my opinion it's just a mindset. Maybe it starts with a degree of naivety, a somewhat unfounded confidence in one's own ability, Dunning-Kruger-style. You don't know what you don't know, therefore you can forge ahead on an idea without fear of the project's difficulty. I mean, how hard could it really be?
In my opinion the mindset is this:
- Idea
- You come up with an idea for a project or for a problem to solve, but don't know much about how to solve it.
-
Research
- You start researching and fiddling with ideas, experimenting with different tools, libraries, scripts, and hardware, depending on what the project is.
-
Struggle
- Eventually something doesn't work right. The tutorial has a hole in it. You're getting an error that wasn't accounted for. Stack Overflow answers are just shy of actually getting at what you want.
- You hit your brain against the wall on a problem, but now you're in too deep to quit. Return to the Research phase, struggle, rinse and repeat.
- From here, my own stubbornness tends to take over, and that momentum can carry me far enough to figure out most problems that come my way.
This is the cycle I typically fall into. Even if the project is never finished, or if I've found out it's not something I'm interested in anyway, I've learned something. That research-and-struggle loop is critical for developing those critical thinking skills and using them to determine the best ways to go about a problem, to choose which resources to use and whose opinion to listen to.
Conclusion
No one is competent when starting out on anything, and on some level it's expected that you'll need your hand held at first. But a good engineer (and a great engineering student) is able to do their own research, and especially when stuck come to others with what they have already found out. If someone can at least point themself in a direction on their own (even if it's in the wrong direction) then it can greatly reduce the burden placed on project leads. If the managers or project leads have less pressure on them to walk the new, inexperienced guy/gal through the diagnosis phase of problem solving, it frees them up to worry more about complex, higher-level problems and allows them to actually lead.
A somewhat childlike, experimental approach to learning is also how I believe that one can discover their true passion. You can find out what works and what doesn't, what you like and don't like in the wide world that we call "Tech." You can develop a stubbornness or resilience when working through problems, and I believe that this approach is the only way to build that true, unbreakable self-confidence in your ability to come to solutions alone.
Go out and tinker.
-- toastom
small footnote about a line in the intro paragraph
This was originally written for my other website, https://toastom.tech. That line about "digital dust" was referring to that domain, which will at some point (hopefully soon) point to this site instead. rip.