Ione Souza Junior

The Power of Patience and Persistence: How to Thrive in the Ever-Evolving Tech Landscape

June 21, 2024 | 16 Minute Read | Translations: pt | #career

There's a lot to study if you choose any Software Engineering position. You can develop desktop, web, mobile, IoT applications, and each of these options have huge possibilities for you to choose or specialize in. A common question, mainly for a newbie is: when will I be a master in this technology? This is a difficult question to answer, isn't it? Technology evolves fast and all the time we face things changing. This can cause some nervousness and stress, because it's a little bit difficult to not get things under control. So, in today's post, I'll share some of my thoughts about it. Take a coffee or any drink you prefer, have a seat, and let's get started.

I’ve been working with software development since 2008. I’ve already worked in six different companies, and I felt I and my colleagues were looking for the same objective: to be a master in some technology. Everybody who wants to learn, usually, wants to be a master in some subject, but how fast can we achieve this to acquire the knowledge we want?

Well, all of us, IT guys, love to say: it depends! That’s the absolute truth for this question. It depends, because each of us have different ways to learn. Some people like to learn by watching videos, another one likes to learn by reading blog posts, other people like to roll up their sleeves and dive into the code. So, it depends. Do you agree with this?

Another thing that I believe is very important to understand: learning is different from knowing. You can watch a bunch of videos about some specific content, and that’s okay. You learn about it. But did you really understand it? Do you really know about it? You watched some course in 2x velocity and are you prepared for the fight? If you need to get your hands dirty, can you put into practice what you’ve learned? Did you really learn the concepts?

And last, but not least: the time. This is another factor in the equation. Most of us want to learn very fast, and a lot of things. There’s a lot of abilities that we can learn and practice, but what we really need to focus at first to feel comfortable? This is important to think to you understand when to stop or when to go easy on yourself.

My Point Of View

When we want to learn something or want to achieve an objective, we create expectations. We want to change, to make a career transition, to learn a new technology or just to start in the field. Sometimes we know what we want, but we don’t know the path to achieve it. So, in this case, it’s very common to immerse yourself in studying everything you come across. Do you want to achieve your objective, right? How much time do you believe you’ll need to get it? Three or six months? One year? And what’s your plan B? Do you have one? It’s not difficult to start trying to learn all the things, but if you don’t have a clear path, you can get only anxiety and fear.

This usually happens when you try to learn too much at once. Learning a lot of things doesn’t mean knowing these things. You need to practice, and you need time to develop the new abilities. This can cause anxiety, because if you don’t have a clear path, you can see there’s a lot of new things to learn. You start learning just one new thing, and you discover there are five or ten new concepts to look for. That’s okay! You’re not alone. If you don’t have a clear path to focus on what’s more important, you can feel a little anxious, because you won’t stop to look for new content. All you’ll see isn’t enough, and you won’t enjoy your journey. This is terrible.

It can cause fear too. If you understand that there’s always a lot of things to learn, and you don’t feel confident with your knowledge, how can you work properly if you’re always concerned about your own knowledge?

You Can Learn With Your Mistakes

I’ve already faced this situation in different stages of my career. The first one in 2008 when I started in the field as a Web Developer. In that year, I was almost a Webmaster, because I needed to learn about web applications, databases, manage Linux servers, and all the things that an IT guy does — including fixing printers. At the beginning of my career, I didn’t have a clear path to follow, I just learned a lot of things, fast, and practiced a lot. I learned a lot practicing, and I worked all the time. It was very tiring, but I evolved a lot.

The second stage of my career that I faced a change was in 2014 when I started as a Mobile Developer working with Xamarin Forms. I had a challenge to develop a sales representative application for Android, iOS, and Windows, but as a Web Developer, I had no idea what was necessary to learn, so I started again to learn all content that I found and practice a lot. In this period, I was always worried about learning mobile development. It was a period of time that I’ve grown a lot again, but it cost my mental health. Some people may think this is bullshit, but only I know what I felt.

