As a CS student during my time in the College of Engineering at UCSB, we were required to take a few ECE-type courses such as digital circuit/logic design. When I first signed up for what it was then called ECE 152A (Digital Logic Design), I was super psyched. I had always been interested in hardware and couldn’t wait to actually start making my own.
Everything went wrong that quarter.
The first thing was that our TA who lead the labs was probably the most intimidating TA I have ever had the pleasure in learning from. No joke, this guy was scary because he was just super smart! We were just intimidated by being afraid to ask any "dumb" questions. >.<
I can vaguely recall one of the labs we had to do for the class. It was an exercise in basically getting used to learning how to wire our breadboards and use the oscilloscope to read in the signals for hardware debugging. Basic stuff 101. We generally had to partner up for these labs and of course, I partnered up with Derek Ho.
The problem with Derek and I was that we had zero wiring experience whatsoever, so we struggled in reading datasheets and schematics. We struggled in using every single piece of hardware available... whether it was the voltmeter or the oscilloscope, we were just simply "n00bs".
Turns out the only way to actually move forward with the project was to constantly ask the TA for help. It got to the point where the TA became very hostile with us with his tone of voice causing Derek and I to play "who’s turn is it to ask [TA]". I can recall one night where we just created a equivalent to GOTO spaghetti code on the breadboard with tons of wires just crossing and being placed over each other. The TA walked over to us and suggested in the sternest voice possible that we should not wire in that manner. Of course, being the newbies we were, we didn't take his advice to heart and just kept going because, you know, at that point, the lab's due date was two days away... and we kind of wanted to uhh... finish it!
Hell broke loose.
Due to the crappy wiring job, we introduced huge potential for various mistakes that could happen when wiring in such a way that makes your breadboard look like a plate of noodles. Unfortunately, the potential for these mistakes turned to reality!
We spent that night up until about 2:00 AM or so doing tearing up all the wires out of the breadboard, rewriting and only to find out we did something wrong "this time", and repeating the same naive process over and over again.
We spent the rest of the time we had for the lab in the ECE lab just trying to get the project done. I think Derek and I lived off of Starbursts and Pop Tarts from the vending machines those few days.
We eventually got the lab working due to just brute forcing the wiring job and from there, labs became easier simply due to one fact. We learned how to use our tools better.
I guess this applies to writing software too. Nowadays we have so many tools to aid us in our development that learning how to use them effectively can give a programmer greater insight in what is going on during debugging and heck, even learning how things really work in the process.
Good times.