From accidental complexity to Conway’s Law, here are the five papers and crucial concepts that influenced the way I think about programming.

Image for post
Image for post
Photo by Kelly Sikkema on Unsplash

In this article, I will list five timeless computer science papers that influenced how I write code and think about programming.

These papers are all approachable and easy to digest, and if you have programming or product background, they will resonate with you.

“No Silver Bullet — Essence and Accident in Software Engineering” by Fred Brooks

Link to the paper.

This is a famous and widely discussed paper by Fred Brooks, who also happens to be the author of The Mythical Man-Month.

This paper attempts to explain the limitations of software development, which he splits into two categories: Essential Complexities, which are inherent to the nature of the problem the software is trying to solve. …

It demonstrates trust, gives you opportunity to grow as a leader, and can even improve team performance.

Image for post
Image for post
Photo by Volodymyr Hryshchenko on Unsplash

On any team, there will be times when problems will arise, and a subordinate will come to you with a complaint. Maybe they find the release process too stressful, or perhaps they have a coding style pet peeve, or maybe they are having a hard time working with another colleague. Whatever it is, you should take it seriously.

Handling an employee’s complaint requires some thought and navigation. Talk to the person and ask them to explain the situation — try rephrasing the problem yourself if it helps. By the end of the 1:1 meeting, you should be able to assess what your subordinate expects of you: Are they just venting and blowing off steam? …

The Tech Lead is a weekly newsletter on software, product & leadership. Featuring hand-picked articles for senior developers, tech leads, product managers, and more.

Hey Reader,

I have to admit that I found it challenging to focus on reading tech-related news in the last couple of weeks. Software and technology can seem quite meaningless in times of suffering and injustice. However, there is a lot to be fixed in our industry alone, from striving for more diversity and inclusion in the workplace to considering the real impact that our tech platforms have.

If I could recommend only one read, it would be this article by Jowanza Joseph, a fellow software engineer, where he sums up what it’s like to be black and how small acts of racism have shaped his daily life. …

It could be a symptom of bad architecture, process, or coding style.

Image for post
Image for post
Illustration provided by the author

If you and a colleague change the same line in a file, a merge conflict occurs because Git doesn’t know which code to keep and which to discard: It requires your help to resolve differences between the two commits.

For the rest of this article, I will assume that you already know how to resolve merge conflicts. This article will help you understand the common root causes that merge conflicts happen and how to fix each of them.

Your project does not enforce a coding style.

So your editor replaces all double spaces with tabs whenever you hit save. And now your colleagues are furious!

This scenario is not uncommon. It not only causes merge conflicts, but it will also mess up the git history and make it hard to trace when a change was introduced. …

Ask for feedback and be specific about what types of feedback you expect. If that doesn’t work, experiment with self-evaluation and ask your colleagues.

Image for post
Image for post
Courtesy of icons8

I recently had a chat with a friend who struggled with a tech lead who wasn’t giving him enough critical feedback: “She doesn’t give enough feedback! How can I grow?” he asked. Lack of helpful feedback is the most common complaint that I hear from friends and colleagues. Probably because most leaders and managers don’t receive any training in giving useful feedback.

In one study, authors Jack Zenger and Joseph Folkman asked 899 individuals about their general attitude toward giving and receiving feedback. The study showed that 72 percent of respondents attributed performance improvement to getting negative feedback from their managers. …

Image for post
Image for post

I read a lot of articles every week, that I usually share in private DMs or in Slack channels to my friends and colleagues. I thought it would be a good idea to summarize the best findings in an email format.

The Tech Lead is a weekly newsletter on software, product & leadership. It’s best suited for senior developers, product managers, and tech leads.

I hope you enjoy this first issue. If you find it useful, please share it around. You can always send me feedback to!

Stay Safe!

Image for post
Image for post
Photo by Mimi Thian on Unsplash

While good product owners have a natural ability to guide product vision, failing to communicate with engineers during the initial ideation phase is a waste of time, opportunity and talent. And it may eventually cause a project to combust.

The one thing all successful software companies have in common is their ability to build products that their customers will pay for.

However, there is a lot of work that goes into building a successful digital product. From understanding the user needs, brainstorming user flows, designing interfaces and architecture, to implementing, testing, and finally rolling out the features.

All of these steps require the participation of different teammates with diverse skillsets. …

And what I learned in the process

Image for post
Image for post
Photo by beasty . on Unsplash

I remember my first experience maintaining legacy code quite well. I was a junior developer with absolutely no idea what I was doing.

The app itself was something like Slack, where colleagues could create workspaces to automatically share every exchange they had with their clients.

The founders had no technical background. They had an idea of how to improve team collaboration, and they hired an agency to implement the first version. The following features were each implemented by a different freelancer.

Some parts were in AngularJS, while others used Django and Tornado. It didn’t make any sense.

To me, the code looked like that rusty steam machine from Howl’s Moving Castle: barely holding together, slowly moving forward. …

For junior developers, but not exclusively

Image for post
Image for post
Photo by Tetiana SHYSHKINA on Unsplash

Whether we agree with it or not, most companies nowadays include coding challenges as part of their hiring process.

Preparing for these challenges can be confusing. From tests that I’ve reviewed, I’ve found that candidates often focus on studying fancy algorithms and miss out on the most critical aspects of the coding challenge.

Here are some tips you need to consider before submitting your code to the interviewer.

The Anagram Problem

I was helping my friend, a junior developer, prepare for the technical challenge. We were working on an anagram problem. …

This detailed guide should answer all your regex questions

Image for post
Image for post
Photo by Job Savelsberg on Unsplash

Regular expressions are a necessity of software development. As a front-end developer, you can go a long time happily ignoring their existence, but sooner or later you’re going to have to deal with them.

In this guide, you will find everything that you need to know about regular expressions in JavaScript. This article is structured as follows:

  • What can you do with regular expressions?
  • What do regular expressions look like?
  • How do you define a regular expression in javascript?
  • How do regular expressions work?
  • What’s the regex syntax in Javascript?
  • How to use captures and backreferences?
  • How is a regular expression matched? …


Meriam Kharbat

Senior Software Engineer @fieldintel prev. @crateio | Columnist @BuiltInChicago | Curating |Email me at

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