In 2019, I made a new move, and started as a Mobile Engineer. Despite continuing to work with mobile development, there was something different: I started to work more closely to the native Android and iOS APIs. I started to work all day with the Xamarin Traditional approach. This may seem like nothing, but it was a big change for me. I felt I didn’t have enough good knowledge to stay there. Honestly, I knew that I had a good knowledge about software development, but not about mobile development, because I had been working with Xamarin Forms for a long time. So, I needed to start to learn again. Tiring, isn’t it? Well, but this time was different for me, because I was (and continue) in a good place, and it provides me to finally enjoy my learning path.

I was determined to try something different in 2019. I didn’t want to repeat the same cycle.

Calm Down And Enjoy The Learning Path

To keep calm and enjoy the learning path, I accept that I never will be a master of everything. This was very difficult for me, because I put a lot of pressure on myself. I want to be the best, so accepting this was not easy.

What is working for me is to think about the following questions:

  1. What knowledge do I need to develop to make myself confident and allow me to move on?
  2. Where and how can I get this new knowledge?
  3. How much time will I invest to achieve this?

Is it difficult to answer these questions? If you don’t have the habit or ability to reflect about yourself, this can be a big challenge. You need to know about yourself, what you want, and how much are you willing to sacrifice. This can be difficult, but understanding this is very important. Let’s explore these questions.

1. What knowledge do I need to develop to make myself confident and allow me to move on?

This is very particular to each one. You need to think about what knowledge you’ll focus on learning and practicing that will make you more confident and prepared for the challenges in your career. So, think: what do you want to learn?

Do you want to learn about backend development? Maybe you should start learning about the basics of databases, HTTP protocol, and RESTful APIs.

Do you want to learn about frontend development? Maybe you should start learning about HTML, CSS, JavaScript, and responsive design.

Do you want to learn about mobile development? Maybe you should start learning about view controllers / activities / fragments, UI components, and life cycle.

You need to choose what path you want to follow, and understand what knowledge you need to learn that allows you to move on without problems.

2. Where and how can I get this new knowledge?

Today there are a lot of resources that you can use to learn about anything. YouTube videos, blog posts, courses at LinkedIn Learning, Pluralsight, Udemy, Alura, BackFront Plus, or even free content on YouTube.

I think this topic is a little bit interesting, because I was born in 1987, and I grew up without the new technologies that we use today. My first computer I won when I was 15 years old, and the internet was dial-up. Today, we turn on our computers and smartphones, and all the time we’re connected, with a lot of content on the palm of our hands. But even with a lot of content to consume, I think sometimes we don’t know where to find good content or where to start. So, the most important is: just start. It’s better than do nothing.

3. How much time will I invest to achieve this?

Now you already know what knowledge you want to develop, where the resources are, and you need to think about how much time you’ll invest to achieve this. How much time? One hour per day? Two, maybe? Between three and six hours per week? You need to organize your agenda and put your learning path into your routine. Don’t you have time at the moment? No problem, but you can’t feel frustrated with this, and this situation needs to be very clear to you.

It’s not a problem to not have time now. It’s a problem if you want to make a change and not dedicate on it. No pain, no gain.

Things to care about

Focus means setting a target and sticking to it. So, if you plan to study a lot of things, maybe you’re starting wrong, or you won’t achieve your plans properly. I’m telling you this because it’s humanly impossible to start learning many things at the same time and be productive in all of them. There are some exceptions, but focus means starting something and ensuring you evolve it until the end. Think about it.

Sharing My Experiences

I’ve dedicated this session to share my last experiences. Maybe something can help you to clear the learning path.

Experience 1: Start Working With iOS And Android Native APIs

As I said previously, in 2019 I started as a Mobile Engineer to work with Xamarin Traditional, more closely to iOS and Android native APIs. This was a great challenge for me, because I was used to working only with Xamarin Forms. At that time, Xamarin Forms was very evolved, and each new application didn’t need a lot of custom renderers to work properly anymore. This meant that native knowledge was less crucial, allowing developers to focus on the shared code for most of their work.

Well, my scenario changed, and I needed a plan to study. I knew I needed to study a lot of things, and I tried to answer the three questions.

1. What knowledge do I need to develop to make myself confident and allow me to move on?

