Photo by Hannah Busing on Unsplash

Joining business, tech and design together.

Many people, including myself confuse product management with project management.

If we first better understand the terms product vs project, it will better help us understand the differences between the two roles.

A product can be anything from a physical product, to a software or a service that satisfies the needs of a group of users. It goes through a life cycle, being developed and introduced on the market, grown in acceptance until it matures, and retired once it’s no longer needed.

A project is a one-at-a-time endeavor with the aim of creating a…


The cart definitely comes before the horse.

There is a huge difference between “engineering” and “design thinking”.

Software engineers are problem-oriented, a design thinker is need oriented. For an engineer the problem is obvious, design thinking does not focus on the problem but focuses on the user of a yet to be invented solution that meets the needs optimally.

So as important as engineering is, without first thinking about the user in the perspective of their needs and goals, engineering a solution is utterly useless or at the very least, less effective.

For example, Google Glass was a failure on…


Photo by Matthias Mullie on Unsplash

Week 6: Unit Testing (TDD) with Jest

When we write software, we are communicating with more than just computers. We are communicating with people who are the code author and maintainers that read and write code. When the code is read, people should understand what, why and how the software works.

Needless to say, software engineers have a daunting task. They need to communicate their intent and goals to both people and computers. Everyone and everything involved needs to understand each other. As you can imagine, things don’t always go according to plan and mistakes happen.

So, what is code…


Photo by Callum Galloway on Unsplash

Week 5: Threads, event loop, promises, and async/await

JavaScript is single threaded (one command executing at a time) and has a synchronous execution model (each line is executed in order the code appears).

Synchronous code (also called sync code) executes one code instruction at a time, in the order that the instructions are given. Asynchronous code (also called async code) executes multiple instructions simultaneously, and the order in which the instructions complete isn’t known.

If a program needs to wait for something to happen — most commonly, for data across the Internet — it cannot do anything else. …


Photo by Oscar Nord on Unsplash

Week 4: Objects, factories, constructors and a pinch of syntactic sugar

So, what are objects? An object is a type of collection that holds information, just like an array. But instead of operating like a storage box, an object can be represented using another analogy. Objects are like a collection of gifts that need to be handed out to a group of people.

Imagine that the gifts 🎁 are for a class of children.

Each gift has a gift tag with the appropriate child’s name on it, and the teacher simply needs to give each child their gift. These gifts…


Photo by v2osk on Unsplash

Week 3: Callbacks, higher-order functions, and iterator methods

The first thing we need to know is that in Javascript, functions are first-class objects. As such, we can work with them in the same way we work with other objects, like assigning them to variables and passing them as arguments into other functions.

Callback and higher-order functions

A callback function is a function that is passed as an argument to another function to be “called back” at a later time.

A function that accepts other functions as arguments and/or returns a function as output is called a higher-order function, which contains the logic for when


Photo by Luke Vodell on Unsplash

Week 2: Arrays, functions, scope and flow of execution

Arrays are collections of ordered items.

In a sense, an array is like a storage box with many numbers on it. Imagine that you put something in each numbered slot of this storage box. Whenever you come back to your storage box, you’ll find that everything is exactly as you had left it, with each slot holding what you had originally put there.

That’s the idea behind an array — it helps you organize many items by storing each item in a specific numbered slot. …


Week 1: Values, Variables, Conditions and Loops

This will be part one of a 6-part series of learning the basics of JavaScript.

Be warned:

  • This will not make you an expert.
  • This will not get you a job.
  • This will not cover everything.

These 6 articles cover many of the topics you should know in order to start solving JavaScript algorithms and building applications.

JavaScript landscape

The JavaScript landscape is evolving rapidly because JavaScript has become such an essential part of the web platform.

The browser implementation specification for JavaScript is called ECMAScript, named after the European Computer Manufacturers Association, ECMA. …


Photo by Matthew Henry on Unsplash

Every vow you break. Every smile you fake. Every claim you stake.

Technical debt is a metaphor and a storytelling device that can help explain the long-term consequences, costs, and risk introduced by prioritizing short-term cost avoidance over functionality, reliability, availability, and serviceability.

It’s a concept originally advanced by pioneers of the Agile software development movement to describe the tradeoffs between speeding development along and building workable and maintainable code.

Software systems are prone to the build up of cruft — deficiencies in internal quality that make it harder than it would ideally be to modify and extend the system…


Photo by Daniele D’Andreti on Unsplash
Photo by Daniele D’Andreti on Unsplash

You are the disease and I’m the cure.

This article assumes a basic knowledge of REST APIs with Node/Express.

Web application programming interfaces (APIs) are an essential pillar of our connected world. Software uses these interfaces to communicate from applications to smartphones to deeply hidden backend servers, APIs are absolutely everywhere.

What Makes an API Great?

A great API should make it easy to do the right thing and make it really hard to do the wrong thing.

Any developer should be able to come to your API and understand with relative ease what they can achieve and how to do it. Our API should…

Frank Stepanski

Engineer, instructor, mentor, amateur photographer, curious traveler, timid runner, and occasional race car driver.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store