Secrets of Great Programmers


Programming is a difficult job that requires a lot of hard work to be truly successful. People will often ask if there are any secrets to being really good at programming. In this article by Jens Rantil we learn some of the best kept secrets of great programmers. His list includes 25 secrets, but here are just the first 10:

  1. Most of the time, using inheritance is a bad object oriented design in the long run. It reduces reusability and testability of code. Consider using interfaces instead. See No, inheritance is not the way to achieve code reuse!. Related;
  2. Avoid introducing an interface until you are comfortable in your domain. “Premature interfacing” can also lead to design issues down the road.
  3. Deep nested code (both intra-function and inter-function) is 1) harder to maintain and 2) more prone to bugs.
  4. Estimating time is hard. One reason why Scrum and sprints are used in many places.
  5. Proper encryption is hard. Don’t invent it yourself unless you have a good reason to.
  6. Side-effect free logic is nice. It makes it easier to reason about state (see below) and generally simplifies automated testing.
  7. Learn to reason around state and lifecycles.
  8. Concurrency can be hard without the right primitives. Threadpools, Queues, Observables, and actors can sometimes help a lot.
  9. Premature optimization is the root of all evil. A good general development process is: 1) Get it to work. 2) Make the code beautiful. 3) Optimize.
  10. Know your basic data structures and understand time complexity. It’s an effective way of making your code much faster without adding complexity.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.