Java, Security, Coffee driven Developer - why did I start learning Java?

programmers-life

When I first seriously started my programming adventure a few years ago, WordPress was my world, and my professional plans were tied to frontend. I was proud that I could gain my first commercial experience in the industry that had been drawing me in even before I started my psychology studies.

Four years have passed since then. And although the future initially looked at least good, lean years came, not sparing the IT industry. I was left with a certain amount of programming knowledge and the question of what to do next. And then the fight for survival began.

Soft Skills and Enthusiasm? We'll pass.

Numerous conversations with IT industry representatives reassured me that my psychology education could be a significant asset in recruitment interviews. To some extent, it was - I indeed received relatively many invitations for interviews compared to friends who were also switching or had switched careers and were looking for their first job. However, none of these conversations allowed me to achieve the ultimate goal, which was finding a job. Soft skills lost out when compared to specific project experience.

In hindsight, I see that this was not the only factor. At the time, I lacked a sufficiently clear CV that I could genuinely be proud of. However, to create such a CV, I needed more commercial projects, a bit more experience, and I needed to know in which ditection I wanted to develop.

I've spent more than two years working as a freelancer. This helped fill my CV with several projects for individuals and companies. I also spent a lot of time testing various options and figuring out which direction I wanted to go in IT. I settled on the technology stack that was the simplest for me to master at the time: JavaScript, TypeScript, React, NodeJS. I rewrote my CV multiple times, and by the end of this stage, I was able to skillfully use the language of benefits, which is so important for business and for demonstrating the value I can bring to a project. I added a growing knowledge of application security to my stack.

I heard in feedback more than once that my communication skills, knowledge of English, cybersecurity, and enthusiasm were of significant value - however, the lack of relevant experience meant that subsequent recruitments ended in rejections, and I became increasingly withdrawn.

In time, when someone once again said that my experience could be of immense value to a team, I started shaking my head and countering - maybe it is important and valuable, but it's not enough to break through.

A Prisoner of a Loop

In the last year, when I started applying for positions closer to the "mid" level, one of the unwritten requirements was often project experience. In my case, the problem was insufficient, only a few months long experience in this area. What was needed was working on a project with other programmers, as part of a team, the opportunity to learn the specifics of working with Git in this context, and practical knowledge of, for example, design patterns or, more broadly, software architecture, not to mention automated tests.

In my work, I mainly focused on manual testing, given the specifics of the solutions I created. However, wanting to fill this gap in experience, I joined the Tech Leaders program, where I focused on writing an application and practicing skills such as writing tests and working with Git to gain a bit more expertise in this area. I was also looking for opportunities to join a team as a volunteer. However, this last experience often ended with a refusal to sign an extensive NDA, which put me at a disadvantage from the start, for example, by establishing a court in one of the Asian countries on the other side of the world as the jurisdiction for disputed matters. And although I did not think legal action would ever be necessary, I did not want to sign such agreements.

In retrospect, I'm not surprised that many companies decide to hire someone who already has this kind of experience. It is easier to work with someone who has been on a project and knows how to work with the cloud, CI/CD pipeline, Docker and Kubernetes, or parallel teamwork on multiple branches simultaneously. This significantly improves communication in the project, and with such experience, certain things are simply understood without words.

In my case, it proved to be an insurmountable and unavoidable wall, since to work on a project, I needed project experience, which could not be obtained otherwise than by working on a project. In turn, my attempts to independently learn the necessary skills were thwarted by a lack of time, a lack of energy, a lack of resources - most of all, a lack of a team with whom I could practically see what such work looks like and what to pay attention to. It is not without reason that we speak separately about learning the theory and about experience, i.e., the practical aspect of learning. Certain skills cannot be acquired without working in a group.

I became a prisoner of a loop from which I didn't really have a way out, even though I knew what I should do - get on any project to gain experience. But how do you gain experience if your current experience won't get you onto any project?

A Feedback Hell

They say that feedback is a gift - one that offers the opportunity for development. Many people complain about a lack of feedback. We all dream that it will be concrete, show strengths and weaknesses, perhaps be supportive - in short, that it will be. Or maybe rather, that it will answer to our current needs...

Sometimes, such feedback happens. Sometimes. However, I have experienced more than once that it is often completely detached from the market realities I face, and additionally encourages effort that, at some point, becomes a superhuman effort. After all, how long can one give their all? The hardest part is independently searching for your own path when very little feedback, besides telling you "what" you still need to work on, manages to indicate "how" you can do it smartly. If someone is already proficient in technical matters, they can handle it. It's worse when, coming from outside the IT industry, we are still learning, in addition to technology, how to acquire technical knowledge effectively.

I was repeatedly encouraged to be active on LinkedIn, attend conferences, use networking skills, do coding katas and pet projects, and look for volunteer projects. Yes, each of these things provided some benefits. However, creating content for my social media profiles or speaking at conferences, while satisfying, did not lead to concrete job offers. On the other hand, further learning would have made sense if I could better define which technology stack I wanted to work in. Although I had defined preferences and was expanding my existing stack with new elements, seeing the lack of fruit from my previous actions, I couldn't dedicate myself exclusively to perfecting my skills in the technological stack I chose at first.

Perhaps it was a good thing that I didn't rigidly stick to the stack mentioned earlier and looked for new opportunities, as it eventually turned out that the problem was the technology stack itself - it's just too popular, which translates into increased competition. However, before I got to the point I could learn about this, the problem was the lack of my own website, the lack of interesting projects in the chosen stack, and the lack of experience in recruitment tasks...