This is very strange, but for me, to feel comfortable, I didn’t need much:

  • Master how to create screens with dynamic lists and content.
  • Master how to navigate between screens.
  • Master how to communicate between screens.

Very simple, right? Yeah, simple, but I needed to master these things to feel more comfortable in my new job. I knew all the concepts, but I didn’t work with them until that moment. There’s a big difference between only learning about something and truly understanding it, in practice. All of this knowledge I needed to evolve on both platforms, but more on iOS.

2. Where and how can I get this new knowledge?

Well, I don’t remember exactly where I studied, but I remember looking for courses at Udemy, Pluralsight, and some content on YouTube. All very practical training. On Pluralsight, I remember taking the following courses:

3. How much time will I invest to achieve this?

I usually dedicate many hours to studying. This is how it works for me. When I face a new challenge, I like to dive deep into it. I have the privilege of being able to find time for this. My wife supports me and helps me a lot. I usually dedicate between one and two hours a day, including weekends, because my wife loves to wake up late, and I wake up early to study more time when we stay home.

I hoped to see progress in about a year, and it came. Over time, the tasks became easier. This was a sign to me that I was achieving my objective. I continue studying and evolving, but with less pressure on myself.

This basic knowledge helped me to continue growing in my position. Maybe you’re thinking: why did you study iOS and Android native approaches with Swift and Kotlin instead of C# with Xamarin? Well, I believe if you master native development and understand how each platform works, you will reduce doubt when you’re facing problems on mobile development with Xamarin. Something goes wrong? What’s wrong? Is it Xamarin or is it iOS / Android? Understanding the core concepts in the native language helps me many times to not blame Xamarin when I faced problems. I’ve seen this sometimes happen when people blamed Xamarin Forms, but the real problem lied within the platforms themselves.

Experience 2: Start To Focus On Mastering iOS Development With Swift

Last year I wrote about it, and you can find this post here. So, here I am thinking about the questions again.

1. What knowledge do I need to develop to make myself confident and allow me to move on?

Over the last few years working with Xamarin Traditional, I’ve learned a lot about iOS, but now I have some specific necessities to feel comfortable to be an iOS Engineer in the future. For example:

  • Master memory management
  • Master parallelism and concurrency
  • Master closures in Swift
  • Master View Code
  • Learn how to build the same things in SwiftUI that I know how to build with UIKit

2. Where and how can I get this new knowledge?

To my surprise, I found a lot of content on LinkedIn Learning, but I’ve started this journey using BackFront Plus. They have great paid content, and the videos about iOS development are fantastic, very well explained. If you have the opportunity, I highly recommend it to you.

Also, I like the content of Paul Hudson. He has a lot of great free content. The same is true for Sean Allen, and CodeWithChris.

Another interesting thing that I’m trying now is to practice in a real project. I love to create a project from scratch and test concepts on it. But there’s a problem: when you’re in a “hello world” project, learning tends to be somewhat limited. So I decided to practice trying to contribute to a real open-source project. I shared about it in this post.

3. How much time will I invest to achieve this?

Today, I’m investing at least one hour from Monday to Friday, and some hours on Saturday. My intention here is to study and practice until I feel confident to contribute to open-source projects.

To be confident is subjective, right? Well, in my context, feel confident means contribute and create solutions without too much difficulty. That’s it.

Need Tips To Find Where Or What To Study?

There’s a site called roadmap.sh, that is a community effort to create roadmaps, guides, and other educational content to help guide developers in picking up a path and guide their learnings. Check this out!

Another great resource is a study guide for software development with Swift. I didn’t finish it, but I found great content there.

What Will You Learn Now?

The path to mastery in tech is a journey, not a destination. It’s about finding the right balance between learning and practicing, focusing on what matters most to you, and understanding that you don’t need to know everything to make progress.

Embrace the power of patience and persistence — it’s your key to conquering the ever-evolving tech landscape. Start by identifying what you want to learn, find the resources that suit your learning style, and dedicate the time you can to reach your goals.

Don’t be afraid to make mistakes, learn from them, and keep moving forward. Remember, every new skill you acquire adds value to your career and empowers you to build incredible things. So, take that first step, stay curious, and enjoy the learning journey!