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…
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…
Week 5: Threads, event loop, promises, and async/await
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. …
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…
Week 3: Callbacks, higher-order functions, and iterator methods
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…
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
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…
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.
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…