The need to learn hardware

I was working to fix some Joy-Cons that our dog decided to “modify” with her teeth, and remembered how many developers I’ve met through out the years that would be uncomfortable with how to handle hardware. I think that there’s a lot of room to improve in that situation.

Okay, you’re a software developer. You’re self–taught. You’ve learned the gits, and the codes. You’ve learned the full stack, frontend, backend. Created your first API and created your first application. So what’s next to learn?

My proposition, learn hardware. Study how keyboard strokes are converted to machine–language. Study how processors and RAM and SSDs/HDDs work with each other. Learn their physical limitations. Then learn networking; Learn how addresses work and DHCP and the path from the packet leaving your computer all the way to the target server and back. Learn why the command (tracert) can be useful when debugging.

Hardware knowledge isn’t just important for the sake of being able to replace what’s broken, it’s also a good idea to code with the hardware in mind. Imagine architecting a new app, and not knowing how much throughput you have available with the target hardware you’re working with. There’s a difference between hardware that can handle 5.0ghz vs. 2.4ghz networking. So does that mean it’s better to more local calculation? How about knowing that you only have a limited amount of RAM? Is that something that you should worry about?

An actual example of where to know what would be best, would be a standard interview question my buddy used all the time, “Write code to calculate the sqrt(2)” And most interns would look at this and write recursive code. (NOTE: This interview is working on DB heavy calculations. Optimization is always a priority.) So he asks again, “Can you write that code in a more optimized fashion?” What you have to understand is that, recursive logic is heavy on memory, and when dealing with optimizing logic to serve faster, memory limitations can really get you. The answer to the interview question, is to actually rewrite the logic without using recursive.

A more useful way convey this is tree traversal. If you need to traverse a tree in reverse order, people would say to use recursion. But if you don’t have the luxury of the excess memory needed, you could also do this without recursion.

Understanding hardware should help guide the architecture of the software you’re trying to create.

Oh and if you need to fix your own joycons, check out the link above for the longer version of this post on my blog (link in bio), and links to video tutorials and hardware I used to fix my joycons.

#programming #programmer #coding #coder #programminglife #programmerslife #coderlife #softwaredeveloper #developer #development #developerlfie #devlife #softwareengineer #softwareengineering #informationtechnology #webdeveloper #beginnerdev #dev #developers #learntocode #programmerlife #javascript #worldcode #fullstackdeveloper #backenddeveloper #mobiledevelopment #freelance #peoplewhocode #code #web #computerengineer

Joycon fixing tools

Joycon vid

Reach Me