What Am I Thinking? (Or How Programmers Should Think)
You may find me silently staring at the computer screen. You thought I’m blank, and you’ll ask what am I thinking. At first, I wouldn’t notice or hear you. I’m completely zoned out. But after you asked me for the second time, I snapped out of my thinking and answer.
What am I thinking? Well, I’m figuring out a code here. How come it’s asking for an admin’s permission when I’m already the admin? There’s something wrong here. But since you already distracted me, I might as well answer your question. Or better yet, I’ll change your question into something like: How programmers like me think?
You see, I’m more introvert. I’m not outgoing like the others. There are days when I think differently and you may not understand why. Allow me to explain the reasons:
I’m a thinker and I tinker.
Whenever I’m fascinated about something, I try to take it apart and see how it works — be it a software or a hardware. So I reduce things into smaller components because it’s easier to understand things in its simplest form. Then, I try to assemble them back hopefully into the original state or most likely into something different, not necessarily new.
Since I am more of a thinker, I do solve problems.
Software and web development is basically problem solving. That’s why most IT companies provide business solutions. Most of my childhood was spent on solving crossword puzzles, or playing games (well, more of the latter). However, I’m a little bit lazy and have a short span of attention for things I’ve done before. So if I found something repetitive, I’d better think of a way how to make it automated so I’m not going to repeat a thing over and over. I would be arranging some parts like a jigsaw puzzle and try to make it work.
I think that everything should be all-in-one.
Take for example the Swiss Army Knife that has different parts that function differently, it’s a beautiful all-in-one product. Amazing! Multi-functions could solve problems. And since I tinker and break things into small parts, I group the parts into some logical classes. It’s easy for me to categorize, classify, or group things or ideas this way. And then I think of the functions, how they could work together. But this kind of thinking is a bit dangerous because I usually end up failing to achieve the initial purpose because I thought of too many functions.
There are times my mind holds everything like a sponge and think like a stack.
My brain could be compared to a hard disk that easily uploads information for a project. Once uploaded, I start working on it. That’s the time I’m completely zoned out. Then comes an interruption, probably a smaller task different from what I’m working on. I put that either on top of my stack, and work on it if it’s simple enough for me to leave the first uploaded file behind. You get what I mean? Getting back could be simple like nothing happened, it was just a TV commercial, or it could be time consuming. Where did I stop? What was that again? Return to step 1. That is why I prefer meetings either on the first or last part of the shift.
I love learning and I strive to improve continually.
Information technology continues to change, and trends change faster than we could imagine. And in order to catch up with the trend, I constantly hone my programming skills. As a polyglot of different programming languages, I should be in the lookout of more things to come. I don’t want to be left behind.
One good thing in this way of thinking, I think of my job as a programmer not just a job. Each application or website that I do is a work of art.