My life as a software developer

Towni Eyan
Jul 20, 2017 · 6 min read

I was always fascinated with technology, science and maths, just to name a few. Programming was something which helped me combine the three. I started coding from the age of around 11 or 12. I can’t accurately pinpoint the year. Although I can probably do so based on information in my backups and storage but that’s not what I’m interested in. I think the important part was how I got into it and what kept me going.

Apparently, I’m more productive during breaks and holidays. That’s when I have usually have reduced stress and extended free time. Winter holidays were my favorites as they were longer than summer holidays and acted as a nice break from school along with all its hassles.

As I loved technology, I spent a large portion of my free time browsing the internet, searching up topics which interested me. I was intrigued by 3D modeling, game programming, web development and 2D designing (with animation too). The first time I got my hands dirty was with 3D modeling. I appreciate how simpler softwares were back in those days (around 2008). They were faster and easier to learn. I’m terrible with dates but I can make it better by thinking associatively; that is, trying to connect major events in my life with my experiences. 2007 was the year my eldest sister got married and it was around that time I started using the internet heavily, searching for stuff.

3D modeling was fun and helped me broaden my views of the usage of computers. I could see how different it is from using the computer for internet browsing, documenting and other light and simple activities. Anim8or was the first software I used for 3D modeling and animation. It was really simple to use and was pretty straightforward. With assistance of few textual (accompanied by screenshots) tutorials, I successfully modeled an eggplant! Yes, it was probably one of the ugliest eggplants ever modeled in the computer but hey, it opened a pathway; a pathway towards productivity and creativity which changed my life forever. It got me hooked up and addicted to technology.

Concurrently, I was immensely curious about game development. In fact, gaming was the only reason I started using computers in the first place. I used to watch my sisters play games for me: House of the dead, Road Rush, Age of Empires I, Virtua Cop, just to name a few. My sister was pretty good with shooting games. I’ve yet to meet another female who can play as well as she did.

So it happened, one day in my winter vacation (as you probably guessed it already), I was searching about game development. How games and programs worked and operated always seemed more like a magic to me. I love how Richard Dawkins puts it up in his book, “The Magic of Reality.” It explains how things appear magical when we’re unaware of the mechanisms behind it. Nevertheless, I came across Game Maker after googling up something like, “How to make games?” It was an amazing tool for making games easily. It was newbie friendly and had a drag-n-drop interface for programming games. It was the first time I got anywhere close to programming. After few years of usage, I made variety of games with it. From medieval castle based games to space shooters.

The best part of Game Maker was that you don’t have to necessarily write code. You could use the GUI for doing things the code would do otherwise. When you prefer code, there’s a built-in scripting language called Game Maker Language, abbreviates to GML. I personally believe it was one of the best ways to introduce myself to programming, unlike the way traditional education system does. Game Maker helped me grab the concept of programming and game development faster. Over time, I thought of moving to someone new and interesting: Web Development.

Web Development was different back when I started. Adobe Flash and Java applets were still alive and well. Adobe Flash used to power YouTube’s video player. It was prominent back then. Javascript was great but not half as amazing as it is today. HTML5 didn’t exist. The world of softwares move really fast. Faster than you can anticipate. It’s pretty cool to observe new changes. I was always passionate about softwares. I used to collect softwares in my free time. I’d try out multiple softwares of same type and would compare and contrast between them. Updating softwares and noticing the changes was fun and exciting.

I played with XHTML, CSS, JS on the frontend with PHP and MySQL on the backend. The combination is nostalgic to me, reminds me of childhood memories. I used to rush home from school and work with web development for a long time. I remember watching 200 PHP tutorials by Alex Garrett from PHPAcademy at one go. Internet connection was horrible in my place but still had to quench my thirst for knowledge. As I learned, I started working on a project called Onwebed just for fun. It started out as a Content Management System and was pretty much an application of the skills and knowledge I gained everyday. I used Drupal, Joomla and Wordpress before. Drupal was different but wordpress and Joomla felt too specific. I wanted something more abstract yet simple. This is one of the primary reasons behind Onwebed. I wanted a CMS but it would be different from mainstream softwares of its kind. I worked on Onwebed for 5–6 years slowly, building around 7–8 major versions over the course of time yet releasing none. I’m a person who’s more of a perfectionist. I rarely get satisfied with my work, at least not enough to show it to other people and/or publish it. Onwebed was designed to be modular and abstract. It doesn’t care what you’re building but whatever it is, it was made to serve your purpose well.

I always loved GUI. Command line tools were nice and all but who doesn’t like a native looking interface, indistinguishable from regular programs? At that time I was 13–14. I used to experiment with different Operating Systems, jumped from Linux distros and switched between desktop environments. From standard Gnome to Unity to XFCE. XFCE was one desktop environment I was satisfied with. Partly because it was lightweight on my low spec laptop. Moreover, it served my purpose well and was decent looking. Looks do matter, don’t they? In a short period of time, I became extremely comfortable with the setup. A strong desire to make GUI programs drove me towards C, C++ and Java. I appreciated Java for allowing me to quench my thirst with least effort. However, I wasn’t happy with Swing. It wasn’t native and not quite impressive. C, C++ with Qt framework offered me hope. This is how I got introduced to these languages.

Linux helped me see the importance of modular design and command line interface. Prior to that, whenever I thought about a program, a traditional program with windows, menus, buttons, etc came to my mind. It’s not always necessary to have a GUI interface. I see command line interface as a way of chatting with the computer, one way of giving it orders and instructions. Want the system to remove all the .html files? Just send this message, “rm *.html” where ‘rm’ stands for ‘remove.’ Unlike regular people, the system will see and respond to your message instantly by removing all the .html files in the current working directory. It’s faster to talk to the system rather than opening windows, clicking buttons, etc. You can have a centralized interface too. One place to operate the system from, not a bunch of different windows for you to switch back and forth.

I learned through the basic economic principles of supply and demand. Whenever I get an urge to make something (you can see that as a demand), I try quench my thrist (supply) in any possible way. I love having the habit of being systematic, punctual and someone who follows basic rules and protocols. Moving in small steps at a time and smelling the success helped release dopamine in my brain. I never looked at a tall building and felt reluctant to move to the top floor. Instead, I looked straight ahead of me and thought about getting up the stairway one step at a time. Putting my feet on each step and sensing my increased altitude felt good and was something that kept me going. The idea is to move towards your goal gradually, in small steps at a time and not being overwhelmed by the entire process; the entire process may be too lengthy to distract you from what you should be focusing on.

The way I prefer it, the first few steps in most software projects include documentation and unit tests followed by actual code. I make plans, write small units of documentation to help me note down how my program may function, write unit tests to define how the program should behave and function based on the chunk of documentation and finally write the code to pass the unit tests. This repeats unit by unit until all my demand gets supplied. This is what I like to call documentation driven development.

)