Yes, I had many lessons to learn. And I learned many of them, listening to even the most harmful feedback, which placed full responsibility for the lack of a steady job onto me, imposing additional, unbearable burdens without considering the circumstances. When the list of things to master finally lengthens, and the only thing you can expect at the end of the action is encouragement and the necessity for further development - a moment of painful collision with a wall arrives.

After more than two years of self-development, freelance work, implementing subsequent feedback, and at some point also pointing out that someone's beliefs about what works don't always apply to other people's life practices, I stood at a crossroads.

Resigned, I began to plan another change. First - to land any job so as not to burn out where I am. And then - to reflect on whether I still want to try my hand at IT? Maybe it doesn't make sense anymore?

A Sudden Turn of Events

Just as I was doint the first steps on a new path and slowly closing the chapter on programming, on a certain Monday afternoon, more than a month after the recruitment interview, I received a phone call carrying a certain hope for change. Specifically - an offer to join a bootcamp and learn... Java. This is part of a broader project, and at the end of this journey, there's a chance to work for a well-known company.

The time that passed between the phone call and making a decision was very difficult. After more than two years, I was given a chance to truly do something differently than before. I was given the opportunity to develop during a sensible bootcamp, in a small group, with the possibility of gaining the knowledge that was so difficult for me to snatch day after day on my own. I knew that participating would likely give me the space to rebuild my self-confidence and, above all, allow me to catch my breath and define my direction of development for some time.

I had all of this in the back of my mind. I knew I had the support of loved ones. I knew that such an opportunity might not come again for a long time. And... I was afraid to take up the challenge.

It was as if during all that time spent working for such an offer to even have a chance of appearing, everything inside me had shrunk. As if I had become a shadow of myself, no longer believing that something good could come my way. I knew I felt this way because I had fought for so long without achieving the things I cared about most. I knew that joining the program had a chance to be a huge help on this path. And yet, I hesitated.

A Cautious Look into the Future

I finally took up the challenge. My GitHub is green again. The bootcamp is incredibly valuable, and contact with instructors and a sensible curriculum have allowed me to gain significant knowledge in a relatively short time. At this point, I can build CRUD apps in SpringBoot from scratch even in my sleep ;)

I am acquiring the skills that I so sorely lacked in recruitments, and I have gained enough experience to see how to implement "dry" knowledge from katas, courses, and reading books into a practical project.

I found the missing link that made learning so difficult for so long. I experienced how theoretical knowledge can be comprehensively translated into programming practice. I grasped something that is currently hard for me to put into words. Something in the form of know-how on how to operate within a project? Perhaps it's a matter of the experience of "getting my hands dirty" in tasks where I could count on solid feedback, having a reasonable example of how to code this type of solution from the start? However, I feel that it is easier for me to code on my own within my freelance work at this moment. I look at the code I create differently. I understand what I am doing better.

Will it help me find a job? Maybe. I'm working on it.

But what makes me happiest is the half-year of peace. Six months where I'm not sending out CVs, not focusing on managing rising panic, but on work and learning. When I don't have to dress up in LinkedIn feathers, I can think about what's next, and close those topics that I really want to close and which were very difficult for me to close before.

But... why Java?

As I mentioned, the language is secondary for me. I have no preference. I care about programming, not about programming in a specific language.

A language is a tool for solving problems that the client brings, a mean to and end, not an end in itself. You can dislike a given language for something, or conversely, like it because of something. You can create software in a certain language out of inertia, due to being "established" in it, or simply because having enough experience in it allows you to earn a living. In certain contexts, a given language works better, which is why it's not worth clinging to just one.

Besides, my long-term goal is still to transition to cybersecurity. And I can gain a lot by first gaining more experience in the programming industry. Java, in turn, is my pass to better understanding the backend and, more broadly, the context of software development, although it is not the only pass. However, at the moment - it is the most accessible one.

The beginning of the bootcamp was difficult, and I don't expect it to get easier later on. That's why I focused on learning and gave up my activity on LinkedIn, among other things, but I don't regret it - learning in such a program gives me many more benefits than my other activities, and social media visibility is something that can always be rebuilt.

Today I am starting the second, longer part of the program. The priority is learning, but also catching my breath after the murderous months of continuous professional struggles. I am also leaning towards returning to blogging instead of almost daily posting on LinkedIn. Yes, posts provide visibility. However, I see that becoming dependent on one platform is not such a sensible idea, and I prefer to invest time in my own website, where anyone can look, not necessarily need to find my content with digging through the vast amount of content on social media.

And... Coffee!

I'm sipping my afternoon coffee and thinking that despite the frantic pace of the bootcamp, I've rested a lot lately. Although I managed to get sick again within a few weeks and will spend the next few days in bed, the peace that comes from knowing what I will be doing for the next few months is priceless.

This peace is not unbroken. I still wonder what will happen if this change doesn't allow me to achieve my goal. I occasionally worry about whether I will be able to learn certain topics. Not to mention the job...

I see what a challenge participating in the bootcamp is for me. I also see that my neurodiversity makes some things easier and others a bit harder. Besides programming, I'm learning to cooperate more closely with others and simultaneously take care of myself in a situation where there are more contacts with people than before. Organizing my studies is also a challenge - but it is nothing that I couldn't handle.

All that remains is to quote Lewis Hamilton: "Keep pushing!".