David Xiang
  • About
  • Posts
    • Recent
    • Software
      • Technology
      • Management
    • Life
  • Software Developer Life
    • Introduction
    • Buy on Amazon
  • YouTube
David Xiang
  • About
  • Posts
    • Recent
    • Software
      • Technology
      • Management
    • Life
  • Software Developer Life
    • Introduction
    • Buy on Amazon
  • YouTube
ManagementSoftware

Staff Software Engineer Responsibilities

by dxiang 2021-01-19
staff-software-engineer-responsibilities

[October 10, 2021] If you enjoy this article, check out my new post on this topic: Staff Software Engineer Responsibilities — Align With Authority.

The path of the Staff Software Engineer represents the career progression of a technologist. Senior Engineer leads to Staff Engineer which leads to Principal Engineer which hopefully leads to a comfortable retirement. Unfortunately, Staff Software Engineer responsibilities are often poorly defined by management. The goal of this article is to give clarity to these responsibilities so aspiring Staff Engineers—and their managers—can perform their jobs more effectively.

Continue Reading
SoftwareTechnology

Kafka As A Database? Yes Or No

by dxiang 2021-01-10
kafka-as-a-database

I recently read through a Hacker News thread discussing the article “Kafka Is Not A Database”, by Arjun Narayan and George Fraser. The opinions behind this topic are fascinating and I enjoyed sifting through comments from both sides of the table. For the purposes of this post, I’ve labeled these two broad groups of thoughts as Team Blue and Team Red.

Team Blue believes that Kafka, a popular streaming platform, has the potential to be the source-of-truth for your data—replacing one of the key responsibilities of conventional databases.

Team Red strongly disagrees.

The following is high-level summary of these opinions.

Continue Reading
Software

Software Engineer Vs Programmer

by dxiang 2020-12-31
software-engineer-vs-programmer

The difference between the titles Software Engineer vs Programmer vs Hacker vs {other_coding_title} is rooted in a person’s ideals. This difference is succinctly summarized in the wonderful article 3 Tribes of Programming, where the author buckets programmers into three distinct “tribes”:

You are a poet and a mathematician. Programming is your poetry

You are a hacker. You make hardware dance to your tune

You are a maker. You build things for people to use

josephg.com

The author asserts that all coders lean towards one of three tribes—The Poet, The Hacker, or The Maker. Even though a stark contrast is made to separate these groups, these tribes are not mutually exclusive—many programmers are Makers by day, Hackers by night, and aspiring Poets by weekend.

Software Engineer vs Programmer is a false dichotomy I’ve created to separate Makers from Non-Makers. I believe this separation to be relevant because the majority of us are Makers by profession—myself included. Without a doubt, the most accessible path to make a career out of code is the path of the Maker, or the Software Engineer.

If the Maker represents the Software Engineer, who is the Programmer? These are the Hackers and the Poets. These are the coders that code for the raw love of computing, the people who rightfully put the science in computer science. You’ll find these “purist” programmings developing new languages, tweaking assembly, and occasionally scoffing at the work of Makers. Pursuing a career as a Programmer will not be as accessible as pursuing a career as a Software Engineer.

Practically speaking however, this kind of separation is not helpful; everyone writes code for their own reasons. Since the majority of us are Makers, let’s dive into what’s actually important for a Maker to focus on.

Continue Reading
ManagementSoftware

The Debugger’s Mindset

by dxiang 2020-08-18
software-engineer-vs-programmer

Debugging is a critical skill. More important than the skill is the mindset. The debugger’s mindset is the attitude that you must always understand the why behind a problem; any ambiguities or unknowns are unacceptable. This mindset has the potential to carry you from debugging small functions to solving difficult organizational issues.

Continue Reading
ManagementSoftware

The Importance Of Technical Planning

by dxiang 2020-08-10

Creating a technical plan is a sign of professionalism and maturity as a software developer. No matter what you’re working on, whether it be a straightforward feature extension or a massive data migration, a technical plan must be written.

Why Should I Write A Technical Plan?

  1. A written plan forces you to think deeply about your work.
  2. A written plan facilitates communication. Review it, talk about it, reference it.
  3. A written plan serves as documentation. What did we set out to do and how did we do it?
  4. A written plan organizes your execution.
  5. A written plan invites collaboration, which begets technical thoroughness and stakeholder alignment.
  6. A written plan signals professionalism.

As you write your technical plan, here are some ways to ensure the process is as effective as possible.

Continue Reading
Software

Complete Code Review Checklist

by dxiang 2020-04-12
code-review-checklist

Code reviews are an essential part of software development. To be good at the craft, we must be able to review the craftsmanship of others. The more books you read, the better you write; the more code you review, the better you code. The following 12-item code review checklist is a breadth-first traversal; each item is presented at an extremely high-level and deserves more of your attention.

Continue Reading
Life

The 1% House Edge

by dxiang 2020-04-02

If you’ve ever hit the tables in Vegas, you’re no stranger to the infamous mathematics surrounding house edge. What is this phenomenon? House edge is a built-in advantage, designed into every game, that guarantees the casinos make their money. This edge can be very small, 1% or less, yet it pays for opulent hotels and endless rows of lobster buffet. As the saying goes, the house always wins.

Continue Reading
Software

10 Bad Habits For Software Developers

by dxiang 2019-12-05

Any developer, with any level of experience, can have bad habits. This is the junior developer neglecting the ripple effect of his changes. It could just as easily be the senior engineer rampaging through the codebase with her rewrites.

Bad habits are just habits; they do not define a person or their abilities. When your colleague’s code falls below your expectations, it’s unfair to point fingers and blame them for your company’s growing mountain of tech debt. With large-scale software development, success and failure are never attributable to individuals; success and failure are attributable to teams.

Bad habits can be replaced with good habits. Here are my top 10 bad habits for software developers. Watch out for these—we’ve all been guilty.

Continue Reading
Load More Posts

About Me

About Me

Hello!

My name is David Xiang. I am a software developer based in New York City.

Search

Keep in touch

Facebook Twitter Instagram Linkedin Youtube Email

Categories

  • Life (5)
  • Management (16)
  • Software (19)
  • Technology (4)

Join The List

Subscribe to my Newsletter for new blog posts, tips, and technology updates. Let's stay updated!

Software

  • S3 Express One, Value-Less LSM Trees, ShardStore

    2024-02-04
  • Raising The Alarm

    2022-12-22
  • Software Project Planning

    2022-07-30
  • Monolith To Microservices Vs. Your Organization

    2022-01-24

Management

  • Raising The Alarm

    2022-12-22
  • Software Project Planning

    2022-07-30
  • Art or Science?

    2022-04-25
  • Guidelines For Criticism

    2022-03-09

Life

  • Art or Science?

    2022-04-25
  • Guidelines For Criticism

    2022-03-09
  • 5 Mistakes That Damage Your Personal Brand As A Young Professional

    2021-10-27
  • Communication For Leaders — Be Generous

    2021-09-20

Join The List

Subscribe to my Newsletter for new blog posts, tips, and technology updates. Let's stay updated!

  • Facebook
  • Twitter
  • Instagram
  • Linkedin
  • Youtube
  • Email

© David Xiang