

Deliberate Programming - nbashaw
https://medium.com/on-coding/2204cfa35233

======
notaddicted
I'm not a grandmaster by any means, but these are things that I focus on:

1\. Aggressively avoid techniques and abstractions that have produced bugs in
the past. The "backwards conditional" is an example of this, in languages like
C that will accept _x = 0_ as a conditional, it is safer to do _0 == x_ in an
if statement in case you mistype. Mutability trips me up sometimes, so I try
to never re-assign a variable. I keep links to the source code of key
libraries in my bookmarks bar so I never have the guess how something actually
works. Static analysis tools, and bug prediction tools [1] are two steps I
haven't taken.

2\. Seek out code written by experts and inspect it [2]. If I'm considering
using a new language or library one of the first things I do is to search for
large scale OSS projects. For a new language looking at some of the popular
3rd party libraries can be really illuminating. Especially if you're already
familiar with the problem space.

3\. two words: learn to fuckin' type.

4\. Get familiar with what the history researchers call the _Primary Sources_.
Not just the actual source code but the proposals, the specifications, and the
research reports that are written by the people who conceived the tools that
you are using.

[1] [http://google-engtools.blogspot.ca/2011/12/bug-prediction-
at...](http://google-engtools.blogspot.ca/2011/12/bug-prediction-at-
google.html)

[2] (EDIT) According to Paul Allen, in high school Bill Gates actually went
dumpster diving for source code: [http://www.businessinsider.com/10-things-
you-didnt-know-abou...](http://www.businessinsider.com/10-things-you-didnt-
know-about-bill-gates-2011-4?op=1)

------
nbashaw
OP here. In the spirit of the post, I'd love if anyone has any critical
feedback on the ideas here :)

~~~
davethespider
A great tip I have been using recently is to avoid using cut and paste and IDE
completions.

------
isxek
_Try a new library, or language, or feature of a language as often as
possible. Experts become experts by mastering a ton of tiny things._

Personally, I'd rather go deeper in what I'm learning on at the moment and
finish something substantial before diving into some other topic. It probably
depends on how much of a multi-tasker the person is, but I find it difficult
not to concentrate on one topic at a time.

I do understand what you're trying to say, though.

