How to recognize problems with agile adoption.

Image for post
Image for post

Is your team dependent on other teams to ship?

Agile teams are expected to be cross-functional and self-sufficient.

Shipping is about its whole process of iterative design, development, testing, and deployment based on a shared goal. If a team is able to do only one piece (for example only development), it won’t be able to ship within the same sprint. It will also lead to situations where they can’t work because they are waiting for input from design. Or their output will accumulate because QA won't be able to prioritize it enough to consistently pass it through.

If your agile teams are divided based on their specializations they cannot…

How to build a serverless NLP chatbot for your website

browser screen showing a chatbot conversation on the left and a list of training output on the right
browser screen showing a chatbot conversation on the left and a list of training output on the right
Image source: Author

It is possible to build a chatbot for your own website without dependency on a third-party service like Dialogflow or Watson, and without a server. I will show you how to build a chatbot that will completely run in the browser.

I will assume that you have some understanding of JavaScript and insight into how natural language processing works. No advanced knowledge or machine learning experience is needed.

If anyone tells you that it’s crazy to do machine learning in a browser using JavaScript, then don’t listen to that, because soon you will know better yourself.

Our code will be…

Terminology and differences in programming paradigms

cartoon about imperative vs. declarative code
cartoon about imperative vs. declarative code
Image source: Author

Believe it or not, you are likely already using multiple programming paradigms as a developer. Because there is nothing more fun than entertaining your friends with programming theory, here is an article that will help you recognize popular paradigms in your code.

Imperative Code

Imperative programming is how we started with Assembly (1949) and continued with languages like C, C++, C#, PHP, and Java. Procedural and object-oriented programming belong under the imperative paradigm.

Your code is based on statements that change the program state by telling the computer how to do things. …

Image for post
Image for post

All JavaScript developers are awesome and they deserve a brilliant way of filtering and mapping over an array with just one function with a linear complexity O(n) of one run through the array.

If you are looking just for the solution, then here is the code for filterMap. Thanks for stopping by.

Please notice that the above function is just a one-liner using a JavaScript reduce function. Here is an example of using filterMap:

filterMap is better than using two function calls of map and filter separately because you would need to go through the array twice. …

Took arrow function in the knee
Took arrow function in the knee
Took arrow function in the knee!

Nowadays, all my code is based on the use of arrow functions. If you are still not using them yourself, then don’t be ashamed of who you are. That’s your parent’s job. Instead, find about all the benefits that you can get by using arrow functions like the cool kids.

This is an example of arrow function and the same code written traditionally:

You may notice that the code is shorter and that there is an arrow. …

Rasa chatbot with REST API with minimal Python skills

Image for post
Image for post

Rasa brought some amazing new changes with their new version of Rasa that make it even easier to build your very own chatbot using Python for Natural Language Understanding and Natural Language Processing.

My criteria for choosing Rasa are:

  • I wanted to create a chatbot that would not be dependent on any third party service like Watson or Dialogflow.
  • I did not want to go too deep into learning Tensorflow or Torch for machine learning either, especially since it goes far beyond learning just a library.
  • Finally, I wanted to be able to build my own web interface easily, without…

Image for post
Image for post

Function composition is one of the most powerful differentiators between object-oriented and functional approaches to programming in JavaScript.

I will explain the difference between class hierarchy and composed function leading to practical examples of advantages of function composition and functional programming in JavaScript that I use in all of my own code.

Class hierarchy and RoboDog

In object-oriented programming, you define your classes.

For example, you specify a parent class Animal that has a method move. You continue by creating classes Cat and Dog which will inherit move from Animal and add their own methods bark and meow.

Then you decide to develop a…

Python 3 and Pip installation in macOS using Homebrew

Image for post
Image for post

I tried several approaches to installing Python 3 on Mac, and this is what worked as the best solution for these three goals:

  • Latest Python 3 and Pip 3 available
  • Both of them available in Bash under python and pip aliases replacing Python 2
  • Aliases cannot break with updates


XCode is Apple’s development environment, and you need it’s command line tools. If you are not sure, don’t worry, the system is likely going to prompt you and allow you to install it without any hassle. If you want to be proactive, use your Apple ID to download it from…

Image for post
Image for post

React 16.8 came with the addition of React Hooks. I was curious about how far it goes to allow you to replace Redux and create a middleware like Redux Thunk, Observable or Saga.

There are a number of articles about the new method for managing local state with useState and the global context by using useContext. There are some articles about how to connect that with your API calls to your backend but they all seem to propose a solution based on useEffect which in my mind is flawed.

The solution that I have seen is to create a local…

Image for post
Image for post

As a follow-up on my article 3 sins of implementing Agile, I am bringing this idea to Scrum, the most common manifestation of Agile. These are some of the most impactful issues that I have seen.

Sprints and a Kanban board equal Scrum

In my experience, a company starts claiming that they do Scrum once they implement Sprints and a Kanban board.

The company implements Sprints as two or three-week development periods used as a planning unit. Before the start of a new Sprint, there is a planning meeting of some kind. Events like Retrospective and even Daily Scrums are often deemed optional and not implemented.


Martin Novak

Martin is a seasoned manager with rich experience in leading international teams and governing product strategies.

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