Skip to main content

Posts

Software Deadlines

Deadlines are a necessary part of life.  I wish all the things I worked on didn’t have deadlines, yet I want other people to give me a timeline and stick to it.  For instance: I am currently going through a house remodel and it’s taking longer than we thought (most of them do).  It takes a massive amount of awareness and empathy to understand that getting everything right is impossible when you are paying for it out of your own pocket.

It’s hard to talk about deadlines in isolation, deadlines are a part of a larger system of goal setting: time, teams, objectives and results.

Over time my view on the subject of deadlines has evolved and I am certain that a part of this article is going to be a shock to some people who worked with me several years ago. I was an early adopter of Scrum in 2001 and loved sprints with estimates for a long time, but in the last couple of years I have stepped away from Scrum because I realized that Scrum fails to distinguish important vs unimportant tasks an…
Recent posts

Should this be a microservice?

After having developed several distributed systems and been a part of dozens of architectural discussions I decided to put together a way to frame the microservices debate. Microservices have been fashionable for some time. A lot of it stemmed from the fact that big and successful cloud companies are using microservices.  It seems reasonable that to create a “serious system” one must be using serious tools and architecture, today it’s microservices.  No engineer wants to be called out for creating a solution that “doesn’t scale.”

The definition for a microservice varies, but overall it tends to be a piece of your system that can run somewhat independently (unless of course it depends on other microservices) and has a REST or queue processing interface.  Overall code encapsulation and separation of concerns have all been around for a long period of time.  Current evolution with containers, fast networks and REST API allows people to easily integrate pieces of their system using web se…

What to ask during your interview

Most of the literature about interviews is focused on how to give good answers and get an offer letter.
I talk to a lot of candidates that forget that interviewing is a bi-directional process.  In the world of technology companies and startups specifically the candidates are interviewing the company just as much as the company is interviewing them.  Over the years I have collected some questions that I believe could help someone understand if the opportunity is right for them.  Here are some areas that I believe every candidate should touch through the interview process:

Business Who are the customers?  What happens if they don’t have your product?What are the revenues right now and what are the means of ramping them up?What is the financing now and how much runway do you have left?When delivering your product/service - how much of the process is digital and how much of the process involves people or hard assets?  Are those non-digital parts of your service on your books/payroll?What …

Enrich - Peer Groups for Executives

When your work is to manage an engineering organization there are few people you could get advice from.  If you are a Director, VP or CTO in a tech company there might be zero to a handful of other people with similar job responsibilities. Almost everyone accumulates a number of mentors or friends throughout their career but those connections fade and sometimes geeks feel weird asking other geeks to “get together and catch up.”

I have come across Enrich (https://www.joinenrich.com) which is a facilitated peer groups and it helped me get some perspective and advice I don’t think I’d get anywhere else.  This group costs money and my company doesn’t pay for it, so I was fairly resistant to signing up for it at first.  My thoughts were that I am already paying a huge premium for living in San Francisco which has the highest concentration of technology leaders in the world.  I should be able to connect with people and foster those relationships without having to pay someone to organize gr…

Presentation at the St. Petersburg Python Meetup

At the end of August I was in St. Petersburg, Russia.  I was invited to the St. Petersburg Python Meetup group to present how Silicon Valley sees Russian engineers and companies.  It was a fun event with a lot of great questions.  A lot of the focus was on getting hired and how US counterparts relate to software developers in Eastern Europe.

Here is a copy of my presentation for those who did or didn't attend.
https://www.dropbox.com/s/8c9zd2ue33i3a1b/SPB%20Python%20Presentation.pdf?dl=0 

Here is a link to the group event:
https://www.meetup.com/spbpython/events/qvcrgryzmbwb/

Early Customer Feedback Fallacies

At the center of successful product launch are customers who are happy, excited or relieved that something has been delivered to them.  Given that customers are such a key part of this equation it’s astonishing how often product development teams get so “visionary” that they forget the very people they are trying to serve.  Focusing on real people with real needs has a number of positive side effects, maybe the most important of which is your company survival.  According to CB Insights 42% of startups fail because they are solving a problem that doesn’t have a sufficient market need.  Here are some common fallacies that I have noticed through my 20+ years in software development:


Fallacy #1: No one will understand our vision until they see it!Some people have the belief that in order for someone to understand what they are talking about they have to show a working product.  This is symptomatic of confusing the problem and the solution.  While it is true that sometimes people need to …

Quality of Code is Quality of Life

About 20 years ago when I started working in technology companies I remember “the best” engineers had similar patterns:
-They worked crazy hours
-They knew the systems no one else knew
-They could react and deliver something faster than anyone else
You could always hear other employees say: “Bob is really smart, no one knows how to get anything done in system X besides him!”

This reinforced optimization around being the only person who knew how to do something in some part of the code.  That in turn reinforced job security and bargaining for those engineers, but also chained them to a particular system.  We had big code bases of C++ or Java code where some “Bob” hacked up features as soon as he possibly could.  “Bob” would have occasional nuclear disasters where he’d sleep in the office or through the weekend and then everyone would thank him for how he “saved the day.”  “Bob” sacrificed his quality of life to get praise when he hacked stuff up quickly and then the second time when n…