management stories Team building

Project empathy, day one

Today was my first-day writing code for what I call “the empathy project” to build empathy for what engineers go through.

Here is how my first day went.

I started with an existing template to give a good starting point. After following the instructions, I downloaded the template and ran into my first error.

Something about a secrets.json file not found. Why is this template looking for that file? No idea, so I go on google to find my answer.

After multiple articles, I found a stack overflow answer that looked promising.

I tried their solution and ended up getting through my first bump!

Since I changed the project, I figure I needed to add it to source control, you know, so I won’t lose all the hard work that cost me a ton of reading to get to the one-line change I made.

So I create a repository in GitHub and then attempt to upload my existing project to it.

The second issue of the day, I forgot my git commands 😭, so I got on Google again to refresh my mind.

I managed to upload to GitHub and create a new branch — success.

Ok, let’s try to build and rerun the project. Another error shows up. This time it is something related to the connection string to my database.

Wait, database? I didn’t set one up yet. So I get on google again to figure out what people like to use nowadays for starter projects.

The template I used uses entity framework, a Microsoft ORM, so I’ll need a relational database.

My search takes me to Heroku. Since they have a free tier for their Postgres DB, I create an account and copy the connection string.

This part I remember, add the connection string to the config file, and we’re good to go, right?

Not so fast. After adding the connection string, I type the run command and run into one more error 😨something about the connection not being secure.

This one took a lot of trial and error, google gave me the answer, but things didn’t seem to work.

The solution turned out to be the difference between typing “SSL Mode” vs. “sslmode.”

Ok, it looks like I can connect to now, I run the project once again, and this time the browser shows up for about one second… it just blinked in front of me, then disappeared with all my hopes.

This time, we appear to be missing our database tables.

I missed a step in the instructions and forgot about database migrations.

Ok, let’s run the existing migrations, and we’re good to go, or so I thought… I tried running the migrations, and more errors showed up.

More googling and lots of reading through the docs to uncover that the existing migrations were done for SQL Server and not compatible with Postgres.

I deleted the migrations, created new ones, and tried again. This time, the tables get made, and my hopes are back.

I type the run command again and cross my fingers, hoping that things will be ok this time.

Things are loading. My terminal is showing more messages than before. For a second, I can see into the matrix.

But then, big red messages pass by quickly, and everything stops again. I am deflated now. What else could it be?

The logs show a problem with an insert statement with a date-time field of type local, but the column only supports UTC.

At first, I start reading into the date-time type in Dotnet core, and sure enough, there is an attribute to set the type, but there is no default value, so my error isn’t making sense. Somewhere in the code, we’re setting date times to local.

After more searching, I found the code to insert data to the DB. It was passing clock.now. I looked into clock. I figured out it is part of the template and not the framework, so I quickly searched the documentation and changed the default type to UTC for clock.

Let’s try again! Things are running, and finally, the browser opens up to the login screen.

I was thrilled and tried to log in with the default credentials provided.

I got redirected to a JSON blob 😭.

I am about to cry now.

The logs are not showing anything meaningful this time, so I checked the network settings in the browser and saw a bunch of errors related to files not loading, yikes.

More reading and googling, this is getting old, anyway, I now have to build my front end by running another command.

This time, everything should work.

I run the run command, and everything seems to be working well for the first time.

The pages show up. I can log in and do quick updates.

I am now ready to commit and push to source control.

I am reviewing what I am sending, and oh the horror, config files with credentials to my DB!

This should be easy. I’ll have to move the connection string to the secrets.json file so that it is only available on my machine 😊

Well, that didn’t work. Moving the connection string caused me to lose connectivity to the DB.

I do more googling to figure out why I can’t read from the secrets file, but I am increasingly frustrated, so I decide to go with what is familiar to me, environment variables.

I set my connection string to an environment variable, updated the code to read from the environment variable instead of configuration files, and reran everything. Success! This time for real.

I feel good about pushing my code, I looked at the time, and it has been over five hours, to my surprise.

If the success criteria for the project is to build empathy for engineers, day one proved to be highly successful.

I’ll pick this up after the holidays, so stay tuned for day two.

Icons made by berkahicon from www.flaticon.com


A Quick project to build empathy

A Quick project to build empathy
Management usually means that you are removed from your daily interactions with code.

While this gives you focus on important areas such as execution, growing, culture, and strategic thinking.

It also means you forget the day-to-day challenges you go through as an engineer.

To build empathy and remind me what it is like to write code, I am starting a side project around a highly relevant subject to my day-to-day project execution.

I plan on providing updates as I go along my journey, so stay tuned.

Interviewing stories

Networking pays off

We’re currently hiring for a hard-to-fill position.

I reached out to a good friend to see if he was interested, and to my surprise, he said he was going to apply.

It was unlikely given he is currently employed, less than a year in at his current company, with decent compensation and a good work environment.

He applied to the position, and sadly, got a rejection letter almost immediately.

No explanation, no feedback, no courtesy initial phone screen, nothing.

This would be the end of the story in most situations, but he reached out to give me an update and told me about the rejection.

Here is where networking pays off.

I reached out directly to the recruiter and mentioned that for such a difficult spot to fill, In the current competitive market, getting my friend to apply was unexpected, and that it was surprising not to have him go through at least an initial phone screen.

The recruiter mentioned they would look into it and update me soon.

A couple of days passed, and I heard back from the recruiter.

