10/29/2013— Eric Kolker
Hey readers, Eric here again. Last time I promised some thoughts on how joining a team of webdevs as an EE has been, so here goes.
The short answer is “ethnographic.” I stepped into the world of the web for the first time when I joined Technical Machine, and doing so has forced me to see things from new perspectives as I immerse myself in a new culture. There’s been a sharing of jargon, best practices, and design metrics which has helped us synergize and ship a web-based platform that bridges hardware and software. …Oh, and we learned some buzzwords, too.
The long answer is a metaphor surrounding “it is known,” a quote from Game of Thrones. The phrase is typically used by the Dothraki to inform Daenerys Targaryen that, in their eyes, she’s wrong (Dany, like me, is a minority in a foreign land). In general the phrase pops up in conjunction with cultural, procedural, or aesthetic disagreements, and has the effect of shutting Dany down, forcing her to reevaluate or re-express her beliefs.
Taken in a technical light, the phrase can simply be interpreted to mean “there exists a known best practice here.” However, the tone of the quote also conveys a sense of “no, sorry, you’re wrong, end of story.”
As a newbie stepping in, there’s a lot that I don’t know about the way the web works (as of June, the extent of my JS experience was a page that I hacked together from D3 examples and only ran on localhost). I quickly learned about services, scaling, and callbacks, but also about new syntax, the names of key players in the space, and (surprise) a whole slew of best practices. To my team’s credit, my introduction thus far has been surprisingly gentle. Whenever I encounter a teachable moment, Tim and Jia show me the best practice, squash my ignorance, and eliminate the sting of “you’re wrong, end of story.”
It’s the “you’re wrong, end of story” side of the quote which ultimately guilt-trips me into clarifying why I’m inclined do things a certain way. It empowers me to convey important, often overlooked information in a way that’s easy for my team, and ultimately you, our users, to digest. As the guy who owns the hardware, it’s my job to tell my friends when something’s not right electrically, even if it means an impromptu lecture on why we need to keep that specific type of “big, ugly capacitor.”
I often find myself defending/explaining what I would consider to be the norms of electrical engineering against/to teammates with varying experience in hardware. Analogies serve reasonably well here:
- Integrated circuits (anything more complicated than a transistor, and “ICs” for short) should be decoupled with capacitors,often large ones, for optimal performance (would you want an unstable library as a core dependency?)
- The silkscreen on a board should be informative (some combination of tooltips, helper text, and nicely placed UI elements)
- Schematics should be on a grid (consistent use of whitespace)
- Subsystems should to be placed in certain places on the board (don’t write it all in main)
The list goes on, but you get the idea. (And while I cede that these are ultimately “nice to haves” rather than “must haves,” what kind of reputation would you want to establish and what kind of example would you want to set for your new users and budding community?)
In essence, Technical Machine is closing the gap between two worlds, and I’m the one who’s designing the physical bridges. To do so effectively, I’ve had to enforce best electrical practices, but simultaneously question the rationale for my own ideals as I learn more about the foundations on the web side. It’s not that one culture is better than the other, but rather that it takes time to grok something new and strike effective compromises.