I don’t even know what the difference is between coding and programming and try as you may, it will be hard to convince me with any explanation. I think it’s really just a play on words.
We may say that coding is just writing the code and programming is actually designing the algorithms. To me, that’s tomato-o tom-ah-to. What is important is that a programmer has to solve a problem from defined inputs, and she will provide the computer the steps to provide the desired outputs. Coding and programming are rarely performed by two separate people.
Programming is part art, part craft, and part science.
Some core computer science problems are well known and understood. The solutions have been created by some really smart people. Those solutions help us build and tackle more specific problems. Examples of those solutions are sorting algorithms, common data structures, compression, and encryption just to name a few.
Other problems are specific to the problem domain or type of application. Examples of that are the way we design large applications. These problems fall in line with software craftsmanship. They are of concern in order to ensure code quality and maintainability that will support a healthy lifeline of the application.
Every problem domain has unique challenges and highly involved business logic. However, the overall structure and process of creating software are quite common across domains in that all applications require a great deal of care. The kind of care that fills the code with quality to make the product maintainable.
These concepts require a great deal of study of many topics to include, design patterns, tenets of object-oriented programming, use of best practice tools that facilitate solid design, readable code, high cohesion, loose coupling, and code re-use.
Every problem that you run across may or may not have a solution. In most cases, the solution will not be known to you. This is where art comes in. You must leverage the principles from software craftsmanship and the scientific concepts to create your very own solution. It is your creativity that will help you create abstractions of real-life components to process the information.
In its current state, the coding profession is a hot topic. It is a fast lane to professional success and financial reward. You’re bombarded with this sales pitch and that sales pitch that you too can become part of this gold rush and you can.
There, however, is no shortcut to learning, you will not by any means absorb all this faster just because someone is teaching you at a more efficient pace.
The faster pace will give you faster results possibly but it will also give more cuts and bruises along the way. This trauma may make you want to throw in the towel and quit. Be patient.
Many of us had an easier start face today. We started when coding was much simpler. There were fewer introductions. Fewer technologies to learn. User interfaces were much simpler. Technology stacks didn’t really exist.
The obstacles you face are taller and there are more of them. It can be daunting and even appear impossible. But… don’t give up. Trust the process and keep practicing. You have three whole disciplines to tackle as you go; art, science and a craft.
But… keep doing it. Do your katas. Focus your learning. Fill in the knowledge gaps.
It will not be easy and it will not be quick.
A smooth stone does not become smooth by sitting in calm waters.
After all, creating a great masterpiece takes lots and lots of practice.