loading...

Trying Other Perspectives as a Developer and as a Human

knockycode profile image Jenny Nguyen ・6 min read

What do I mean by trying other perspectives as a developer and as a human?

For 10 years of my life, I tried out different programming paradigms (e.g. procedural, object-oriented, functional) and different martial art styles (taekwondo, mixed, various kung fu) and they all helped me view the world with an array of different lenses.

If you want to know the 10 years of my life in more detail, read on.

18 years old: VB.NET; Taekwondo

I had just turned 18 when I signed up for my first taekwondo class. I didn't need a guardian to sign the form for me then as I was legal to sign it myself; my mum doesn't like me doing martial arts (note the present tense).

I learnt how to build physical strength and increase my flexibility. I learnt how to punch and kick. I learnt my patterns (or poomsae). In the taekwondo context, a pattern is a set of techniques that are executed in order. A technique can be a block, a punch or a kick. Why do patterns exist? Well, they're really pretty to watch for demonstrative purposes as an audience. But for a practitioner, a pattern is considered an array of different techniques that are available and these patterns/arrays are passed down from teacher to student. You can also consider these patterns as textbooks, where you only need to access particular chapters. Other martial art styles like karate have this too -- commonly known as the Japanese word 'kata'.

Taekwondo was my first perspective into martial arts.

A few weeks later, I started my first programming course at TAFE (or community college). VB.NET was my first language. The syntax was simple; I learnt how to create variables and classes. I was OK with understanding logic, I knew how to define functions and how to do loops. I was focused on drilling down my syntax skills and programmatic thinking skills. I hadn't learnt patterns then, nor clean code. A moment of silence for my TAFE teachers who had to look at my spaghetti code. But yes, VB.NET was my first perspective on programming.

19 years old: C# .NET, JavaScript; Taekwondo

At 19, I learnt C# .NET and JavaScript. I was doing a project with two other new developers and we were exposed to the delicate art of zipping our code and emailing each other the zipped files. We had heard of Git but we were already learning so many things, and we were focused on getting our project done by the deadline. C# and JavaScript showed me the perspective of having matching brackets and semicolons in coding if you don't want the compiler to loudly complain, or the interpreter to complain in a silent way (cough JavaScript cough).

For martial arts: I was still doing taekwondo, at the same school. My perspective remained the same here for martial arts. Brute strength to overcome your opponent.

21 years old: PHP, Python, Java, C++, HTML, CSS, Haskell; Jow Ga, Ving Tsun, Lung Ying, Choy Li Fut, Tai Ji

At 21 I learnt PHP and became exposed to svn as my PHP mentor likes that version control system. In my own time, I was getting exposed to the basics of Python and people there showed me the basics of Git. I learnt how to do commits. And the number of zipped files with file names that include the date-time of when I zipped them started to decrease on my hard drive.

I was building up my syntactical skills, my programmatic thinking skills and my creative skills with Java and C++ in an object-oriented way. I was creatively learning how to write more than one working solution to a problem. I was honing my HTML, CSS and JavaScripts by building personal projects like internetworking quizzes. And I was just building my syntactical skills and programmatic thinking skills for Haskell, a functional language.

For martial arts: I made a friend who was starting up a kung-fu school. I was one of his first students and I learnt a kung-fu style called Jow Ga. He then introduced me to other teachers and I also learnt the basic foundation of Ving Tsun/Wing Chun, Lung Ying, Choy Li Fut and Taiji/Tai Chi.

So for programming, I was exposed to many different syntaxes in how to repeat a piece of logic, and for martial arts, I was exposed to many different ways in how to strike with my hand.

But what was the purpose of this all? In trying so many perspectives within these two disciplines?

Well, at 21, I just wanted to have fun really. I was a full-time student so, to be honest, I was forced to learn Java and C++. I had a strong motivator, which was to pass my subjects and get closer to finishing my degree.

I was also living with my parents and only had one daily chore which was to sweep the floors, so I was financially supported AND I had ample time to try out a lot of things and not overload my working memory.

Basically, my disclaimer is: you don't have to try several different perspectives at once like I did. Just one different perspective may be more than enough. After I had given a 15-minute talk about this same life story at an event, an audience member later contacted me that she'll be taking up a hobby -- and that sounds amazing!

So let's talk about merging these perspectives into one for a single discipline. I shall give a martial arts example.

I learnt at least the foundation layer of all these kung fu styles and I noticed that depending on the style and teacher, they each focused on a different thing. Taiji/Tai Chi taught me how to use minimum movements to manipulate my opponents' momentum and in keeping my ground. Choy Li Fut and Ving Tsun/Wing Chun taught me their way of quick footwork so I can strike my opponent before they can strike me because they are very offensive styles. And Lung Ying taught me how to move unpredictably, in their case, in a zig-zag way like a Chinese dragon so my opponent takes a while to guess where my next attack comes from or I can dodge my opponent's attacks quite unintentionally with my legwork.

But Jow Ga Kung-fu is my main style. I brought all these focused techniques from each of the other styles I tried and merged them to better my Jow Ga techniques. It helped me understand the movement of a particular Jow Ga technique. It helped me understand that a technique is not a one size fits all and I may need to alter it to fit my body physique in order to apply the technique effectively for the same outcome. And all of this has helped me in other parts of my life besides self-defence; it's helped me in lifting or moving heavy objects like furniture or a stalled car, carrying multiple things like a stack of dishes, and how to survive the world as a below average person in terms of vertical height (I can stretch and jump higher).

So that is my martial arts example in trying different perspectives to better my main martial art style.

Anyway, for programming. Because there are so many perspectives on how to do something, it doesn't mean you gotta try and merge all of them into one.

Myth: For a good architecture all design patterns have to be implemented within a project. Fact: Patterns come out naturally and is completely on-demand

Perhaps temporarily layer them over each other.

For example, my colleague who's doing a non-technical role. We are discussing a heavy logic feature and because my colleague has done coding before our communication is 100% on point. This different perspective my colleague has besides the perspectives she has in her domain? It improved communication. Of course, I can also learn the perspective from her domain and improve the communication that way too.

To pause the telling of my life story to this current time: I'm 28 now. So 10 years of trying these different perspectives in one discipline, or different perspectives across many disciplines, has increased my perseverance. And it has especially shown me a different way in general problem-solving.

It has shown me in how to approach a problem in everyday life as a developer and as a human in more than one perspective and thus provide more than one working solution, which may not be equal to each other.

I end with this quote from one of my idols, Jackie Chan.

"Kung fu lives in everything we do. It lives in how we put on a jacket and how we take off a jacket. It lives in how we treat people. Everything is kung fu."

Image Credit: 'Fact: Patterns come out naturally and is completely on-demand' by Shivprasad koirala (www.questpond.com), which was originally used in Learn C# Design Patterns Step by Step in 8 hours

Discussion

markdown guide
 

This is a really good way to approach the topic. Being embroiled in the worlds of C++ and Python at the same time has caused a similar hybridization in my coding (I describe it as TAMESFA). I love learning new languages, patterns, techniques, standards, and project approaches, and taking the best of them all to increase my versatility as a coder.

 

You make a great point! I also find that my time studying martial arts is useful when learning new technical stuff; for me it's about reminding myself of the importance of consistent use of basic skills, of humility when you're learning about things you don't know about, and the self-honesty to be able to admit you don't know things.

Thanks for sharing!