Stephanie Gredell

Which question is more important?

I’m in the middle of reading Seven Languages in Seven Weeks. Purchase it here.

“The question isn’t ‘What are we going to do?’ The question is ‘What are we not going to do?’”
— Ferris Bueller

In an ever changing world where companies try to be innovative and progress in their business, the culture will certainly change as evolution happens. If you remain at a company for a significant length of time, you’ve probably seen this happen.

In my experience, these are some lessons I’ve learned:

  • Things will change. Process will change. Values will change. Priorities will change. People will change. Work will change. Change is the only constant.
  • If you are unable to adapt to change, you will likely not survive.
  • Flexibility is king.

As we adapt to new environments, processes, people or values, the quote strikes me as “I will do what needs to be done for the success of my team” but I’ve never asked myself “Is there anything I wouldn’t do for the success of my team?”

Or better yet, will there be anything my team won’t do for the success of the company? Or is there a process my team wouldn’t change because as a group, we feel strongly about it?

Do managers ship code? Do they ramp new features? Do they tell the oncall engineer when to deploy? Sure, in some companies, they do. In some companies, they don’t. In places where this does happen, the managers should be aware of all the things going on and hopefully, they know the risks involved when they make their decisions. However there is the other perspective where they are supposed to be people managers and it can be seen as overstepping boundaries. I don’t think managers being hands on is bad nor do I think it’s bad if they’re hands off and trust in their team to do the work and make the correct decision. I think the perception of either side depends on the understanding of boundaries and knowing what to expect.

It can be the same sort of thing when it comes to engineers. We all have our limits but we strongly consider the things we will do or ideals we will hold. We automatically assume that if we define the things we will do, it implies the things we won’t do. But is that really the case?

I think teams often have unspoken boundaries and I didn’t realize until recently how problematic that is. Because they’re unspoken, they’re often assumed and when the moment comes where those boundaries are crossed because of a lack of understanding, there is conflict. When there is conflict, we talk about the things we will do to fix it. But what about the things we won’t do?

It’s often easier to answer the question “what will we do” because the answer is a much smaller list of possibilities than “what will we not do” but I think considering at least both sides for even a small moment could add a lot of clarity going forward. I think if there were more clarity around the things we won’t do, less conflict will come up and the things that we will do will become easier to navigate around.

Simple analytics with CSS

I’m always fascinated about what is achievable without Javascript. So when I was reading this article about how Bear Blog does analytics with CSS, I decided to do my own experimentation. The concept here is to use css to trigger certain endpoints by using properties that require loading an image (or something).

To do this, I spun up an ExpressJS app and created a simple endpoint that started out with just outputting certain params. I kept it simple in the beginning as I just needed a feedback mechanism for the requests my CSS was making. If I were to use this somewhere, I would need some sort of data store to persist data. But otherwise, it would be quite simple.

The next step was to make the request look legitimate. I made myself a 1 pixel transparent dot to send back so that whatever image property I chose, the browser got this pixel back. Yes, this felt a bit old school to me but I gave myself some grace knowing I wasn’t hiding an image tag to load this dot.

I first tested on my local dev environment and then I used my phone to see how it worked in a mobile environment.

Here are some of my learnings:

  • It’s great if all you need is some simple page views tracking and you’re not doing a single page app (though if you’re trying to avoid javascript, that wouldn’t be the case anyways).
  • It has limited ability to do click tracking by leveraging the :active on most elements. I didn’t want to go with :hover because I wanted the same behavior on mobile and desktop. While :hover works for mobile taps, I don’t want tracking for anytime a mouse hover occurs on desktop.
  • There was one downside to this method of tracking which is it’ll track each click/interaction the first time but since the browser has it loaded and cached, it won’t do it the second time. I know you can hack this with some javascript but I wanted to stay on the pure CSS route.

The thing I enjoyed the most about this was that it was really going back to basics. In a world where rendering a whole page using Javascript is a common thing, it’s nice to be able to just do some basic simple things and achieve a lot more with greater simplicity. Will this solution work for everyone? Probably not. But will it work for a basic website that just needs to see basic trends? Likely.

You can play around with the code I hacked around with by checking out this repo. It went a bit further than what I described here but you can get the general idea if you wanted to build out your own analytics app in Node.

Who is on your team?

I’ve been listening to Leading Without Authority on Audible. Purchase it here.

When the author mentions “team” here, he doesn’t mean organizational structure. Instead, he means who are the people that are relevant and can help you accomplish your goal. These are the people you want to build relationships with, get to know, and build trust with.

I can’t say that any of the ideas in this section were new to me. I learned a few years ago how important relationships were. I’ve also told other people that if you want to improve, you need to find a person who you respect and look up to that can be brutally honest with you with feedback on things you can improve. The most important thing is that you actually do care what they think despite everyone else telling you not to care about what everyone thinks of you. Being receptive to how you are perceived is important to growth.