Being able to translate our ideas into reality is gratifying. As a programmer, we know that there is a very fine line between our ideas and our code. This makes code particularly interesting because it doesn’t conform to the laws of physics as other engineering disciplines do. This makes programming a lot more complicated than engineering because it is wildly unpredictable. Programming involves using imagination, logic, intuition, and memory. Of course sometimes, we are lucky enough to find some real-life scenarios that we can model. It is a tremendous mental game.
Thus, we must have a good grasp these elements to help bring our ideas to life. While we have no direct control over the limits of our computer hardware today, as time passes, it would eventually permit us to do things that we could not do from the previous generation of computers. Logic is a language in it’s own right and it allows us to articulate and see the patterns described by systems. Problem solving is the ability to recognize patterns in the world via a problem-and-solution approach. I categorize problem-solving separately from logic because logic in itself is a broader, more general topic, whereas problem-solving is more about recognizing what kind of problems we are facing and mapping solutions to each of the problems.
Programming languages are the schema through which we articulate our ideas, our solutions, and or our logic to the computer. On each of the topics mentioned above, some degree of creativity must be used to bridge each of these dimensions together which also requires a great deal of memory and imagination. Of course you can get vary far by just mastering one or two of the dimensions mentioned above — but if you do not further your learning — you would be severely lacking in other areas and this would greatly affect your ability to write the breadth of applications that are possible.
As a programmer, I strive to be able to build any application that comes my way. However, doing so requires a lot of open-mindedness, starting over, dedication, and continuous learning. Just when I think I’ve mastered something, there is always a detail about the subject which leads to more learning.
Over my 20 years of coding, I’ve found the one thing that improves my skills the most is starting new projects and approaching it with a fresh perspective. This forces me to abstract away the restrictions held by the technology framework, the language, the traditions, and the convention so that I can utilize logic, problem-solving, and creativity to build the project. Of course it is exhausting to start over, but over time, you really learn to recognize problems as they emerge.
The problem-solution approach is a way to look projects as a set of problems. The advantage of doing so allows us to objectively see what is required for us to accomplish the tasks so we can satisfy our requirements and deliver the project.
Our world is full of problems and there is no shortage of demand for the talent that can handle these problems. This is why the tech (as well as Engineering, Sciences, and Math) roles are in such demand. Software is particularly interesting because it allows the programmer to explore creative ways to solve issues for other people. This is the single skill that will make you valuable as a programmer. The more problems you can solve, the more valuable you will be. The harder problems you can solve, the more valuable you will be.
Even ability to recognize problems alone very useful. Why? Because even if you cannot solve it immediately, you have the advantage of identifying it and planning for it. You can attempt to solve it yourself by telling your client that will take longer because of a particular problem. Perhaps you can map it to a math problem and research it. Perhaps you can find other programmers, mathematicians, scientists, linguists, musicians, or artists who know this domain well to help you solve the problem. Knowing how to ask a question is another very important skill when it comes to writing software. There are many problems out there that are even unsolvable, knowing which ones you cannot solve will save you from a complete disaster.
With all this being said, you don’t need decades of experience to become a good programmer. You just need to keep an open mind, keep learning, keep failing, and keep executing. Never, ever think that there is a single answer to anything in the software world!
— — —
Facebook Page: https://fb.com/intully
Facebook Community: https://fb.com/groups/