I’ve always been afraid of losing all my technical skills while managing.
The primary reason is I don’t think I can confidently create software by giving up coding completely. I won’t understand the latest technology, I won’t be able to guide decisions, and I will naturally forget how long things take to build. Another reason is I may consider return to an individual contributor role. Staying technical is a good hedge.
One camp of management suggests you completely stop coding once you become an engineering manager. The other camp encourages you to stay technical.
Programming allowed me to enter the software industry and then transistion to management.
Now I’m expected to manage and not write as much code. I’ve seen engineering managers make bizarre decisions or ask strange questions. I understand there’s only so many hours in a day that an engineering manager can spare, and coding often goes out the window. I don’t find it easy to sit down and code after a draining day of meetings.
I’ve also been guilty of bothering an engineer with a dumb question, “Why can’t we do X?” And I eat my words when my engineer gives me that look, “What are you saying?”
Or I harp on the wrong details. “Why is the form validation for emails not working?” when I should be asking when we can ship a prototype. My whole team would give me that look. Why did I even blurt that out? My question was irrelevant to the discussion.
For starters, I should avoid talking whenever possible. Eventually how do I phrase things correctly and avoid wasting my team’s time? I could sit there and think in my head until something reasonable pops up.
Here’s another way. I’ve been working on a system to maintain my technical skills, and here’s what I’ve come up with so far.
Assign a question that can be solved by tech
Take a few minutes to frame a question. This could be anything like “Should I bring my jacket today?”
Let’s break that down.
When do I need to a wear a jacket? Well, when it’s cold.
When is it cold? For me, around 65 degrees F. How do I figure out what the temperature is today?
This simple question leads me to finding the right API for San Francisco weather. Then I’ll write code to parse the results and determine if I need to wear a jacket based on temperature thresholds.
I find this exercise useful in asking a technical question to determine requirements.
Let’s try another example. I wanted to know, “Who’s the most productive user on Hacker News?”
I immediately had follow up questions: 1) What did I mean by most productive? 2) Is there a time frame?
My initial project was to find the user that posted the most amount to the Hacker News “ShowHN” in the previous month.
Exploration
I always forget how much prep work is required to get a project off the ground.
Since HN ShowNew had the info I needed, I started writing a HTML scraper in Go. I picked Go because I do have a few projects in production that are written it. Go wasn’t easy since I had to research the libraries and how to use them. If I used Ruby with Nokogiri or Python with BeautifulSoup, I would have finished this part in no time due to prior familiarity.
I got to see the tradeoffs of using a new language that might not have all the 3rd party library support ready.
I eventually found out Algolia had the info I needed through an API.
I didn’t have to reinvent the wheel with Ruby or Python or Go. After all that exploring, I just needed to call a JSON parser. This taught me a lesson in looking for APIs first before attempting to scrape a page. I’ve made this mistake before – It’s good to have a reminder on a side project.
Results
Looks like for the one month period, there were two people that posted 7 times. tlongren takes the cake for most productive user for a month. sidi’s real score is 3 since this user submitted the same project several times.
I was curious about who gathered the most points in that month. After a few changes to my code, it’s greenwalls with 1009 points. The project is called Glasswire. Given all the recent security breaches, there’s no surprise why the project was so popular.
My code is here for reference.
Recap
With one side project, I could take this in many directions:
- Frontend to allow others to explore the data
- Switching the backend to Elasticsearch for complex queries
- String similarity algorithms to detect similar posts
- Run this project over a year. Warehousing and maintenance come to mind
The possibilities keep growing, and starting with one simple question I can have more than enough to play with. This helps my day job (yay synergy) and hopefully I don’t sound crazy discussing technical decisions around my engineers.
This can help limit the scope of projects since I’ll have a better idea how to break down a project and avoid bolting on more features. I will also remember how painful programming can be and how to create realistic timeframes.
Try this out and let me know.
Leave a Reply