I’ve covered diverse topics on my path to becoming a polymath programmer.
- I went sleuthing with Encyclopedia Brown.
- I’ve been a warrior, a mystic, a knight, a mutant, a thief, a superhero and many more in role playing games.
- I went on adventures with computer super spy Orion.
- I was (and still am hohoho…) phenomenal at typing.
- I taught myself the Japanese katakana and translated them into English equivalents (whenever possible).
- I’m well versed in 3D graphics theory and appreciates the beauty in art.
- I studied computer virus behaviour.
- I did game development and researched on related topics.
- I came into contact with the demoscene and appreciates the art and programming involved.
Notice that most of the above had very little to do with programming itself, yet contributed significantly to my development as a programmer. Read up the previous articles at
- Part 1 – The beginning
- Part 2 – Role playing games and computer super spies
- Part 3 – Typewriters, juxtaposition and XT86
- Part 4 – Console games and self-learning Japanese
- Part 5 – 3D graphics and computer viruses
- Part 6 – Game development and Demoscene
Your path is most probably very different from mine. The important thing is that you experience, understand and appreciate the many different fields involved. Programming is just a skill. Your ability to understand concepts and translate that into code is the most important thing you’ll ever have.
Joining the workforce
So my malleability and ability to learn fast was tested when I left school. I had to learn how to write resumes and go through interviews. For seven months (yes, I kept track) I was unemployed.
My big break finally came and my recruitment agent called me up one fine afternoon to tell me I’m granted an interview with a local big company. I had just collected my paycheck from my part-time stint as a data entry personnel. Unemployed again, I was wondering what to do next. That call was a lifesaver.
On the day of the interview, I had to call and say I’ll be late. Bad, bad, bad. It was none of my fault, really. The (Mass Rapid Transit) train I was going to take to reach the company had some trouble, and I was stuck at the train station for a while. Still, I was worried out of my skin.
When I reached the company, I found they rescheduled the person after me to get interviewed first. Determined to make the best of the current situation, I calmed myself in preparation for when it’s my turn. The interview turned out ok, and the interviewer seemed impressed by my qualifications in applied mathematics (cool!). I was eventually hired, and on hindsight, I think the interviewer hired me because he believed I’d be a more well rounded addition to his team. His team members were mainly from the computer science and/or computer engineering background.
So, in the interview, his last question turned out to be an IQ question. You were given a cube, and then had it painted on all 6 sides. Then you cut it with 2 parallel and equally spaced slices from the top. Then another 2 parallel and equally spaced slices perpendicular to the 2 from before. And then you cut it horizontally with 2 parallel and equally spaced slices from the side. Basically you’re left with something that looks like a Rubik’s cube. The question? Give a breakdown of the number of smaller cubes thus cut with the respective number of faces painted on those smaller cubes. I’ll give the answer at the end of this post.
[end of digression]
I finally got a programming-related job! My first two weeks turned out to be nothing like what I imagined. I only knew C and Matlab from university. I picked up a little C++ and Windows programming and OpenGL and DirectX on my own. Only the C language turned out to be useful.
The backend programs were written in C. Fine. They connected to the Sybase database. The what? Thus began my first crash course in the language of databases: Structured Query Language (SQL). I learned how to create tables, run select queries, do inserts and updates and deletes.
Then I had to deal with Delphi components. The Windows interface was coded in Delphi and I didn’t know anything about it. Another crash course from a fellow colleague since I’m to support the program.
The job changes
Well, after 2 years as a contract staff at the company, I decided it was time to move on. Due to my expertise in the team’s system and business logic, I was too valuable to use for programming, yet not valuable enough to be included in higher profile meetings. I was basically juggling Excel spreadsheets for the users and acting as the helpdesk.
I love programming, and I didn’t like being stuck with mainly administrative and system support work. So I left. I joined a startup company as a C# programmer. I learned first-hand the day-to-day tasks involved with getting the first software product out.
It was also unimaginably unbearable. The stress involved with producing a profitable software application, on the first try, at a startup, overwhelmed me. I prefer a more conducive environment for thinking. So I left, again.
I got hired next as a C# programmer with a software agency. I was then sent to work at another company with the agency’s team that’s already stationed there. The job was to create an enterprise system software (yes your warning bells should be ringing right about now) for the company’s workflow processes.
Despite some of the flaws I encountered, I still learned tons of stuff. I learned about custom web controls, really separating the business logic (like, onto a different web server from the application server) and handling language resources (for an international audience). I learned to work with people from many countries and in a big software team too.
When I reached the end of my 4 month contract, I was actually offered a renewal. But I had other plans. The pay left a little to be desired, and I really wanted to feed myself better. I asked around and got my job from the first company back! I’d be in a different team but still close to my original team. Cool! I’d be experiencing a different work team dynamic.
So at the new team, I was tasked with creating a .NET web application from scratch. There were tons more project deadlines to meet, though the projects were smaller in size. I even got to do some public speaking, presenting (web) applications and training users. And I’m still here as of this writing.
Getting to the blogging
I’ve amassed a ton of experience, both programming and non-programming. And I wanted to share them. I wanted to express my ideas and let people know about them so they can learn from my experience and mistakes. Then I found this site by Yaro about entrepreneurship. He’s also a blogger.
I read through his blog posts and found them really informative. So when he announced that he’s going to teach people how to blog, I signed up right away for his Blog Mastermind program. I mean, a blog is a fantastic vehicle to share my knowledge and experience. Compared with my previous web site creation attempts, a blog is probably easier to maintain.
Well I’ve wanted to be more actively involved in online communities, particular the programming ones. Since Yaro also talks about forums and communities, I figured it’s about time to start. And found Dream In Code. The site offers programming help, has great people and I love the dynamics happening there.
The last word?
So, there you have it, my path of learning and becoming a polymath programmer up till now. It’s by no means complete, because I will continue to learn new things and as a result, be a better person and ultimately be a better programmer.
Share your thoughts!
*The answer to the IQ question above is 1 with 0 sides painted, 6 with 1 side painted, 12 with 2 sides painted, and 8 with 3 sides painted.