When you think about what “value” means, you might see dollar signs. That’s what many companies think, too.
In an era where social responsibility is increasingly important to consumers, companies are scrambling to showcase their “values” as a way to turn in a profit. There’s a reason so many tech company slogans sound similar. It’s not just that they’re all trying to do the same thing (make a profit), it’s also that they want to take our attention away from their primary goal—the bottom line.
When Andrew and I first made the decision to move forward with starting Skiplist, we knew that establishing a foundation was a when, not an if. Leveraging Skiplist’s tech talent, building a culture around the necessity of charitable giving, and adhering to our values were non-negotiable.
For as long as we can remember, we’ve had houses, cars, and streetlights.
But today, there’s often more to these staples of modern life than meets the eye. Where a streetlight was once timed to turn red every 30 seconds, and after 15 seconds, turn green again—today, that light is smart, meaning it adapts to movement by pedestrians, cyclists and cars. And where a house was once just four walls and a roof, today it adapts its temperature based on its surroundings. Our cars are no longer simply at the mercy of the drivers—today, they can communicate with each other to slow down based on traffic patterns.
Businesses, like people, are all guided by different values.
Some want to sell ads, others are focused chiefly on adoption, and some only care about the bottom line. Most of the time, a company’s values fall in line with meeting the needs of their customers. But occasionally, a company’s goals and solving its customers’ pain points don’t quite match up.
This is a phenomenon that’s especially problematic—and common—in the tech space.
There is a common thought in entrepreneur circles that greatness isn’t defined by what you say yes to, but what you say no to. This rings true in many domains but in software it can become a way of life. In software, the build vs buy challenge is fraught with strong opinions either way. There are a lot of incredibly smart engineers that can build almost anything given the right resources.
Abstraction is a powerful tool. Some of the greatest inventions in technology: operating systems, programming languages, compilers, etc. are abstractions. However, when misused or misunderstood, they can be destructive.
Over abstraction can create unmaintainable, untestable monstrosities. Under abstraction may mean duplicate code, but duplicate code is almost always better than unmaintainable code.
There is no doubt we live in a world dominated by software. As mentioned in the introduction, it’s hard to go even one day of our lives and not have to interact with any software.
The impact of software and access is far-reaching, and we have a responsibility to examine and understand it. This impact can be positive or negative to those using it, and we must be stewards of this. We need to quantify and understand our impact on the world around us during development.
I just wrapped up a challenging computer vision project and have been thinking about lessons learned. Before we started the project, I looked for information about what was possible with the latest technology.
We used the Tensorflow Object Detection API as the main tool for creating an object detection model. I wanted to share, in general terms, some of the discoveries. My goal is to give someone else who is approaching a computer vision problem some information which may help guide their choices.
Software Principle 2: Always understand your context
There are two keys to successful execution: knowing what to do and understanding the environment or context. If you have those two things, you are sure to have success.
However, as everyone is aware can be insanely difficult. If what you are trying to do is incredibly difficult, then there is an excellent chance you don’t know what to do. Conversely, if you are working in a chaotic environment, it is hard to understand your situation. That said, if I could pick one of those two, I’d always pick knowing my context. Context will help illuminate the problem and will let you know how to get the resources needed to discover what to do.