I think it’s painfully obvious to anyone who comes here to read my blog that I have a lot of hobbies and interests. I consider myself something of a renaissance woman. Any time I see something cool or eat something interesting my brain starts ruminating about how I can make this thing myself.
I have slowly come to the realization that I will not be able to do all of the things that interest me before I die. I probably won’t be fluently bilingual, so sorry Julia, my friend in Austria who keeps wanting me to learn the Austrian dialect of the German. I am probably not going to get a black belt in some kind of martial art. Heck, at this point I am pleasantly surprised that I have taken up and enjoy running, considering that I spent the last year in bed with my pugs hiding from the cold and working from home.
One of my multitude of hobbies/interests is working with electronics. I have always been fascinated by electronics and one reason I really got into programming was because I was interested in telling a machine what to do. Electronics, like a lot of other things such as C, is something I have been told I don’t really need to understand to be a great programmer. Actually, I think the more accurate advice was I didn’t need to understand it to know enough programming to find a job. There is a difference.
I have discovered the longer I am working with computers that there is always a lower level than the one I am currently working at. I went into programming thinking C was the lowest you could go. Then I discovered assembly language (which no, I have not succumbed to yet). Now I am discovering electronics.
Electronics, like programming, has something of a learning curve. There are lots of little pieces and components like transistors and DIPs that can be rather daunting to the uninitiated. Additionally, at least with programming you are dealing with text. You can look at a computer program without knowing and programming language and at least recognize that this is something human readable. Look at a circuit board and all you see is the language that Superman’s people used on Krypton. To make things even harder, you can’t debug a circuit in the compiler like you can with a program. Your circuit either works or it doesn’t. These things are incredibly daunting, which is exactly why I am incredibly obsessed with this right now.
I am a masochist. If I get to a point where I feel proficient with something, I feel uncomfortable and uneasy. My brain starts overheating and spinning itself into butter, so I have to find something harder to throw at it to keep myself from having a panic attack. It’s hard having a balancing act of giving my brain enough to do that it doesn’t overwork itself over nothing as opposed to trying to do too much and cracking under the weight.
My current hobby to do in my free time right now is to work on learning electronics. I specifically would like to figure out how to build electronic instruments. I would like to design and build a modular synthesizer in the basement. Eventually I would like to apply the knowledge I have about that to a piece of software to eventually release, but right now I am trying to thread that needle between doing too much and not doing enough.
Do I need to understand electronics to be a great programmer? No. Will knowing electronics help me make more money in the future? Probably not. Could I spend my free time writing an app that could conceivably earn me more money and advance my career? Probably.
So why do this?
Here’s why:
- Because it’s fun. I love doing things with my hands and I honestly find working on software to be a bit soulless sometimes. I feel like nothing I do is real because it exists in the ether. Holding a real, physical component and soldering them together is fulfilling in a way that software development just isn’t.
- I work with robotics. I didn’t have to write the firmware or the interface software to deal with the robotics initially, but it bothers me that I don’t quite grok how we are talking to the robotics. I know enough about the code to deal with it, but on a conceptual level there is still a lot of magic black box voodoo that is happening that I don’t fully understand. I don’t like working with things that work without me understanding what they do. I don’t “need” to understand this stuff to do my job, but I would personally feel more comfortable if I worked through a robotics project on my own and have a mental model for what it is that we are doing.
- I don’t like looking at a circuit board and not understanding how it works. I think a lot of people feel very uneasy around things like programming because they see something that isn’t familiar to them and it frightens them away. I know there has to be a way of understanding how a circuit board works because other people design and build them for a living. Our entire society is built on integrated circuits and I want to know how they work and how to design them.
- It’s never been easier to self teach yourself electronics. Arduino and Raspberry Pi have made working with electronics and programming affordable and accessible to nearly everyone. In the last three or four years the MAKE series from O’Reilly has produced books on wearable electronics, analog synthesizers, and sensors. Sites like AdaFruit make it possible to buy projects designed by other electronics hobbyists. I have received an analog synthesizer kit that I am looking forward to assembling in my basement. I bought conductive thread and smart LEDs so that I can create a wearable electronics project. I don’t have kids and I have disposable time and money. Instead of spending a day playing Nintendogs on my Nintendo DS, I can go to my basement and build a robot that I can spend another weekend hacking.
If you are interested in electronics, here is what I have done:
- Go to O’Reilly and pick up books like this one or this one. O’Reilly has great deals on ebooks if you buy two or more of them. Many of the books in the MAKE series have correlating kits on Maker Shed, which are also somewhat available at Radio Shack, if you like brick and mortar stores. Just doing a kit is not going to teach you electronics, but it will get you comfortable with soldering and putting pieces together. The physical aspect of feeling comfortable touching and manipulating small parts is vitally important and I have personally found when I am trying to learn new things that just following directions and putting something together is a good first step to introduce you to something unfamiliar.
- Invest in a good soldering iron. In fact, don’t stop at the soldering iron. Any time you buy tools, invest in good tools. You are going to be snipping a lot of wires and fighting with your snips when you are trying to make a nice, even back is no fun. It also bothers your wrists and for people coming from a programming background, that is never a good thing.
- Practice soldering! I have done cross stitch for over two decades, so I personally found soldering to be somewhat easy to pick up. I am used to patiently sorting through threads and inserting thin filaments through holes. Let there be no ambiguity on this point: Working with your hands is a skill. You can cultivate a skill by using it a lot. Just because you may not have a preexisting aptitude for manipulating small pieces does not mean that you should give up on doing electronics. I suggest buying a bunch of small soldering kits from Maker Shed and that you just get comfortable with touching and soldering pieces. My first project was a noise maker that goes in an Altoid tin. There weren’t a lot of pieces and it wasn’t super complicated, but just the process of sorting the components and touching the pieces and trying to figure out how they worked together was an invaluable introduction to electronics that made me eager to learn more and to bigger projects.
- Organize your work space. This is the single most important piece of advice I can give to anyone undertaking a hobby with lots of small physical bits. Again, I have a background doing cross stitch. I never got a project done until I started learning to organize myself. I separate each color thread, put them on an index card, and I catalog what each color is. I make a slot for each color along with its symbol before I need them. I got relentlessly organized with my threads and my tools and once I did that I was able to get things done. Keep your space clean and organized. Take care of your tools. Buy as many parts bins as you need and label each and every drawer. If you can, have a dedicated space for your electronics. I have a table in the basement that has my soldering iron and my tools. The projects are all in one place and everything is tidy.
- Be patient with yourself. You might have a natural aptitude for this or you might not. I have found a lot of things I thought I had no natural aptitude for that I was able to learn through tenacity and stubbornness. If you want to learn something because you want to learn it, then don’t worry about how long it takes. If you can accomplish something you thought was difficult after failing several times, just think about how awesome you will feel.
One of my projects was putting together an Arduino shield with a bunch of attachments to things like motors and sensors. I need to spend some time figuring out how to get the Arduino to talk to the board and to make it do things. I got past my initial skittishness around touching and putting together the components, now I need to take the next step of figuring out how to make them work together.
Again, this is a hobby I picked up a few months ago. I would like to spend a lot of time over the next year pushing the boundaries of what I can do with this. I will try to be better about writing up each of my projects on this blog in case anyone finds this interesting.
One reason I decided to do this was because someone told me I had to have an electrical engineering degree to understand how a circuit board works. I don’t believe that. I believe I can learn anything I want to. I think there are a multitude of sources available out there for people with the time and patience to work with them and who have a little bit of money to invest in their hobbies.
I also think there is value in learning how to do something just to do it. I spent a lot of time learning how to cross stitch because I wanted to know how to do it. So far I have not earned a dime from my textile work, but the things I did to discipline myself to learn it have come in handy down the road while learning programming.
Let’s pretend that you want to master making pie. Pie crust is hard to master. You need to develop a good feel for when the dough is too dry or it has been over mixed. My mom has spent forty years mastering how to make pie and she is still experimenting with different things. Mom doesn’t sell her pies and will never make money off of them, but the process of making them and the joy they bring people make it worth it to her to keep trying to make them better.
I think that there is a lot of pressure to spend all of our time doing things that will make money or bolster our careers. I think its important to spend some time cultivating those things, but I am also very Zen in that I think people should do things for no reason other than that it makes them happy. You can’t spend all of your time worrying about whether you are learning the right things. Sometimes you have to follow a passion and do something that makes you happy and not worry about what the future will bring.