One Lone Coder

Through the magic of Youtube’s recommendation algorithm, I was shown Javidx9’s youtube channel, and his videos on developing a 3d graphics engine from scratch, with C++.

This is exactly the kind of video I wish I watched 15 years ago. Perhaps then, I would have stayed in C++ and dived further into desktop programming, instead of deviating into web development, which seems like an ever-expanding void of disciplines.

Now, if only I have a Windows machine…

Baseball

I had a discussion last week with my SO regarding Japanese and their interest in baseball. Baseball isn’t something that you can play alone. There is no one-single-person who will ultimately win you a game. Every player is expected to at least be well-rounded, before they excel in something (pitching, batting, etc). This can be seen outside of baseball, in the way they interact with one another; In a way, being quirky is frowned upon. Even my SO has the tendency to discourage me from doing something outside of the norm when I’m in Japan. The good thing is, I’ve learned a lot of “good manners”. The bad thing is, I’ve started overthinking everything I do, because I worry whether I’m committing any faux pas.

Our discussion moved a little to the Japanese working culture, and how it differs from other countries (or in my context, I was comparing it with western culture). In Japan, everyone starts off with almost the same salary, the same qualifications, and the same skillset. They eventually branch out a little, but in most cases, if you are X age and doing Y work, your salary will usually be Y range. There are no star players. Your worth increases with your experience, but capped by your number of years in the workforce.

In the western culture (from my observation of my company’s mostly caucasian-dominated upper-management colleagues), everyone’s worth is unique to their experience.┬áMy manager is younger than me, but he’s moving forward really fast (being promoted from contractor to in-house developer to manager level within 6 months). Another has gone from being my ex-manager to being full-time VP, or perhaps, he’s already, the president of engineering. Ever since he went on to picking up more higher-level tasks, I have not spoken with him at all.

The developers in my current company are expected to excel on their own; teamwork is a minimum expectation. Being Asian (and influenced by my SO’s Japanese way of doing things), I expected teamwork (or as Japanese put it, the Wa (harmony)) to be higher priority, but instead, I have really talented colleagues who are independent and almost always doing things on their own first and discussing the effect of their actions during feedback sessions. In the Japanese working environment, making mistakes is generally a bad thing, so they’re really, really slow at making decisions. On the bright side, at least everyone on the team unanimously agrees to something before moving forward (even if it’s painfully slow).

Anyway, my point of today’s monologue is that I have realised, I appreciate teamwork and communication more than talented colleagues. I mean, yes, clever colleagues are valuable to writing good software, which ultimately impacts your products, but if they’re not good at teamwork, I think there’s little motivation for other colleagues to be emotionally invested in the company. Personally, I love that I have full freedom in the work I am doing now, but the lack of communication and teamwork from my colleagues makes me feel lonely sometimes. I asked myself, “If I left the company today, would I miss anyone in the company? And, would anyone miss me?” I think, sadly, the answer to both questions are “No”.

However, do I like my work? Am I learning a lot? The answer to both is “Yes”, so I think my sentiment sort of balances out.

Daily art

New Year Resolution

I decided that beginning this year, I would challenge myself to doodle something every day. I don’t have a perfect streak, but I’ve been able to draw something almost everyday since January 1st, and I’m pretty happy with myself.

If there’s one thing I’m really proud of (which I’ve mentioned numerous times before), it’s my discipline to push through things even when I don’t feel like it. I’m not saying I’m more disciplined than other people, but I’m definitely a whole lot more disciplined than I was 3 years ago.

Before I forget: If you’re interested, my art page (along with links to my other pages) is here: http://wyleong.tumblr.com.

Online Identity

After thinking for a long time, I have decided to go back to anonymity. I have removed all traces of my real face in my active accounts. Previously, I had wanted to present myself online as a professional programmer, since most programmers do that. But I realised, what’s the point? Putting my face out there online doesn’t really add value to my identity.

From now on, I’m going to draw seriously in my free time. I’m at my second freelance gig now, and I have a third one in queue.

Programming is fun and all, but that’s my day job. In my spare time, I’m going to do what I enjoy most — illustrating, and most importantly, making extra income out of it.

I will update this blog from time to time, so no worries about me disappearing! In fact, if my schedule eases up a little later this year, I might even start programming for fun again. Ah, it’s pretty nice to have something positive to look forward to.

Career

As for my job hunt? I’m still casually looking! The last interview I had was very positive (or so I thought), but the interviewer rejected me with a reason along the lines of “we’re looking for a manager-type person, and we don’t think you’re ready for the role”. I was a little taken aback because I (and even my recruiter) thought the role was for a regular web developer. It was the first time I got a job application rejection with the response that I’m “not ready for a managerial role”, and it made me think that I should put my head down for now, and work hard to be worthy of being manager.

Well anyway, there’s the saying, “when one door closes, another opens”. Perhaps it was an indication that there are better things in store for me, so I just need to improve my portfolio in the meantime.

Jobhunt

I haven’t been job hunting as actively as I did before I got my new job last year, although I admit, I was still casually looking. I am happy with my current job though. So why, you might be thinking, am I still looking for a job? Partly because I’ve been living in Malaysia for all my life, and I would like to at least work abroad once in my life before I am too old to move about.

