### Tek's Domain

#<NTA:NnT:SSrgS:H6.6-198:W200-90.72:CBWg>

# Programming Isn't a Skill, It's a Mindset

## Spoiler

Or as those darn scientists insist on calling it, ABSTRACT: A programmer isn’t someone who can write code, a programmer is someone who can think.

When most people speak of, are told of, or think about, a “programmer” as an abstract being, they either picture one of two things: Either someone in their favorite all black gear, sunglasses, and a lime green-on-black terminal window open with lines flying by (see also: hacker), if they’ve watched too many movies, or someone sitting at their computer with a text editor / IDE / pick your favorite app, typing code into.

They’re thinking of the outward skill of a programmer. Do not get me wrong, good programmers do need some physical skills, such as good typing, but by far, that’s not the majority. No. A programmer is defined by their mind. Their thought process, how they take a problem, disassemble it, synthesize a solution, and then find a realization of that solution (write it). A true programmer is someone who has strong logical thought, but with that pinch of creativity that causes those rare “This shouldn’t work but I’ll try it anyway” moments. A true programmer is someone who can hold vast amounts of concepts, concurrent thoughts, and state of what they’re doing in their head, at once, for extended periods of time. Writing code, or at least, knowing what to write when to write, isn’t it. Syntax can be looked up. The exact semantics required to turn your idea into computer (compiler, at least) understandable words and symbols are easily found online. But they are nothing if you don’t have a meaning behind your code, a concept to put into reality. The internet cannot write programs for you, but, it can help write your programs with you. We, as a collective entity, are the type of people not to back down from a challenge, but to poke and prod, take different angles, and try and find the obscure hole in the proverbial wall that causes it to all come crashing down. Every problem has a solution. It may be hard to see, it may not be intuitive, it may go completely against rational thought, but every. Problem. Has. A. Solution.

We are not hired because we can type for files in content/ into a terminal window, but because we knew that for files in content/ was the best way to accomplish the task assigned. I’ll repeat: Knowing what to write, when to write, is not the hard part. You’ll find that I myself, for example, can honestly claim to have touched dozens of languages in my spare time. Languages have their quirks, some differ on a fundamental level, some take some serious detours from convention, but all can be learned, in time, with a little thought. Without that thought though, there will be no success.

Once one starts to learn programming, they might know static, concrete, completely defined concepts. You might know how to read a string, print a string, and read a string from a file, but if I said “read a string, use that string as a file name, read it, and print it,” you would be lost. Why? You already have the building blocks, you have the components. But you don’t have the “glue” per se to attach them together, and that is something that cannot be taught, but must be learned. Once you’ve gone for a few years, your library of fixed, solid examples becomes a library of flexible, changeable templates. Suddenly, something slightly different from what the examples showed is no longer out of the question: you can abstract the problem enough to bring it back down with working code. And if the example doesn’t quite fit, you know enough to modify it to the point where it can. As you continue your journey, perhaps, you may find you can abstract problems out of the language itself and into purely abstract (drinking game now in effect on “abstract”) form. You don’t think about “Get a line from file separated by spaces” as code:

words = open("filename.txt", "r").read().split(' ')


But more of a “to-do list” of language-independent steps that bridge the starting point to the desired outcome:

* Take filename