In 2016 I wrote this post about how happy I am working at Schibsted. I learned a lot during the past 5 years but as anyone who has been at a domain for too long will tell you, the learning slowed down over time:
I artificially prolonged this period by swtiching teams a couple of times to work on new challenges. But with the advent of Covid, reorgs and cost cutting not many new interesting positions showed up. …
Large companies are usually comprised of many teams — each focusing on a subset of the problem domain.
To increase agility the company may give autonomy to the teams to decide their work process, tooling, or even defining their own scope. The side effect is that if there is too much autonomy, the teams may grow apart from each other and develop “silos”.
At its extreme, domain knowledge hardly leaves the borders of the team silos and external ideas are dismissed with the “Not Invented Here” syndrome (NIH).
If the company is doing well for many years, it’s possible for…
A Array.map() is a very useful function but, unfortunately, it only works with synchronous functions. A simple workaround for using
async map functions is to use
Promose.all() or its more tolerant brother
It works like this: the
.map() will convert each array item to a promise, so we’ll end up with an array of promises to resolve. There are two ways of doing this:
Promise.all()throws if the map function throws (MDN)
Promise.allSettled()runs the map function for the whole array even if sometimes it throws (MDN)
Therefore, the output of the
.allSettled() is an array of objects…
Career ladder is a great tool for cultivating growth mindset in an organization:
Unfortunately many companies fail to take full advantage of this tool. Let’s visualize some of the common mistakes.
$ node yourfile.js
By typing the name of the interpreter (
node), you are explicitly telling the shell how to run your script.
But that knowledge can be put inside the script itself so it can be run directly as if it was a binary:
This will work only if you have execution permission on that file (you can set that with
chmod u+x yourfile.js …
It’s good practice to keep the number of lines in a function limited (here’s Martin Fowler elaborating the point and here’s an ESlint rule to enforce it). To break a long function, we need to identify the parts that are abstract enough to be extracted to new and smaller functions.
Each software (whether it’s a library or a stand alone app or CLI) handles various use-cases.
Before we start, let’s define “inner source”. According to Wikipedia:
Inner Source is the use of open source software development best practices and the establishment of an open source-like culture within organizations. The organization may still develop proprietary software, but internally opens up its development.
Although many of the tips in this post may apply to open source product, there are a few crucial differences stemming from the fact that the “community” is…
If you’re working at a big organization you’ve probably heard or used an employee engagement tool. Here’s how it works:
The core idea is that the surveys will provide reliable data for spotting and reacting to organizational problems. The reports look something like this:
This post is about my experience using Officevibe at two teams for a period of 2 years and eventually quitting it (not truly but we’ll get to…
One of the perks of working at a large company is that there’s always someone at the top of their field that you can reach out for advice. Out of curiosity I asked one of my favorite managers with an excellent track record of making significant changes in the organization: “How does one become an Engineering Manager (EM)? How can a developer do the transition?”
His answer was solid advice that would’ve been a waste not to share. Here’s the reply (lightly edited for anonymity):
So the first EM role is always the hardest — making the initial transition. It…
Knowledge Worker, MSc Systems Engineering, Tech Lead, Web Developer