Make the most of your career-defining moments.
There are a few turning points in a software developer’s career. Some change your perspective, while others will transform you. Check out this article to prepare or reflect on these episodes that define who you are as a professional.
You are not a real software developer until you bring down a server or crash an application in production. We all make mistakes. However, what you do next can set you apart from your peers.
You have to own your mistakes to grow as a professional. There are things you can only learn from failures. First, think about what you could have done to avoid the screw-up. Secondly, what processes or tools you can implement to prevent others from repeating the same mistake in the future. …
The life-changing magic of tidying up legacy code.
Do you have a junk drawer at home? You know, the one where you store all the miscellaneous and occasionally useful objects. When you open the drawer, you see multiple sets of scissors, safety pins, thumbtacks, rubber bands, receipts, spare changes, and batteries you keep buying in case of a blackout.
If you are not organized, you likely have a junk drawer in your codebase, too.
It starts with a couple of one-off and uncategorized functions. You are unsure where these functions should go, so you dump them in a folder named utils or helpers. You could never find what you need in these folders, so you end up implementing the same functions over and over again. …
Tips for accepting feedback with grace and dignity.
Like writing, programming is personal and intimate. You pour your creativity and thoughts into a machine through your fingertips. It is no surprise, then, that you may feel a little angry when you read critical reviews on your code.
How do you handle criticism? For one, stop sulking and think before leaping into defending yourself or lashing out at others. Below is a guide to what I think about when I read code reviews.
Code review plays a crucial role in software quality assurance. A good piece of feedback may uncover defects — program correctness, performance issues, security vulnerabilities — before your code ever reaches the users. …
A primer on search algorithms: depth-first and breadth-first.
Algorithms can be a nightmare if you only ever study them for exams and technical interviews. Wouldn’t it be much easier if you could have fun while learning algorithms? This article will guide you through basic search algorithms with examples to implement a traditional board game.
Go is a two-person perfect information game. Go's rules are simple; however, the number of legal game positions is astronomical, making the board game especially popular with mathematicians and computer scientists.
The rules of Go, according to The Rules and Elements of Go by James Davies, are shown below. …
CSS grid, linear-gradient, neumorphism, and a moment in Go history.
I was inspired to write about Go after watching The Queen’s Gambit recently. Something is alluring about learning a five-hundred-year-old chess opening move. The modern computer can simulate millions of game patterns in a fraction of a second. But it will never know the joy of learning the name and history behind a move.
This article will feature the famous opening sequence in a match between Go Seigen and Honinbo Shusai Meijin in HTML and CSS.
On October 16, 1933, the 18-year-old Chinese-born prodigy Go Seigen faced Honinbo Shusai Meijin, the 21st head of the Honinbo house — the most prominent Go institution in Japan since 1612. It was dubbed the game of the century at the time, for it was the epitome of a generational war against a backdrop of rising tension between the two men’s respective native countries. …
Tips for implementing pay transparency at your workplace.
I spent three years building a human resource information system at a startup. Our team was in charge of building performance reviews, cascading goals, salary history, and other talent management tools.
We also had to implement an incredibly flexible permission system to manage who has access to which piece of information in the product. Because some companies took extraordinary care around their data, while others left everything out in the open. I was always fascinated by how companies treat their data and what it says about their company cultures.
A couple of years later, I talked to Pascal Roy, owner of Elapse Technologies, who opened my eyes to open-book management. …
Elevate your skills with deliberate practice.
In her book Grit: The Power of Passion and Perseverance, Angela Duckworth interviewed dozens of high achievers and noted the importance of deliberate practice in their successes. Below is how Duckworth describes the way experts practice:
First, they set a stretch goal, zeroing in on just one narrow aspect of their overall performance. Rather than focus on what they already do well, experts strive to improve specific weaknesses. They intentionally seek out challenges they can’t yet meet.
This article will identify fundamental strengths crucial to software development and design specific routines to get you into coding shape. …
Tips for choosing your organizational designs.
I first heard about Kent Beck’s product development triathlon metaphor in 2016 when he visited the ThoughtWorks office in New York. Kent Beck identified three stages of the product development cycle — Explore, Expand, and Extract, and proposed that either agile or waterfall development model could be appropriate depending on which stage you are in.
The framework has helped me find words to describe how organizational designs should evolve based on the product development cycle. Below I will outline three patterns of organizational design to complement Kent Beck’s 3X.
Tips for improving your coding style
As a new programmer, you may find it frustrating to have to consistently write grammatically correct sentences in order for the computer to understand you. This is because — unlike human languages — programming languages are unforgiving. A misspelling or misplaced punctuation can render an entire program unusable.
However, a programming language is a communication medium for both computers and humans. After overcoming the obstacle of making computers compile your code, you have to work on making your code legible to other programmers so that it is easy to extend and maintain. Your coding style reflects where you learned to program, what editor you use, which languages you favor, and how you collaborate with others. …
Solving the wrong problem is often more costly than building the wrong solution.
As a software developer, I am a natural problem-solver. I take one look at a problem and immediately start thinking about how to solve it in my head. However, plunging head-first into a solution without seeing the big picture first is often counter-productive.
In this article, we will take a look at three software development practices that can help us find the right problem to solve. But before we talk about coding, let us first take a page from product management–the profession specializes in finding problems.
The product development process consists of two stages — problem space and solution space. Problem space is where you attempt to identify a customer need. Solution space is the product that addresses the need. Working in problem space involves listening to customers, capturing their needs, and asking questions to paint a picture of their situation. …