Management Isn’t a Bad Word

I have worked as a software developer for different people, with different styles, and different goals. I’ve loved managers, hated managers, and everything in between. I grew to be cynical about managers and the word “management”. The idea of a person who was a “manager” of programmers-as-people became somehow a role fraught with danger, both for the people who would report to the manager, and to the person in the role – who surely was a respectable person before taking the mantle. The concept of a manager seemed one to distrust. I’d say that this feeling is prevalent among software developers.

In November and December of 2016, I had the pleasure and honor of stepping in as the Interim Director of Engineering for Springbuk. I was sending myself into danger, knowingly! I thought that my experience co-directing Fretless, and leading community groups like Indy Hackers and Indy.rb, would provide the knowledge I’d need to step up and perform the role well. After all, I had been working with the Springbuk team for 10 months in a senior developer type role. No sweat, right?

Wrong. Surprisingly wrong! Up until then, I did not appreciate the pressure of being a manager. Being the boss of a team of 10 or so at a startup that is trying to move quickly, satisfy customers, please investors, etc. involved doing much I had never done previously. In fact, they were probably two of the most stressful months of my life. I learned a ton, as well as put myself on a path to learn more. I want to share my experience, what I have learned so far, and the resources that have put me on the path to learning much more.

Keep reading »


Reasons I Like JS Again: ES6

keep-calm-and-hate-javascriptI hated JavaScript. (See my last post.) Hated it – even as my colleagues at Fretless, Davey and Dave, wrote copious amounts of the stuff using various frameworks, and then began teaching week-long JavaScript bootcamps at ElevenFifty.

Oh, I still wrote it, but I wrote it with the attitude of a king condescending to shake hands with his lowliest of subjects. Instead of donning a royal glove, I clothed myself in sneers and vitriol. When Andrew, David, and Missy at OurHealth asked that I stop adding CoffeeScript files to their project, I managed to merely frown. (And then I went to Vim and converted the piece of code I was writing to plain-ol’ JS. Hey, man. Sometimes you appease those with whom you are working on a project. It’s the right, respectful thing to do. … I do think I left one .coffee file in there for them to remember me by.)

Thankfully, JavaScript, the language, receives updates and improvements, much as any other active software project. This June we’ll see the latest release of ECMAScript, the standardized language of which JavaScript is an implementation. It is called ECMAScript 6, ES6, or ES2015. It features what I see as vast improvements to the language. Though much maligning of JavaScript is due to misunderstanding, its current standard still suffers prominent warts that make every day use of the language frustrating for many. ES6 eliminates many of those frustrations, making JS more enjoyable for every day use.

I’m excited to tell you about some of the new features.

Keep reading »


React.js and Flux Made Me Like JS (Again?)

Chimera-from-Greek-mythologyI made it known to those who work with me regularly – whether they wanted me to or not – that I hated JavaScript. Like everyone else, I had written jQuery-heavy monsters of knotted, warty code fit together like a failed experiment in creating a chimera. You know what I mean – all the horror of combining a lion, a goat, and a snake, but with obvious seams and too few legs. I had written Backbone, Knockout, and dabbled in others on the front-end – with good intentions and a positive attitude, I swear. I wrote a Node.js app in an early version of Express. All of these things piled atop one another and led me to the conclusion: I hate JavaScript.

I more or less gave up a couple years ago.

I recently began working with Kyle Shipley at Health Pro on an internal project using React.js. The framework was released well after I threw my hands in the air in disgust at the state of JavaScript and its ecosystem. It turns out a lot has happened since then, and it’s been overwhelmingly positive. Though I will always enjoy making jokes about a new JavaScript library appearing every second, I now see the quality and robustness in the community that I was missing before. React is a huge part of that – for me.

There are a few primary reasons React has me so excited to be writing JavaScript again. I am not going to talk about what React is, what it does, etc. You’re way smart, man. You can follow links, and probably search on the World Wide Web when other means fail you. I’m just going to tell you what I like about React.

Keep reading »


Moving into a Code Base

Early this year, I moved into someone’s code base, and within the week moved into a house. Neither were new, but both were new to me. At the time, I thought little of it. I tend to separate my personal world and my work world in my mind, if not publicly. As I settled into the new code base and the new house, though, I begin to feel like my work world and my personal world were almost mirroring one another.

It seemed like cold snowflakes had been falling for weeks or months. Of course, the day we are to be out of our old house, it was about 38 degrees Fahrenheit, and raining. Cold rain. I hate cold rain. Nonetheless, by the end of the day, we had all of our belongings in our new house – cribs, beds, couches, end tables, dining table, coffee table, lamps, plants, stools, tools, etc. It never matters how much stuff you get into a new place. It doesn’t matter if you’ve had all of that stuff long enough that it smells like you. It doesn’t matter if you lay out your new living room just like your old living room.

In the end, it still feels like someone else’s house.

As I said, it’s fairly similar dropping into an existing code base for the first time. Sure, a lot of structural aspects are the same. There’s a garage, bedrooms, bathrooms, a kitchen; and those rooms function the same as their counterparts in other houses. This code base had mostly the same directories as other code bases I’ve been in. Still, once I got my database set up, the project’s various processes started, the tests running, it still felt like someone else’s code base.

I’ve a yellow labrador retriever, nearly nine years old. She doesn’t much like having to stay in new places, and she hates hardwood floors. She spent the first few days sniffing everything suspiciously, and whining. When I (and the weather) let her spend some time in the backyard, she ran around like a puppy. She found sticks to run around with and chew. She chased people walking the sidewalk with their dogs just on the other side of the fence. When she came inside, she sniffed and whined some more, but with a bit less feeling.

My lab did two things: she explored as much as she could as often as she could, and she found something she liked (the backyard) and made it her own. I still have to re-gather the sticks into a pile every week. It’s obnoxious, but I’m glad she’s happy.

We can do this with our code. Try to look at all of the code. List the contents of the more important directories. Read some of the code from the meaty files — the ones that probably hold the domain knowledge. Try to grab a healthy-sized feature to implement. Grab that stick, make it yours, run with it, but don’t neglect sniffing around the rest of the code every once in a while. It can be difficult to truly read every commit, but go back and list directories, and read through those meaty files again.

I’m writing this in my living room, and it truly feels like my living room. I know where all the outlets are (wherever it would be inconvenient for our furniture, that’s where). I know where the floor squeaks. If you were to turn out all of the lights while I’m on this couch in the middle of the night, I’d be able to make it to my side of the bed without breaking a toe.

All of that, and I didn’t even whine that much. Unfortunately, the significance of that is totally lost on my dog.