But wait, some of my friends might ask; Isn’t my current job a remote job? Well, yes! And doesn’t that mean I can literally work out of anywhere in the world, because I am officially a digital nomad now? True. Unfortunately, my salary is still paid at a Malaysian rate. That means, unless I am a single adult with no commitments (house/car/student loans, family responsibilities), then yes, I can get by in most parts of South-East Asia if I live like a minimum-wage earner. Emphasis on “no commitments”.

So I’ve been casually looking for jobs recently, especially ones in Japan, but as you may have guessed from this post, I have been unsuccessful. Partly because my skin isn’t white (so I couldn’t find an English-teaching job), and partly because South-East Asians are generally regarded as cheap labour (so I couldn’t find a decent programming job that doesn’t pay a junior rate despite my experience and age).

That leads me to my next thought; I’ve attended over a few dozen interviews by now, that I’ve come to realise that I either have to be Really Damn Good, or I’m just no good at all. I managed to secure my current job because my employer tested me on my skills to build an app with React from ground up, and I delivered well. However, of the companies I have interviewed from Japan so far, mostly test my ability to devise algorithms or abuse Javascript’s quirks to perform something unusual (usually involving scoping and rendering flow), which I personally think is Nice To Have but not Necessary To Get The Job Done.

And predictably, I have failed all my interviews because I have been unable to solve problems within the 15-minute window I was allotted to think on my feet. Coupled with my current colleagues’ critiques of my inefficient code (I really appreciate their valuable critique and have slowly learned from), it has made me appreciate that I had been really fortunate to have even gotten my current job. And with the regular critique I received from my smarter colleagues, I tend to second-guess my skills, which makes things worse because I never had much self-confidence in the first place, whether my skills reflect it or not.

I do however, have a positive mindset about myself. Sure, I’m not smart like my colleagues, and I’m quite forgetful, but I have long accepted those as my innate traits. I realised that I learned best when I have a mentor to guide me, and I have not had a mentor since 2009 — because from 2010 onward, I had been working completely self-taught. So I thought, hey, I’m Pretty Damn Good because I’m mostly self-taught and have come pretty far in my career. To top it off, I can read some Chinese and speak Japanese now, and my painting skills have somewhat improved (despite my lack of practice) over the years. How many programmers out there have a skill set like I do?

And I still think that when it comes to professional ethics, I am still the best (self-proclaimed) in terms of proactivity and thoroughness of my code. I’m sure that despite my not-so-clever approach to writing efficient code, I still Ask The Right Questions, and have so far written code that have (I dare say) almost no bugs — compared to my colleagues, who may be smarter, but regularly write code that needs to be fixed again and again because they overlooked some edge cases or forgot to handle exceptions.

Yet, despite such a mentality I developed and carry with me, it is not considered a valuable trait during interviews, and as such, I have been unsuccessful in impressing any of my would-be employers up until now. Nevertheless, I do my best to convince myself that I am worth something, at least to the right people.

In the meantime, I can only hope that my secondary skill (drawing) is valuable enough to generate some decent side-income. Perhaps in my future posts, I will talk more about art and less about programming. Not that it makes much difference, though; This blog has become more of a diary than a technical blog.

Hello 2019

I can’t remember where I read this (probably Quora), but it was pretty recent; Some people were discussing online about how difficult web development is, despite the lowest barrier to entry.

I never actually thought about it, but it hit me real hard when I read the argument (to sum up what I could remember): Web development is ever-evolving, making learning a never-ending task. Javascript evolves over the years. We have to learn new frameworks (React, Angular) and drop old ones (jQuery, Bootstrap) if we want to stay on top of the trend and market demand. New tools come and go too (Grunt, Webpack). Customer base (when it comes to freelancing) is so diverse that it is especially difficult to find a gig if you “only know Javascript”.

The landscape of web developers is so divided, it is almost impossible to find two web developers with a similar set of knowledge even though their job title may be similarly called “Web engineer”. We are further divided in UI/UX, front-end, back-end, full-stack, dev-ops, sysadmins… and probably more. In short, being a successful web developer means we have to be at least an expert in one domain (in my case, front-end), and an above-average competency in the others. I can’t just say “I know how to convert mockups into actual websites”, as employers will also expect that I know “how to set up a server, deploy the website, write REST API”, and more. Heck, CMS’s (e.g. WordPress and Joomla) are also a subset skill of web development that I don’t have, but is sought-after by a certain group of clients.

The discussion above was compared to traditional software development — Just write desktop or mobile apps, iterate, release, and that’s it. It’s all in a closed environment. Software like painting programs, games, desktop applications, are written with languages that have matured and been around for a while, meaning there are seemingly finite amount of knowledge to be gained before they can plateau and live comfortably as an expert. An example would be C++, where the language itself never really evolves too drastically, or at least, for the companies that heavily rely on said languages, they risk a lot if they decide to rebuild their apps in a completely different language or framework. But this is not the case for web developers. We’re always expected to learn new things and forget old things over the years.

It made me realise that all this while, all my self-depreciating thoughts, thinking that I’m a terrible programmer despite my years of experience, is due to the fact that I never stopped learning — that every time I think I’ve gotten better, the web landscape decides to change, and I have to learn something new all over again. It made me realise that I’m pretty much in a situation like Sisyphus, the guy punished to eternally roll a boulder uphill that will inevitably roll back down.

I don’t know where I will be in 2019, but I really want to get back into traditional software development. Y’know, the kind of development where your past experiences in the language is still useful for at least the next 10 years. In short, making games.