Coming Back to a Programming Language After a Long Hiatus

I had a rather bumpy relationship with Java, up to now I re-started learning Java three times - gave up in my first two attempts, due to various reasons and the third time is the charm, as they say! Learning to code is tough, it can take a long time and can can be frustrating at times, especially at the very early stages - you will be tempted to give up it.

The First (Unsuccessful) Attempt

The first time I tried to learn it was in 2014, I watched a few online tutorials from some university professor (I can't recall the name) and at first, on the theoretical side it seemed okay, even though, at the time I had no programming experience at all. But when the coding part started I felt so lost and confused like never before, I had honestly thought that something was wrong with my brain then. Back then (being a smart-ass) I thought I could learn coding with little effort since it was generally always easy for me to pick up new things. I had no idea at the time that learning to code takes a lot of time, practice, dedication and commitment -  hacking away at it constantly is much more important than just being smart. I did not touch Java for the next four years! But, in the meantime I put in effort to learn JavaScript and PHP - as I was into learning web development at the time.

Second (Failed) Attempt

The second time was when I was a junior tester, at my second job, just getting acquainted with test automation in a real word project - prior to that I was doing only manual testing in my first company and my only experience with automation was a handful of tutorials I watched online. There were online resources online at the time, but a lot of them were either outdated, not using all the tooling I was supposed to be using at work and the Test Automation University didn't exist at the time. The biggest blocker here was my approach, I wanted to learn a specific combination of tool instead of learning the underlaying fundamental technologies - they were all Java based tools and my Java skills (at the time) were less than ideal.

Working against me was the fact that I was working on several projects at the same time (three to four projects usually, as I was a bench consultant) which made focusing on the project with Java automation more difficult. Yet another difficult thing was the fact that I was preparing for automation with C# NUnit, Visual Studio, etc. - as the company was mostly using Microsoft technologies for everything, with the sole exception of the small Java project I got assigned to. Seeing a finished test automation framework, which was made by people with close to 10 years of experience, was also pretty daunting, I knew the basic stuff, but to me, the framework seems scary and overengineered - now it would make more sense to me that it did a few years ago.

All in all, I think my superiors might have overestimated my ability at the time, or sold myself as a bigger expert than I really was - which is also possible, I'm quite adapt at bullshiting.  To be honest, I can't blame others for my failures (tempting as it may be), the ultimate fault was mine, I just wasn't ready - I had a nasty case of the imposter syndrome, I thought I have to learn everything at once putting too much pressure on myself, instead of learning stuff incrementally in small manageable chunks. After that I was transferred to a different project where I did very little automation - I was mostly performing production support and after not coding for a few next months I resumed learning automation at my own pace.

Third Time's the Charm 

The third time I started learning Java unexpectedly in my third company. At first I was supposed to be doing automation in C# on a microservices based project, in a newly formed team of testers. After a few days several unplanned events had occurred, I got the Coronavirus I was on sick-leave for several weeks, one of my co-workers passed away at the time and when I came back from the sick-leave there was a urgent need for a tester on a API-based product. As I was no longer a frightened junior (I got accepted as a mid-level tester) I accepted the challenge, even after I was told that the product was being made using the dreaded Java language!

I figured what the heck, for testing a REST API the language that is made in is was not that important, I was really comfortable using Postman and while I had a pretty good understanding of the HTTP protocol, so this time there was no room for panic. I was told that I should eventually create an API test automation framework and I figured I'd do it in Java - I even surprised myself with that choice.  But, I had several reasons behind this Solomonic Solution: the company had a lot of really good Java developers which were practicing Test Driven Development and Pair Programming, meaning that I could (and I have done this) really on their help when I get stuck while coding and another important reason was a result of my research:  while Java wasn't some new hot/trendy fancy hipster technology the sheer amount of online resources for automation in Java (Pluralsight, YouTube tutorials from Indian testers and blog posts) seems to outnumber other languages considerably. As a added note, being within a Java environment, it made sense to use Java-based tooling (InteliJ, TestNG/JUnit, Jenkins, Maven etc.) as these tools were very mature, well established, with good documentation and great community support - 90% of the problems I encountered were already solved by someone else. I stopped looking at a language from an emotional perspective and I took a gander at it from a more pragmatic point of view. 


My main takeaway would be the following: don't try to learn everything at once, focus on one thing at a time, make long-term learning goals and plan your learning (don't be that tutorial-butterfly that just jumps from one topic to the next one). This way you will break large and complex topics into a lot smaller ones, which will make it easier to absorb knowledge which will in turn result in frequent and satisfying small wins, as suggested in the Dopamine-Driven Development. Also, don't be a fanatical supporter of any language or technology stack, even your favourite one(s) since ultimately these are just tools of our trade (you don't see carpenters talking affectionately about saws and hammers, do ya) which we use to get the job done - solve a problem for a customer so everyone involved can reap the benefit$.

Sometimes, things might be hard when you're learning on your own, and being in a supportive environment can make this difficult journey a lot easier. I'm hoping my confession might help people who are learning to code to (re)gain some of their much needed motivation - I know in my case posts like this one meant a lot, they still do. Thanks for reading!


Comments

  1. Nice blog..clearly explained…Thankyou so much for your wonderful information…Looking for the best programming platforms in Hyderabad contact cyanous software solutions now.

    Best programming platform services in Hyderabad
    Best software & web development company in Hyderabad

    ReplyDelete
  2. Thanks for this post.. The Elegant Training Center of Full Stack Java Developer Course is nothing but complete designing of both websites and applications where the developers need to work from frontend to backend development.
    Python Certification
    Autodesk Authorized Training Center
    Interior Designing Course in Dubai

    ReplyDelete
  3. Thank you for sharing this valuable article. If any student want to study in India and need proper guidance then visit the link DU SOL M.Com .

    ReplyDelete

Post a Comment

Popular posts from this blog

10 Tips for Designing Better Test Cases

TestRigor - Review

How to Pass AZ-900 Azure Fundamentals Certification Exam