If you don't know where you're going, how will you know when you're there?
Life, mentors, bills, luck and curiosity have steered me through many roads in tech. In 9 career years I've learned my way through Web, Java, Enterprise Java (two different beasts), Liferay, Web Services, iOS programming, game development and many other assortments.
I think I have finally understood my path. It's always obvious in retrospect.
I was 8 years old when my mother bought me an HC85 computer, the romanian clone of a Sinclair ZX80. She saved quite a bit for it and for programming lessons. Like any child I was fascinated by new things, but as my teacher tried to impart his wisdom on subroutines, variables and other intricacies of BASIC my eyes often glazed over. When he showed me how to draw a dot, a line and a moving circle I was hooked.
High school piled upon me heaps of algorithms, maths and abstractions that really struggled to get along with my brain. What latched onto me was the passion for computers that my CS teacher, Doru Anastasiu Popescu projected in his class. It was that spark in his eyes that lit a fire in mine. To this day it is one of my most important criteria when recruiting teammates. I am really grateful for his guidance and inspiration; I also hope he has forgiven me for earning 5 points out of 100 at that CS contest where he confidently sent me all those years ago.
You see, that contest, like many other computer science ones, involved reading data from a file, doing some funky math with it and writing into another file. No UI, only abstractions. I don't remember what was the problem description. I don't remember how two hours flew and in what town I was. I remember coming home red faced and thinking only of what will I tell my teacher?
This would be one of the many moments of self doubt that would follow. Am I a good programmer? Am I really fit for this? Why are these people encouraging me? You want to assign a team of how many to me?
While this is cathartic for me, I am also writing as an encouragement to others. I think constantly questioning whether you are good at what you are doing is an important part of growing up as a person and professional. You also need to move past this and tackle the next challenge.
In the end I graduated with a MS-Paint-like program that had no less than 5 windows and many instrument toolbars. I was quite proud in having written this program from scratch and not redoing something from a previous generation of students. I clearly had a lot of fun writing it, testing it, laughing at weird display bugs. I distinctly remember presenting it to the commission not worried that it won't work but with the enthusiasm of potentially expanding the program.
I'm 32 this year and I've spent a lot of time riding technology's waves, trying to find my path. Again and again I've let my brain pull me into directions which seemed interesting to me but seemed mere distractions compared to "real work".
Two things remained constant throughout the years: my interest in user interfaces and my plethora of abandoned side-projects. When I was a child, it was circles on a screen. In college, OpenGL graphics and multitouch interfaces. As a developer, "web frontend" work. As a senior developer, more frontend work except this time with enough experience for people to ask me how I think UIs should actually be built. As a Frontend Technical Lead (talk about title inflation!), a curse for junior developers when I spotted a 1px difference looking across their shoulder.
With many projects on the path, I ran into the abstractions again. Web Services. Enterprise Service Buses. Data storage and distributed platforms. Big data and batch processing. BPM and data mining. A myriad of frameworks later, I've come to this conclusion: these are all wonderfully complex puzzles that algorithm minded programmers love to solve. I understand them, worked with them but that is not where my heart lies.
I walked a good part of it, but now I've found out my path's name: User Experience design.