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.
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. …
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? …
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. …
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.
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. …
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. …
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.
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. …
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. …
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.
I was helping my friend, a junior developer, prepare for the technical challenge. We were working on an anagram problem. …
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.