Am I proficient in Java?

Multilingual in both natural and computer programming languages

Posted by Siwon Kang on January 30, 2020

I am an embedded software engineer and my project is written in C. I started programming in C and learnt computer algorithm and data structure in C like most of the Korean software developers around my age. I can say C is my mother tongue.

My native language is Korean. My parent is Korean and I have been living in Korea all my life except for 3 months trip to Australia. But I do speak English as well. I have no problem on written/verbal communication in English. I can't stop talking when I hang out with English-speaking foreign friends. I gave many seminars and trainings in SanJose, CA. I don't feel any frustration with speaking English.

My second language is Python. I can code all the programs that I wrote in C into Python. The CGI script working behind my webserver is in Python. When some idea pops into my head on my way home, I draw a sketch via Python programming application in my phone. From simple shell script to an application with curses UI(https://github.com/kkangshawn/SimpleWiFi), Python language is my first option just like English is when I write a document.

What else?

Truth to be told, I have not been involved with any of Java projects at my work. I only made a few Java program as a prototype before I got used to Python. Therefore, if the question is asking me whether I have a proven record of making Java application, my answer is No.

However, if I am asked whether I am capable of making a good Java program, I'd say YES.

Algorithms, Data structure, Design pattern, and other aspects composing a good software engineer are language independent. In comparison with acquiring solid knowledge in these fundamentals, it is not a big deal to learn a new language.

I worked on a project that developed an application for Miracast(name varies by manufacturer, e.g. Wi-Fi display, Screen Mirroring, Chromecast, and so on). It was in C++ with boost library which provides diverse containers and Java-like designs. Singleton pattern, Finite State Machine, Multi-threading, IPC, and many object-oriented properties were brought to the application. My python applications also use many techniques that can be seen in Java. There are just few things left that make me feel new to Java language.

Moreover, I feel comfortable in learning a new language. I write a code in C, C++, Python, HTML, javascript. I am friendly with a syntax of json, xml, css. New languages, Kotlin for example, which I am fond of lately, no longer show me something new. They just surprise me showing off their tidy handy grammar. Time taken to learn languages decreases over and over. I am not underestimating the difficulty but now it needs a couple of months for me to get adapted.

If no trouble, then it's a matter of preference

There are foreigners living in Seoul. Some of them, more than expected, don't speak Korean. A friend of mine told me they do not actually need to learn Korean because every signs has English translation on it, every waiter/waitress gets an order in English. Every bus and subway tells them a name of stop in English, even in Japanese and Chinese as well. If I don't think about emotional aspects, like repect from here, I have no reason to blame them because no Korean asks them to speak Korean.

For better or worse I have not been asked to implement something in Java. So I have used a different one.

A few years ago, I visited Japan for travel. I spoke English on my first day and felt huge frustration in communication. So I spent that night to refresh my knowledge in Japanese which I studied for 4 years during high school and university. It was not that difficult as I felt like it was yet alive in my body and brain. From next day, I had no problem.

Last year, I went business trip to Shenzhen, China. I took an Elementary Chinese class for 3 months more than 5 years ago. Since business language was English there were no problem at work. But there were always problems elsewhere. I was not able to come back to my hotel because taxi driver did not understand English name of my hotel and I did not know how to pronounce the name in Chinese. So, simply I learnt it. It was definately easier than when I studied Japanese not because Chinese is easier than Japanese but because I am trained learning a new language. With the similarity in vocabulary I can see that there are something common that accelerate the progress. Anyway, I had no problem from next day, on coming back to the hotel, at least.

My point is, language is not a barrier to me. It just needs a couple of months to use, that's it. If I come across a new (key)word, I just go open a dictionary/search google. This takes tiny fraction of my time and won't repeat more than 5 times, from my experience I'm sure of that.

Language is not a problem to me. I am accustomed to heterogeneity. And fortunately, I like a new challenge.