Huan Truong

Notes from a developer


Things I learned being a programmer for 15 years

I started writing code since I had my first computer when I was 13 years old. Little did I know I am still doing it 15 years later. Now at 30, I learned the following:

Writing: Most people won't read my code, but many people want to know what my code does. I should spend more time writing to explain what I want to get done, and why, rather than throwing the code out there or explaining what's so clever about the code. Having the repository and publishing the code doesn't mean much if no one knows what it does.

Blogosphere and Facebook: Writing on Facebook means that no one will be able to discover it after the first 24 hours being published in that walled garden. My posts on Facebook get much less exposure than a traditional blog, even on the first glance, it does not look like so. Likes, reactions, comments, and other Facebook "features" are distractions - it gave me the impression that Facebook is the better platform to publish. Writing on a blog sounds like a less rewarding experience, but it is a good investment in the long run.

Designing for maintenance: Most people don't care about my projects, so I better churn things out as fast as I can. Pretending it is a 1000-people project when really it's just me working on the project and set up complicated mantenance rules is a waste of time. I don't need "Signed-off by ..." line in every git commit for my blog. In general, I don't know ahead of time what will be a popular project, so I tend to start my projects with a rather hacky organization.

The value of code: My code on GitHub is like art projects. Copy it.

Maintaining a project: It is important to commit to maintaining what I created.

Impostor syndrome: I don't really know how to code and that is OK.

The 3 AM rule: If I am willing to stay up until 3 AM to do something then I really like it. If I am not, then whatever it is, I don't like it enough. Doing what I like has so much more potentials than doing what I think is noble.

Networking: Not my thing, I just give up pretending that I'm comfortabe with face-to-face meetings and introducing myself to people at places. But I can send emails to people. To me, emailing is the best way to know and communicate with people.

Being consistent: Writing code and getting things done is like depositing money in the bank. Being consistent is much more important than being clever or heroic.

Developing a taste: Having a taste on what is good, the style I truly appreciate, and giving meaningful feedback is hard.

Staying humble: I found out that many people will perceive that programmers are smart, weird, and clumsy in social settings. I think those impressions are not unfounded – but being smart doesn't mean that people like me being a smarty pant, which I tended to do a lot.

Finally, it is okay to flop. There were and will be flops – and a lot of embarassing moments. What helped the most was to ignore the flops and burying my head in the sand and keep going. It is always important to keep going with a big warm heart, a smile, and be optimistic. And that is not easy at all.