They had made a mistake and had declined my friend’s application while going through candidates.

They offered to reach back out to schedule a screening call if I thought it was ideal…I said yes!

A few days have passed since, and today, I got an update from my friend.

He received an email from the recruiter apologizing for the mistake, and they held a screening call.

Later, the first interview with our VP of engineering happened, and he is now scheduled for follow-up discussions.

I am happy for my friend and excited that he is moving along in our hiring process, but this would not be the case if he did not know someone already working at the company.

Networking paid off! Reach out to your ex coworkers, keep in touch, and remember that sometimes a quick conversation can be a powerful tool.

Icons made by Freepik from www.flaticon.com


Critical thinking — five why’s to the rescue

Have you been asked to create a report? Did you make a report? Did you stop and ask why the report is needed? What is the information that this report is trying to answer?

When thinking critically, we need to distinguish between causes vs. consequences.

In our report example, the requester might be looking for answers to a consequence rather than a cause.

If we solve mainly for consequences, other consequences are likely to show up, and we’ll inevitably continue down a cycle of process improvements that mask the real problem.

One tool to help you think critically and help you surface causes is the five why’s.

Imagine the report was about the number of people leaving a group within the last six months.

You have the info and can have the report ready in minutes, but if you asked, “why is this report helpful?” You might uncover that they were looking to determine the reasons for their departures to gauge if we have leadership, process, or compensation problem.

Asking why already uncovered deeper needs, getting you closer to a root cause.

You can continue asking why until you have surfaced the root cause.

Your report can be more practical and help fix the cause rather than the symptoms.


Thankful for traditions

Living in the United States allowed me to learn about traditions from all sorts of backgrounds.

I was exposed to traditions based on sexual orientation, religion, historical events, location, and even driven by capitalism.

I remember approaching these with lots of curiosity but a particular defensiveness, mainly caused by a lack of understanding.

Once I entered the workforce, I was exposed to company-specific traditions.

All these traditions shared a specific set of traits, such as 

  • Happening on a particular date
  • Requiring a ritual to perform
  • Driven by a particular subject
  • Led by passionate individuals on these subjects
  • Regarded as highly important by a subset of the company

This week, as my wife diligently sets up holiday decorations at our house, I am reminded that I work for a company that hires from around the world.

I am thankful that I learned about more traditions than what I had been exposed to so far.  

I am thankful that others think of me and want to include me in their traditions, even when I don’t have the foundation for the tradition.

I am thankful I no longer feel defensive about others’ traditions.

And I am thankful I get the opportunity to include others in my traditions.

As you think about your own situation, what traditions come to mind that are new to you? What have you learned from them?

Icons made by Freepik from www.flaticon.com

management strategy

Change management – taming the rumor mill

The rumor mill is hard to contain and impossible to stop.

After all, people are curious, and when they know change is coming, they want to know a few things

  • How am I affected?
  • When is it happening?
  • Is it good or bad?
  • How are those around me affected?
  • Who do I go to with questions?

As leaders, our reports will expect us to answer these questions and more.

To better serve them, get a document started, have a meeting, or go to a Cafe with your peers and figure out as much information about the change.

Consider main themes such as 

  • Reporting structure
  • Process
  • Direction
  • Compensation
  • Timelines
  • Documentations
  • Reasoning
  • Decision-makers

Next, consider the communication preferences and must-haves to disseminate the information, such as

  • Legal requirements
  • Communication channels — think meetings, documents, presentations, videos, phone calls
  • Timing on communication 
  • Chain of responsibility for communication

By now, you should have a proper change management plan to execute on and hopefully slow down the rumors from presenting an inaccurate future.

Icons made by Eucalyp from www.flaticon.com


Simple life hacks

◦ Repetition makes perfect

◦ But Perfect is the enemy of progress, start with the two-minute version

◦ Consistency allows for repetition – same day, same time, all the time

◦ Make your outcomes easy to achieve (put the fruits and vegetables 🥕 out)

◦ Make your bad habits difficult to achieve (unplug the tv, throw away the candy)

◦ The best skill to learn is problem-solving – play Tetris, puzzles, solve a maze.

◦ Write ✍️ as much as possible – write what you intend on doing, how you intend on doing it, and by when you intend on doing it.

Icons made by Freepik from www.flaticon.com



Yesterday, December 2, was my son‘s fifth birthday.

My wife put together some lovely P.J. mask decorations.

She bought cake, muffins and had some candles for my son to blow.

It all felt very nice.

My son was happy, dancing, and very engaged in the celebration.

And this made me realize that we often forget to celebrate our successes in life.

So my advice to you today is to celebrate more, especially the little things.

You will be happy and bring happiness to those around you.

Icons made by Vectors Market from www.flaticon.com

growth management

A short one

Well, I lost my daily writing streak.

I got some back pain, heavy days at work, and busy afternoons with the kids.

By the time 8 PM rolls around, I am exhausted and not really in the mood to write.

But here I am, at 6:23 CST on December 1st, 2021, trying to pick up where I left off while my kid makes a mess in the bathroom by spreading toothpaste all over the counter!

I usually try to tie these quick stories to business perspectives, so here it goes.

We have ups and downs, and busy lifestyle outside of work.

While this should be obvious to all of you reading, as managers, I believe we somehow forget that this is the case and continue pushing our teams for consistency in excellent outputs all year round.

Never forget there is more to life than your job.

Icons made by Vectors Market from www.flaticon.com