Over the weekend I continued updating vote.ctnewsjunkie.com which is the voter information site that I launched it with CTNewsJunkie two years ago. The site began with the idea that we wanted to provide a utility for people to find the candidates running for office and then read surveys that these candidates would fill out. No other media outlet has attempted to compile information about all the candidates running for office in the state, nor interview them all. We have learned a lot from doing this over two years.
The first is that getting candidates to fill out surveys is challenging. Our main tool is an email list we have of all the candidates. We send them information including a login and links to the surveys. From their feedback we learned our login flow was a bit confusing. So over the weekend in addition to providing links to the candidate profile we added a link to the survey itself. Now as long as a candidate manages to login (whether from our email or a password reset email) they will be able to access the resources we need. We also removed some confusing elements of the login page that were causing people to try and sign up for a new account.
The second is that there is a lot of back end work in making an app flexible for future elections before one time use. Our two years of experience uncovered abstractions that we did not see when we first started. However I do not regret waiting this long to implement them. While it was a bunch of work, we learned so much more from implementing the basic case and putting it out there than we would have from over-engineering the first version.
Yesterday I went for my last long practice run before the B.A.A. Half Marathon. It was an entirely different experience from the first practice run a week before then. The difference in that experience translated into a material improvement in my pace. I went from an 8’34” pace feeling miserable to an 8’04” pace ending feeling comfortable. I learned an important lesson: fuel matters.
Before the first practice run I consumed waffles which did not at all sit well in my stomach. I ran the whole run feeling as if I wanted to vomit. I was in pain and it weighed me down. The second practice run I scrambled some eggs, ate some nuts, and had a Clif gel before and then during the run. My stomach was fine. I think the magnesium in the nuts aided in warding off cramping. It was an entirely different and enjoyable experience.
Fuel matters off the race course as well. As I have scaled back my caffeine consumption I learned how different my energy level can be throughout the day. My mornings are highly productive. Late afternoon is low energy so I try to sequence my work to match it. I like to dig into big programming problems of writing tasks during my morning hours and then reserve meetings and testing for afternoons. The less energy I feel the more important it is to have things clearly enumerated in our issue tracker, so if things are not enumerated in there then I will spend time re-syncing it. Sticking with activities that align with my mental state makes me more effective.
One of the biggest challenges I have seen in the development of technical projects is finding good product management talent. Product managers can have different roles and responsibilities depending on the organization. However they are generally responsible for helping the team build the right product. They typically do the translation of user needs into tasks for software developers. They often also serve as product owner and manage the work of the development team as well. Good product managers have technical and people skills, which is why they are hard to find.
Many product managers come into it in the crucible of projects. A software developer with people skills is nudged by management into becoming a product manager. Developers are product manager adjacent and work with them almost daily so it makes sense that at least some would acquire these skills. In an organization without product managers a general manager often discovers they are a product manager but have not been given training in this discipline. These are both imperfect paths.
The challenge is that many organizations lack junior or entry level product management roles. In an ideal world an organization would hire people with expertise in product management and then have them teach other people how to do it so that those people can take the lessons and best practices into other projects. There is clear demand for this sort of role. At Code for Boston I have seen an increase in the number of non-developers that have expressed interest in being a product manager but a strong aversion to being thrown into the crucible to do it.
Solving this problem is important because product managers play an important role in the development of digital products. Forcing developers to be product managers leads to its own pile of problems and sending folks without product manager experience into the crucible is an expensive way to train people in this discipline. The tech industry needs to cut a better path.
As a software developer one of the things I have noticed that my peers are passionate about are their tools. There are always new tools. Fancier tools. Different tools. Sometimes the tools are generic. Sometimes the tool is a new package manager or programming language to use. While I have a set of tools I use and I love them, I am not nearly as passionate about my tools as I am about building software for non-software people. Some people are passionate about making guitars, and others are passionate about making music.
One consequence of this is that I generally do not find learning a new software language or tooling to be an exciting activity. Many of my peers find the tiny changes and differences in software languages and tools to be interesting. They love learning a new language or tool for the sake of exploring it. I know this feeling because I used to have it. However now that I have a toolset that I love and use I tend to view new or other tool sets as a barrier to me making my products. My barrier for feeling like a new technology is worth it is now much higher. Unless the project is integrating with a legacy application, a new technology better bring something compelling to the table.
For the next few weeks I am following the B.A.A.’s recommended training schedule for my upcoming B.A.A. Half Marathon. That meant a long ten mile run on Sunday, a day off yesterday, and then somehow fitting in a five mile run on my normally packed Tuesday. Overall it was a rough morning for me.
While I went to sleep at a decent hour to wake up early at 6 a.m., I woke up and was definitely a bit dehydrated. Unfortunately I failed to realize that and fully hydrate myself ahead of time. That meant going out and running right away was much more painful mentally and physically than normal. On top of that it was extraordinarily humid out. It was like breathing soup. A mile or so in I realized this was not going to be a record nor a good run, I was just hoping to put in some base miles.
While my goal was five miles I had to give in after three. The breathing was tough and clearly my body lacked the nutrition it needed. It really sucks to do that but the reason it is called practice is because it is learning experience. This was not my first early morning run but it was one where I did not have the fuel I needed to accomplish my goals. My body did not have the hydration it needed nor the nutrition it was used to. I was fighting headwinds the whole way.
The good news is now I think I know how I can survive this more easily next time. Besides hopefully being more acclimated to the earlier hour, I ordered some Clif Gels with caffeine so that my body has the caffeine it is used to along with some nutrition. I will likely put some time in to consume more water before I go out and some Gatorade as well. If you’re going to do something tough, anything to tip the scales in your favor is worth trying.