Letters to a Young Programmer – Start Small

If you are just starting out programming, you may want to learn a language, and start exploring by building small applications.

Don’t worry that you don’t know object-oriented analysis/modeling and design. You can learn them when you need them. This is true of algorithms, data structures, object-orientation, software engineering as well.

You can build simple apps with procedural programming and learn to reuse first using functions. As your apps grow in complexity, you appreciate the need for organizing these functions as classes/methods. (You may not even get there if you start out with a functional programming language).

As you deploy your apps and fix bugs, you will come to appreciate testing. If you need to update your app frequently, you will understand the need for automated testing.

As your apps get used more and more, you will understand the need for improving the app. You will learn the need to simplify the code (helping you fix problems faster), and the need for profiling to identify slow performing subsystems.

Learning to build computer application by step-wise refinement is a path to learning and improving. If you need to rework the code, you will learn to re-factor. Automated tests will improve your confidence in refactoring without breaking existing functionality.

Programming is a creative endeavor. It is enjoyable, because you are solving problems big and small. Puzzling over the parts that do not work, trying out things, learning from others, is all part of the experience.

Programming is a journey of self-discovery. The little bits of happiness during the journey add up.