Software development requires certain capabilities which evolve from day to day. There are some principles that, even as time goes on, will always be beyond us. Those principles are the following:
You Ain't Gonna Need It
This is a principle that belongs to the initial stage of the eXtreme Programming (XP), which indicates that we don’t have to implement a functionality until it becomes necessary.
This implies that we don’t have to implement any functionality if we are not 100% sure that we are going to use it. It’s better not to waste time developing something that we might not use and only represents dead code.
Keep It Simple... Stupid
This is not a tech only principle; it’s been used in different professions such as marketing, finances, etc. Here we establish that the majority of the systems work better if they are simple, and the complex functionality of a program is executed in simple methods allowing for easy and correct maintenance. As Robert C. Martin said:
“It is not the language that makes programs appear simple. It is the programmer that make the language appear simple!”.
Bottom line: more simplicity = less complexity.
Don't Repeat Yourself
This principle was formulated by Andy Hunt and Dave Thomas in “The Pragmatic Programmer”. It’s very important to consider while developing software, because it foments the re-utilization and refactorization of methods and functions. DRY does not only refer to code, it also refers to any object like a database schema, test plan, and even documentation. The famous Copy & Paste method goes against this principle, because it does not reuse the methods and functions that we have created.
As you progress your development skills, these principles should become second-nature. Great programmers develop habits according to best practices and principles that serve to develop code that is clean, easy to maintain, and can be deciphered by any programmer. Investing the time and effort into learning, utilizing, and internalizing these principles will pay off in the long run.