31,19 €
Written by industry experts that have spent the last 20+ years helping developers grow their careers, this book offers invaluable insights and guidance tailored to the specific needs of technical professionals. By discovering the secret of continuous learning and adapting in the ever-evolving field of software development, you’ll explore various learning paths with formal and informal methods, as well as gain an understanding of the value of certifications to validate your skills. This book will teach you the significance of building a strong support network, holding crucial conversations, and taking ownership of your career growth. You'll delve into acquiring both soft and hard skills, becoming a well-rounded and sought-after developer. Packed with practical examples, stories of successful developers, and real-world applications, the chapters will equip you with actionable advice on how to push beyond your comfort zone and embracing communities to enhance your teamwork abilities. Additionally, you’ll uncover the benefits of joining open-source projects, speaking at conferences, and building a personal brand to amplify your visibility and reputation. By the end of this book, you'll have a well-laid-out long-term and short-term plan for your career progression, equipping you with advanced technical skills, strategic thinking, and the ability to effectively manage relationships within your organization.
Das E-Book können Sie in Legimi-Apps oder einer beliebigen App lesen, die das folgende Format unterstützen:
Seitenzahl: 697
Veröffentlichungsjahr: 2023
Developer Career Masterplan
Build your path to senior level and beyond with practical insights from industry experts
Heather VanCura
Bruno Souza
BIRMINGHAM—MUMBAI
Copyright © 2023 Packt Publishing
All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews.
Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the authors, nor Packt Publishing or its dealers and distributors, will be held liable for any damages caused or alleged to have been caused directly or indirectly by this book.
Packt Publishing has endeavored to provide trademark information about all of the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information.
Group Product Manager: Kunal Sawant
Publishing Product Manager: Akash Sharma
Senior Editor: Kinnari Chohan
Technical Editor: Maran Fernandes
Copy Editor: Safis Editing
Project Coordinator: Deeksha Thakkar
Proofreader: Safis Editing
Indexer: Manju Arasan
Production Designer: Shyam Sundar Korumilli
Marketing Development Relations Executives: Rayyan Khan and Sonia Chauhan
Technical Reviewers: Viktor Grazie and Scott Wierschem
First published: September 2023
Production reference: 1250823
Published by Packt Publishing Ltd.
Grosvenor House
11 St Paul’s Square
Birmingham
B3 1RB, UK.
ISBN 978-1-80181-870-4
www.packtpub.com
To my family and friends, for their patience with me as I spent much of my free time working on this book, and specifically for their encouragement, confidence, and support throughout the process.
In loving memory of my grandfather, who inspired me to share my passion, knowledge, and stories with others.
– Heather VanCura
In loving memory of my father, Hamilton. His encouragement early on got me on the path of helping developers in their careers. To my wife, Karina, who supported me during all the craziness of my career. To my friends and mentees, and also my daughters, Juliana and Lara. Everything in this book, I learned with you. To my long-time friend and co-author, Heather, you know this book would not exist without you.
– Bruno Souza
An individual person’s career is shaped by many turning points. These turning points are often encounters, either with other people, with particular tools or technologies, or even with ideas. More often than not, those moments only become apparent in hindsight. But the ability to recognize those moments when they happen, or shortly afterward, turns out to be an important career skill. One such moment early in my career was when I first met Heather VanCura. It was at an early JavaOne conference. I had just started taking my first steps into the career-broadening world of open standards. Heather was also early in her career but had already started working with the Java Community Process (JCP). This particular event was the first awarding of the JCP Star Specification (Spec) Lead program. A “Spec Lead” is a role. It’s a person who leads a team that produces a specification for a part of the Java platform. I point to this event as a turning point in my career because it encapsulates all three parts of this important book: first, learn and practice technical skills; second, get involved; and third, create impact. As you’ll learn by reading the distilled wisdom from the many colleagues Heather and Bruno have interviewed in this book, the three parts are all a process, not a destination. During your career, you continually learn more technical skills, continually get more involved in existing and new communities, and continually create impact. That first JCP Star Spec Lead event was a turning point for me for the following reasons: I was working on technical skills, then I eventually became a Spec Lead, and then became a Star Spec Lead, and ended up stewarding a community that had a positive impact on our industry. The stories of the individuals profiled in this book follow a similar progression. By reading and applying the learnings in this book, you can too.
This book arrives at a historically important moment for careers in general, and Information Technology (IT) careers specifically. Over the over 25 years of my career, I’ve learned that experienced and expert developers are hard to impress. The more experience you have, the more you can really say, “I’ve seen it all before.” This current Artificial Intelligence (AI) moment is different. Not everyone I’ve talked to is actually “impressed,” but they all agree that the current AI moment is different and significant. This speaks well for the first part of the book. You’ll learn to push yourself outside of your comfort zone, how to discern which new technologies to absorb, and which to skim, and how to be intentional in assembling your invisible college of fellow developers into a support network. In this hyper-accelerated, AI-charged moment, these meta-skills are more important than ever.
Once you build a process for keeping the skills fresh, the second part will show you how to find an audience for them. Experienced developers know that software development is a cooperative game. You can’t do it on your own. You must join your talents to a community. I have personally benefited enormously from applying the lessons in this section. In my case, I applied the lessons before Heather and Bruno collected them in a book, but I can attest they worked for me, and am confident they’ll work for you too.
Finally, the last part is where it all comes together. At Microsoft, we have three core leadership principles/bromides: create clarity, generate energy, and deliver success. The third part of the book is all about delivering success, both for your community and for yourself. By the time you get to applying this part in your career, you will understand your own individual actions will have a bigger impact when they are delivered downstream by other actors. You will have learned that your own actions influence others and you are able to benevolently wield that influence to create value.
Heather and Bruno have created an accessible book distilling a career’s worth of advice from many individuals, each independently successful. You can think of it like many lifetimes worth of success right in your hand.
Ed Burns
Principal architect for Java, Microsoft
Ed’s book Secrets of the Rock Star Programmers: Riding the IT Crest (McGraw-Hill 2008) is a good supplement to achieve a broader perspective on the ideas in this book.
Heather VanCura is a senior director at Oracle, leading the JCP program and MySQL Community Outreach team. With 20+ years of experience at Oracle and Sun Microsystems, she actively engages with the developer community as an international speaker, event organizer, and mentor. She has visited 6 continents and over 50 countries, meeting developers and helping them to engage in standards-related and open source projects. Heather is passionate about promoting diversity in technology and volunteers with organizations such as Women Who Code and IEEE Women in Engineering. Her extensive involvement includes serving on the boards of Dress for Success and FIRST LEGO League NorCal. Heather’s dedication to empowering developers and advocating for diversity makes her a respected leader in the industry.
Bruno Souza is a Java Developer and the founder of SouJava (The Brazilian Java Technology Users Society). With extensive experience in large Java projects, he holds the position of Principal Consultant at Summa Technologies. He is also the founder of Code4.Life, an initiative focused on helping developers grow their careers towards a life of freedom and purpose. Developer communities are his personal passion, and Bruno has actively worked to build and nurture several open-source communities.
As the founder and coordinator of SouJava, and the Founder of the Worldwide Java User Groups Community, Bruno has played a pivotal role in strengthening the global Java Community. He is a Founding Member of the Java Champions and has been a Java Developer since its early days. Bruno represents SouJava on the Executive Committee of the Java Community Process (JCP) and holds the position of an emeritus Director of the Open Source Initiative (OSI).
Beyond technology, Bruno enjoys puppeteering and cherishes family time in a country hideout near São Paulo.
We would like to thank all the amazing community members and developers who have been with us along the way in our career journeys. Thank you for sharing your stories with us and trusting us to guide you on your career path.
In this book, we have interviewed the following industry experts. We’d like to wholeheartedly thank them for their contributions:
Chapter 1: Rafael del Nero
Chapter 2: Mala Gupta, Ben Wise, Barry Burd
Chapter 3: Nikita Koselev, Helio Silva, Barry Burd, Scott Wierschem
Chapter 4: Arun Gupta
Chapter 5: Scott Wierschem, Thiago Bomfim, Nikita Koselev
Chapter 6: Edwin Derks
Chapter 7: Elder Moraes
Chapter 8: Rodrigo Graciano
Chapter 9: Mary Grygleski, Trisha Gee
Chapter 10: Ixchel Ruiz
Chapter 11: Josh Juneau
Chapter 12: Jim Weaver, A N M Bazlur Rahman, Mimar Aslan
Chapter 13: Victor Grazi and Wellington Rosa
Chapter 14: Ed Burns
Chapter 15: Yolande Poirier
All the interviewees are personal friends of one or both authors, and they have encountered their own career challenges and triumphs. We have strived to present their experiences in an inspiring manner to encourage and prepare you for your journey ahead. Many others could have shared their stories in this book, but due to time constraints or missed opportunities, we couldn't include them. We extend our gratitude to all who volunteered, engaged in discussions, or contributed in any form to shape this book. Your dedication to your careers is greatly valued and appreciated.
Douglas Hirsh, a self-taught software developer with 22 years of experience under his belt, is celebrated for his zeal to innovate and unravel complex business and technical challenges. With a commitment to quality and insightful design, Douglas ensures that solutions resonate with both technological and business visions. His adventure began in the early days of .NET, progressing into arenas such as Python, network automation, and AI. From roles ranging from hands-on developer to CTO and piloting his own freelancing venture, Douglas’s diverse path has provided a holistic perspective. He’s proud of his three-year stint instructing at a coding boot camp, nurturing emerging tech talent.
I’d like to extend my profound gratitude to Bruno for inviting me to be a part of this enriching endeavor. His faith in my expertise has been truly inspiring. A heartfelt thanks to my family for their unwavering support and patience as I dedicated time to this project. Their understanding made this journey smoother and all the more rewarding.
There are many books on technical topics and just as many on careers, but there is no guide or roadmap for moving in a technical career from junior developer to senior developer. As experts working in the software development industry, with over 20 years of experience each, this is one of the most common requests that we receive from developers asking for advice and guidance. This book provides that guide, along with examples and stories from our global careers working with developers from all parts of the world.
When we decided in 2021 that we wanted to author a book together, it was a conversation that developed organically, and started with a discussion on how to create a more engaging online social networking event for developers. We had already been working together in the community for over two decades and we shared many experiences both together and separately, many of them in the Java community ecosystem. We both shared during our conversations that we wanted to author a book. Almost immediately our thoughts went to sharing some of the career stories from developers we have worked with over the course of our careers. We worked together at Sun Microsystems for a brief time, and for most of our careers, we have worked in adjacent roles in the Java User Group (JUG) global communities, in the Java Community Process (JCP) program, and at various software development conferences all over the world. During these activities, what we see is the influence that participation has on the careers of these developers. During this time, we have both had the opportunity to interact and share our learnings with thousands of developers. We both share a passion for developers, communities, and technology and enjoy seeing and sharing the successes of those three passions coming together for greater impact.
In this book, we will share how you can advance your technical career from a junior or mid-level developer to a senior developer. We will share the steps you will take on this journey, based on our experiences working with developers in over 80 countries as they navigated their careers across the continents of Africa, Asia, Australia, Europe, and South and North America. Along the way, we will share some interesting career stories from developers working in some of the largest employers as examples.
We are excited to have this opportunity to guide you on the way to achieving your career goals and enjoying career success. By the end of this book, you will have gained the knowledge you need to clearly develop a plan for your career progression.
This book is for anyone who wants to advance in their technical career, no matter their level, but specifically for a junior to mid-level technical professional, engineer, developer, or architect who wants to move from a junior to a more senior level and excel in their professional life.
This book is divided into three main parts, each having a few chapters to help you fulfill the aim of advancing your technical career. Here’s a brief overview of what each part covers:
Part 1, The Basics: Learn and Practice Technical Skills: Career growth in the technology world involves being great at a technical level. Although the technical side is not everything, and sometimes not even the thing that will make your career grow, it is needed to be part of the game. Part 1 will help you go deep into the technical side and get you ready to advance your career faster and farther.Part 2, Get Involved: Participate in the Community: Although developing your technical skills is a great step, to have an amazing career, you need to go beyond technical skills. Software development is a team effort, and being able to work together with others is a required skill that puts you at the next level. If you want to go fast, go alone. If you want to go farther, go together (an African proverb). Building a career is playing the long game. We are not here for the fast, short sprint, but long-term unique results. Part 2 will prepare you for the long run.Part 3, Create Impact: Share and Lead: Now that you know how to establish long-term relationships that will drive your career forward, it is time to take the last step: position yourself as a leader, to break all limits in your career growth. Part 3 will discuss advanced actions you can take that will differentiate you in the market and transform the lives of people around you.Developer Career Masterplan involves constant growth, a constant feedback loop. You learn and then practice your knowledge. You can network with your peers, and share what you learned. This will open more possibilities for learning, practicing, networking and sharing. This loop will take your career to great projects, and amazing positions. You will grow to senior levels, and beyond.
As you can see in the image below, the three parts of this book have chapters covering each step of the masterplan. You will start with learning and practicing. As you progress, you will do more networking and sharing. This masterplan can be applied over and over, always resulting in career growth. Each step, described in detail in the corresponding chapters, builds on and reinforces the other steps, to help you build your career path, to take you where you want to go.
To get started on this journey, you need to understand the importance of emotional intelligence, or EQ, how to grow beyond technical skills, how to strategically build your technical knowledge, and the importance of increasing your visibility.
In a well-known Fortune-500 company, there is an engineering team with a couple of developers who stand out for promotion. There is a developer who has the best technical skills, and a developer who has good technical skills but also is an expert communicator and team player/collaborator. Who do you think will receive a promotion? Based on the tired media trope of a solo programmer working alone in a basement eating pizza, most people would think that the developer with the best technical skills will receive the promotion. However, this is not the case. The developer with communication and collaboration skills alongside the technical skills gets the promotion. These are the skills that make up emotional intelligence.
Many academics have written on this topic with diverse ways of measuring and evaluating emotional intelligence, but to understand the point, it is enough for you to know that most employers today would prefer to hire, retain, and promote a developer who not only has the top technical skills but also a high degree of emotional intelligence. Even if that means sacrificing some level of technical ability, when given the choice, employers will more often choose the individual with better emotional intelligence. The one with the best people skills wins. Emotional intelligence requires skills that you cannot learn from reading a book alone. These are skills that require practice and human interaction. This is true in technical roles as well as non-technical roles.
The World Economic Forum is an international organization that brings together public and private organizations for cooperation purposes. The Forum engages the foremost political, business, cultural, and other leaders of society to shape global, regional, and industry agendas. The World Economic Forum recently issued The Future of Jobs Report. The report listed the following skills with growing demand through 2025 and beyond:
Critical thinking and analysisProblem-solvingSelf-managementWorking with peopleManagement and communication of activitiesTake the time to consider and evaluate your level of emotional intelligence. Identify areas where you need to grow and look for opportunities to practice your skills. While machine learning and artificial intelligence will impact development jobs, and you must learn to work with them, the demand for development jobs will continue to grow and will remain strong even in economically uncertain times.
How do you grow beyond just technical skills to incorporate emotional intelligence? It is easy to think that as a developer, you should only be coding. It may seem to fit into your predisposed view of how you can advance your career to the next level – to focus on the technical skills that you were hired to use in accomplishing your tasks and projects.
Developers cannot expect to write code in isolation and deliver it by throwing it over the wall or putting it in a repository and closing the project. Open source and agile methodologies for software development have been just some of the factors that have changed this method of working to deliver software.
The way to grow beyond the technical and develop your emotional intelligence is to practice with others, whether virtually or in person. Look for moments to empathize, communicate, and collaborate with other people. You will see your skills develop through repetition and feedback.
How do you choose the right skills to learn? Many developers tend to want to learn the newest, coolest, or shiniest technology. Often, they will start the process of learning a newer, more innovative technological skill without considering whether it will benefit them in achieving what they really want. Before you start spending time learning a recently released technology, evaluate why you want to learn that technology or skill. Does it align with your goals to advance your career to the next level? Is it worth the time you will lose learning the skill when you could be spending that time in other areas?
It is great to learn new things, but before you add every modern technology that is popular to your list of skills to learn, think about the reason that you want to learn that technology. Is it required for a project you are working on? Or do you think it could be used in such a project? Or do you see the potential for this technology to grow and be useful to you in the future? If yes, then you should invest the time required to learn it.
Employers expect developers to be learning on the job and filling skill gaps in technical areas. The problems arise when we add every recent technology to our list of skills to learn. At that point, it can be overwhelming and can lead to procrastination and stagnation. The sheer volume of new tools, techniques, and technologies can trigger the exact opposite of what you are trying to achieve, resulting in immobility.
Time is finite. It is our most precious and valuable commodity as humans. Take the time to evaluate and consider why you want to learn a new technology before you add it to your career map. You can often gain visibility by getting involved in projects or areas that are valued by senior management. Pay attention to the projects that your line manager prioritizes. Listen to or read reports, listen to podcasts, or read articles where they discuss future directions. Communicate your interest in working in those areas. Learn new skills in those areas. Share knowledge that you have in those areas. Some excellent ways to share include social media, public speaking, user groups, and networking at industry conferences or events.
What we have learned in our own career journeys is that sharing builds communities and trust. The authors of this book share the common desire to help you advance your technical career and build your trust in us to guide you on your way to a senior developer position. Do you have a map ready with some of the areas identified where you need to grow? Take some time to think and get clarity on those items before you move on to Part 1 of the book.
Tips or important notes
Appear like this
Feedback from our readers is always welcome.
General feedback: If you have questions about any aspect of this book, email us at [email protected] and mention the book title in the subject of your message.
Errata: Although we have taken every care to ensure the accuracy of our content, mistakes do happen. If you have found a mistake in this book, we would be grateful if you would report this to us. Please visit www.packtpub.com/support/errata and fill in the form.
Piracy: If you come across any illegal copies of our works in any form on the internet, we would be grateful if you would provide us with the location address or website name. Please contact us at [email protected] with a link to the material.
If you are interested in becoming an author: If there is a topic that you have expertise in and you are interested in either writing or contributing to a book, please visit authors.packtpub.com.
Once you’ve read Developer’s Career Masterplan, we’d love to hear your thoughts! Please click here to go straight to the Amazon review page for this book and share your feedback.
Your review is important to us and the tech community and will help us make sure we’re delivering excellent quality content.
Thanks for purchasing this book!
Do you like to read on the go but are unable to carry your print books everywhere? Is your eBook purchase not compatible with the device of your choice?
Don’t worry, now with every Packt book you get a DRM-free PDF version of that book at no cost.
Read anywhere, any place, on any device. Search, copy, and paste code from your favorite technical books directly into your application.
The perks don’t stop there, you can get exclusive access to discounts, newsletters, and great free content in your inbox daily
Follow these simple steps to get the benefits:
Scan the QR code or visit the link belowhttps://packt.link/free-ebook/9781801818704
Submit your proof of purchaseThat’s it! We’ll send your free PDF and other benefits to your email directlyCareer growth in the world of technology involves being great at a technical level. Although the technical side is not everything, and sometimes not even the thing that will get your career growing, it is needed to be part of the game. Part 1 will help you go deep into the technical side, and get you ready to advance your career faster and farther.
This part has the following chapters:
Chapter 1, The Secret to Learning about Technology Fast and ContinuouslyChapter 2, Choose Your Best Path for Learning, Training, and CertificationsChapter 3, Optimize Your Support Network for GrowthChapter 4, Acquire the Right Skills DeliberatelyChapter 5, Stepping Outside Your Comfort ZoneSoftware development is a creative and innovative field. Although the main concepts last for many decades, the applications of those concepts, as well as technologies and tools, come and go in short periods of time. Because of this, software developers need the right skills and habits to continuously learn and adapt.
There is no better way to start a book on technology careers than by going directly into the number one career problem that you may be facing: how to stay up-to-date with the fast pace and changes of the technology world.
In our many talks and presentations around the world, the question of how to learn all the new things is common angst for technology professionals. It is common to find people that reserve several hours each day for learning, and still feel outdated and unable to catch up. To get out of this predicament, the best solution is to stop focusing on knowledge and start focusing on skills.
We, therefore, bring you this chapter, where we’ll unravel the secrets to learning about technology constantly and quickly. You’ll learn about the following main topics in this chapter:
Knowledge versus skillsFinding focus and prioritiesApplying just-in-time learningPracticing deliberately to learn a techImplementing important good habitsLet’s dive right in!
Developers around the world ask us a quite common question: How can we keep up with current, ever-changing technology? Developers spend many hours every week trying to do exactly that: learn about technologies, frameworks, APIs, languages, and tools that pop up all the time, hoping that this will amount to keeping up to date with technology.
The problems with this approach are multiple:
There are too many things happening at the same time, and it is impossible to know which ones are the most importantTrying to learn many things at once is confusing and you end up feeling tired and overwhelmed by the number of things that need to be doneForcing yourself to spend many hours a day doing something that seems never-ending is a recipe for frustrationBut there is one thing that gets the crown for being the most frustrating:
Learning many things that you will not apply right now is not only superficial but the knowledge will neither last nor will it be useful for longWhen you learn a new skill, think about how you will apply that skill. Actively search for a way to incorporate your new skill into your day-to-day coding projects. Using the skills you gain right away will help you to build the muscle memory for the new skill and assimilate it into your library of knowledge.
Have you ever spent hours learning something that you are not using in a project right now, and a few months later, when you need it, you remember next to nothing, and have to refresh it? And does that refreshing feel like almost having to relearn everything? There is a reason for that feeling and it is the difference between knowledge and skills.
An effective way to think about knowledge is that it is a collection of memories that are disconnected from each other. Because they are disconnected, it takes some time for you to remember those things when you need them. And once you recover one memory, it does not help you recover other memories. This is like learning about the history of bicycles and how they were invented. Although you may love bikes, it is hard to remember the names and dates and who did what. There is a better way.
Have you ever heard the popular saying that goes like this: once you learn how to ride a bicycle, you never forget? This is because riding a bicycle is not knowledge; it’s a skill. An effective way to think about skills is that they are collections of memories that are connected to each other. Once you recover one of those memories, they all come together and are accessed in a much faster way by your brain.
That is why, once you acquire the skill, you just sit on the bicycle and go. You do not need to remember each fact about riding a bike. It just comes to you, without effort. The most important thing about skills for you to keep in mind is that although you can acquire knowledge by reading or listening, you can only develop skills by doing. There is no amount of reading, listening, watching videos, or following amazing tutorials that will ever get you to ride a bicycle. The only way is to go down to the park and try, fall, try again, and eventually, do it.
This is the same for every developer skill that you want to master. To really learn something, you must do things, instead of simply studying to acquire the knowledge.
When you write your CV or resume or prepare your LinkedIn profile, do you list in it all the books you read and YouTube videos you watched? Do you list all the knowledge you have? Or do you put more focus on the projects you worked on and the experiences you acquired?
Even when just starting, you will clearly be better off including everything you did, even if they were just personal and volunteer projects, because, at the end of the day, it is your experience and skills that really matter.
We started this chapter by talking about how developers spend a lot of time trying to keep up to date, so does the discussion around skills just make it worse? We must spend time keeping up to date, but the outcome we desire is to gain more skills. As we gain skills, we must still do our day-to-day things, so it will take more time, not less!
Sometimes, in order to do things, you need to develop a strategy for doing so. This reminds us of a developer we know named Maryna Savchenko. She is a software engineer, based in Germany, and a true believer in software craftsmanship, clean code, and TDD. She finds intellectual fulfillment in accomplishing hard tasks and is passionate about acquiring and improving skills. When we asked her to share a story with us about learning continuously and shaping her career, she shared that what really helped her in her learning journey is a book entitled A Mind for Numbers, by Barbara Oakley. By reading this book, she figured out her own “learning framework.” Understanding how she learns best helped her to avoid frustration and keep being motivated during learning complex topics. Understanding the best way to learn new skills and gain experience by doing is a crucial step as you continue your path for learning. Let’s hear some more from Mayrna.
After leaving Kharkiv National University of Radio Electronics with a bachelor’s degree in computer engineering, I did not work as a software engineer. I was told that “I do not have it.” And I strongly believed that for some time. When I was offered a job in application support at a software development company, I was glad. I worked hard. I learned accounting by myself (to understand enterprise resource planning systems better) and passed four certifications, only to realize that I was learning the wrong thing. I learned the hard way how focusing on the right thing matters! Why was it wrong? Well, that technology (1C Enterprise) was limited to a number of countries (Ukraine, Russia, Belarus, and Kazakhstan). I could not reuse my knowledge, and working for a company with headquarters in Russia was not right after Russian-Ukrainian War started in 2014. In addition to that, I was making less and less money every day because of inflation. I was paying full price for my wrong decision and for listening too much to other people. At this point in time, I did the first analysis of the Java ecosystem and thought that it may be a good way forward. In the meantime, my husband and I decided to move to Poland from Ukraine. I realized at this time that I needed to think hard about what to do and what to learn next. After one more analysis of the market and technologies, I was sure that Java was a good choice and decided to become a Java programmer. Finding a job abroad without relevant experience is not an easy task. You need to be better than local candidates and prove it. In my case, I needed to prove it to myself also. So, I needed to learn a lot of things, such as the language itself, frameworks, build tools, testing frameworks, databases, design patterns, and so on. In the beginning, I was very slow, ineffective, and overwhelmed. So, I googled how other people learn. Many said they “just learn” and that is it. After some searching, I found Barbara Oakley’s book and it was full of the advice I needed. I also discovered a rich and diverse software engineering community (including Java champions, Microsoft MVP people, experienced software engineers, techno bloggers, and tech educators). It gave me an understanding of what I was doing wrong, and I started to believe in my plan. But looking for a software developer job in Poland was not successful for me. I had only one technical interview. When I tried to send my CV to Germany, I realized how geography matters! From sending 13 CVs, I got 6 responses, 2 onsite interviews, and 1 job offer. And we were on our way to a new country. In Germany, I still needed to learn a lot to level up, as well as the German language. Having a learning framework gave me the right tools and confidence to proceed. Last year, I got promoted to mid-level and started blogging (https://savchenko.tech/). Now, I am living in Munich and on my way to improving my career.
As Mayrna’s story illustrates, sometimes you have to find your inspiration and curiosity to continuously learn. Next, we will discuss how to find focus and priorities to help us identify the skills we need to keep up to date.
Connected to the how to keep up with current, ever-changing technology question that we looked at in the previous section, there is a follow-up that we also hear all the time: Which technologies are important to learn today, and which ones should we prioritize?
This question is a recognition that there simply is not enough time to acquire every skill, so what do you choose?
There is a simple answer to that: Choose to learn something that you need to apply right now.
It may sound simple, but it makes sense. If execution is what develops your skills, then if you prioritize learning about something that you need to use immediately, you will go ahead and use it, which will develop your skill. This is the best way to get yourself to do the skill the fastest. This is simple, but it is not very helpful, is it?
Imagine this. You must do something at work, and your boss tells you to learn and apply it. In this case, what we just discussed could be the right answer. However, that leaves you at the mercy of what your company wants you to do, and someone else’s ideas of what is important. Not a good strategy for an awesome career, is it?
For you to take control of your career—the theme of this book—you need to proactively go after the things that make a difference to you. For that, you will need to focus and choose what matters to you.
And immediately when you hear that, you may feel a tiny bit of anxiety pop up in your head. There are so many options to choose from:
What if I choose the wrong thing?What if the thing I choose is not the best thing?What if I miss the important things?What if things change?If you feel like this, maybe it is because you think that the focus is the technology or the tool that you will spend time mastering and developing the skills for. You may be thinking that the focus is, for example, on Java instead of Go or Ruby.
But that definition of focus is too narrow, and not very useful for your career. Choosing an area of your focus is not about choosing a technology or a tool, much less a framework or an API. Choosing a focus is choosing the problem you want to solve. In a way, choosing a problem is a much more specific and narrow focus.
For example, you can focus on solving the very pressing problem of achieving high performance for large, scalable, Java-based finance applications in the cloud.
This is a very precise problem to solve. It seems much more specific than focusing on Java or the cloud.
However, the tools, knowledge, and skills needed to achieve high performance are actually many and varied. You will need to know about Java tools, cloud tools, performance tools, financial concepts, scalable architectures, and so much more!
Well, this seems too much to learn! Aren’t we back to the problem of lack of focus? If you keep the problem in mind, then no. It is the problem that will help you keep your focus.
In our example, you don’t need to learn or keep up to date with everything in Java, just the parts that focus on performance. There's no need to follow every single tool that shows up in the cloud. You will focus on the ones that give you an edge on the scalability needed in the financial world.
Finding your focus is finding an interesting problem to solve that you are passionate about. In the next section, we will introduce a concept to help you.
Here is where the rubber hits the road. Once you know a problem, even if it is a broad idea of what it is, you have a direction to go, learn, research, and dive deep. How can we mention broad and deep in the same sentence, and not make that contradictory? This is what we call just-in-time learning, which is a two-step process. Let us discuss each step briefly in the following subsections.
The first step is to have a broad view of the problem you are going after, the tools, technologies, companies, people, and more.
Once you lean toward a problem or direction, even if it is fuzzy and just defined in general broad terms, surround yourself with related information. Your goal is to go broad, to know what exists.
This will be scary because the more you know it exists, the more you will feel there are too many things you do not know. That is called the Dunning-Kruger effect, and it is a cognitive bias that you can learn to control:
Figure 1.1 – Dunning-Kruger effect
To go broad, use the following techniques:
Follow people related to your focus on Twitter and LinkedInSearch for technologies and projects in that general areaTalk and connect with people, ask questions, and pay attentionAttend online and in-person meetups and eventsSubscribe to bloggers in that spaceHere, you are looking to have a broad view of the landscape, get a feeling about the terminology, the most mentioned and used tools, the people that are shaping that area, and what they think.
This is a superficial view, but you should also look a little below the surface. When you hear about tools and concepts you do not know, a quick Google search will tell you what they are and what they are useful for.
Keep this in mind: you need to know that things exist, their general usefulness, what problems they solve, what problems they create, and a sense of their popularity. You can use your memory, a file on your computer, a notebook, or even tools such as Anki to maintain your general view of your problem space. This is knowledge, and it is particularly important that you are continuously aware of your problem domain.
One crucial point: this seems very time-consuming, right? If you agree, it is because you are thinking about going deep, and spending hours researching every day. But remember, that is not the point but rather a superficial understanding. You should be aware and connected. You should be paying attention to your area. A few minutes a day, or when the opportunity arises, is more than enough for you to build that general idea.
We can almost hear you say, “This superficial idea will not help me learn things!” And you are right. The objective of being broad is to know what exists. Then, you apply step 2.
Now that you know what exists, look for opportunities to apply interesting things in your day-to-day coding and development projects so you can experiment with this approach. This can take many forms.
Look for opportunities to experiment with some of those technologies or ideas in your current project. Even if your project will not use these ideas in production, there are many opportunities to experiment with prototypes and test cases, as tools for you to be more productive, or to build a tool for the team.
Pay attention to what is going on in your company. You may hear of projects or proofs of concept that are being considered, customers that need a new solution, or internal projects that need to be implemented. Volunteering to discuss and participate in some of those may give you a chance to apply the technologies you are interested in.
Find things outside of work that you are interested in. Applying skills at work is your best option, but sometimes the opportunities are harder to come by, and you may need to look elsewhere. Personal projects, volunteer projects for a non-profit, or open source projects are all good options.
In all cases, when you see an opportunity to apply your knowledge, this is the time to go deep with just-in-time learning. Do a deep dive into how to use that particular technology or tool. Spend a few hours during the week creating a small prototype, getting something up and running. Your goal here is to get up to speed with it as fast as possible and go as deep as possible in that time.
The objective is not to become an overnight expert but to be able to apply that new idea to a real project.
What will just-in-time learning do to your skill acquisition process?
First, it will give you a broad vision of what exists and what matters to your focus area. That, in turn, will allow you to identify opportunities to apply that technology.
Second, once you find a real opportunity, you will go deep by learning and applying immediately what you learned, and that will give you the skills you need to advance.
That begs a new question: how do we practice?
If you ask me what the third question that we get all the time is, it is How can I be a better developer?
And again, the answer is simple enough: practice.
If what matters are the skills you only acquire by doing, it follows that the more you do (practice) the skill, the better you get at it.
Again, the answer is simple, but not very useful. Because you are probably thinking about your reality, where you barely have time to do your work and what you must do, you can barely keep up with all that goes around you. How can you spend hours and hours practicing something?
This, indeed, is a good point.
First, you do not need to spend hours and hours practicing. Second, as much as possible, you should practice by doing something real, and that, in most cases, means doing your work.
There is a third point too! If this is your career, should you strive to be the best you can be?
That is not a rhetorical question. For many people, their job is just a job. And that is totally OK. If this describes you, do not feel bad that you are not interested in putting your best effort into becoming better. All you need is to be good enough to hold a decent job. And at the end of the day, you go home to your family, hobbies, and your life.
There are many developers whose lives and hobbies are more interesting than their jobs. And they are better at their hobbies than they are at their jobs. At this moment, Bruno interjects—“I am one of them.” I am better at speaking, engaging audiences, and building communities than I am at being a software developer. I now spend my time helping developers with their careers.
As a Java developer since the earliest days of the technology, Bruno took part in some of the largest Java projects in Brazil and gained extensive experience in large projects in the government, finance, and service industries. While doing this, his passion was actually communities. Slowly, he combined his developer work with community work and started to participate in Java open source communities and projects, such as the Java Community Process (JCP) program, the Open Source Initiative (OSI), the innovation-focused Campus Party Institute, The Developers Conference and much more.
So, although he started as a Java developer, he eventually made his community hobby his main work, and he helped to found SouJava (Sociedade de Usuários da Tecnologia Java; Java Technology Users Society), one of the world’s largest Java User Groups (JUGs), and became a leader of the Worldwide JUGs Community, helping the organization of hundreds of JUGs worldwide.
The fact that I was able to turn my hobby into a full-time career is testimony that it can be done.
But if you do want to be the best technical person you can be, then you must practice. And for you to not spend all the time you have available practicing, here are a few things you need to know about practicing deliberately:
Deliberate practice is practicing with a purpose: You must practice with a specific purpose in mind. Just sitting down at the computer and hacking away for a few hours is fun, and you should do it because it is fun. But that is not practicing deliberately. Define what you want to improve, by when, and what you are going to do to get there.Deliberate practice is focused: Choose a specific skill you want to improve and work deeply on it. Focus on the specific thing you need to improve and be better at. Practicing is improving one specific skill at a time.Deliberate practice is intense: Define some exercises that you can focus on with intensity for 30 minutes to 1 hour. A clever idea is to use the Pomodoro Technique and execute one or two pomodoros (25 minutes each). Another technique is to use the rule of three: do three focused bursts with a few minutes or even a couple of hours between them.Deliberate practice is daily practice: In terms of skills, nothing beats consistency. It is better to practice for 15 minutes every day than to concentrate 4-5 hours at the weekend. Set a daily practice time, use some inactive time during the day to review past practices, and commit yourself to do a small effort (even 5 minutes can make a substantial difference). Anything that helps you practice daily will give you better and more consistent results.Deliberate practice uses proven methods: As much as possible, follow existing tested practices. Learn how to type on the keyboard using proven methods. Practice code katas that have been created specifically to improve development skills. If you cannot find or do not know a proven method for something, talk with friends or colleagues who are more advanced than you, and see whether you find some common techniques that worked for them.Practicing proven methods daily, in a focused way, and with intensity, especially when combined with work, can at the same time reduce the number of hours invested and give better results.
You will encounter roadblocks along the way, but you can remind yourself to make learning a part of your career path and journey. To be successful in your technical career, you need to consistently be learning. Consistency with a manageable amount of learning is the key to success in making learning a part of your lifestyle.
But how can you keep the consistency? You keep consistency by making learning a habit. That is why we need to build a few good habits.
Your brain is always trying to optimize the paths and build the neurological structures (the brain equivalent of muscles) to allow you to do what you need to survive. So, it looks for repetitive things that you do, and it tries to codify those repetitive tasks into structures that are easier to access, faster to execute, and require less energy.
That is why we are creatures of habit. Most of what you do every day are habits or routines, codified in our brains, so we can access them easily and quickly.
When those structures help you move forward and achieve your goals, we call them good habits. They are good for you. When they prevent you from advancing, hinder your results, slow you down, or cause you harm, they are vices or bad habits.
Either way, your brain loves to just run with them!
There are a few good habits that can really change your life. We have listed a few steps that we think are particularly important for you to create good habits.
When there is something that you would like to do, get in the habit of taking small actions. Taking action is the hardest thing for us to do, and not taking action is the basis for terrible vices such as procrastination and perfectionism.
Try to take small actions on things you want to do. Do you want to participate in an open source project? That seems big and fearsome. Take a small action such as accessing the page of the project and looking at it for a few minutes. Overcoming the inertia of things you want to do will help you do things even when you do not feel like it.
Our brains can be cluttered with thoughts and ideas. To help you think better, your brain needs to externalize. Speaking with someone or writing about it will help you clarify your thinking.
That is why developers need to write code every day, focusing on solving problems. Take a few minutes every day to write about a problem. It can be writing the text for a blog or article, or it could be more technical and be code and pseudocode to explain or test an idea. It can also be just having a conversation. Doing this daily will help you think better and be more articulate.
You know when you start a sports activity, your coach will do some exercises that are always the same? Things like stretching and warming up exercises. This primes your body and gets it ready for the activity ahead. Your brain needs that too.
Create small routines to start working. Start coding. Or any important activity that you need to be very sharp and focused.
A startup routine is a series of small steps, such as saying the following to yourself – before I start coding I will do these things:
Sit downPut away things that are not neededDrink a glass of waterClose the emailOpen the IDETry to repeat the same steps, with purpose, every time you start coding. It will prime your brain and get it ready to focus on the task at hand.
We live in a world that is full of distractions and we combat information overload coming from all aspects of our lives. We are busy and it becomes difficult and overwhelming to achieve the things that matter to us. If we focus on the things that are most important to us and that we want to accomplish, we not only gain focus but we also become happier and more productive. This is the idea behind the Three Big Rocks concept. It is a concept that can help us to prioritize our time.
The Three Big Rocks concept is mentioned by Stephen Covey in his book, The Seven Habits of Highly Productive People, which can be found on Amazon at https://www.amazon.com/dp/0743269519/ref=olp-opf-redir?aod=1<.
In this book, there is a time management expert giving a seminar to a roomful of people. He provides a demonstration of this concept by taking a mason jar and putting large rocks into the jar and asking the audience whether or not the jar is full. The attendees indicate that the jar does appear to be full. The speaker then adds smaller rocks into the jar, fitting them in between the large rocks, and turns again to the audience to ask whether the jar is full. The audience is not sure which way to answer at this point, so he adds some sand to the jar to fill in even more of the space between the large rocks and the pebbles. While pausing and asking the audience again to confirm whether the jar is full, he then pours water into the jar until it is at the point of overflowing. The speaker then asks what the objective of this exercise is. Some people may answer that no matter how busy or full your schedule may be, there is always room to put more things into your schedule; however, the point of the Three Big Rocks example is that if you don’t put the big rocks in first, you will never get them in at all.
This is a simplification of the concept and there is much more that you could learn and apply, but this gives you an overview of the main idea behind the term “three big rocks.” To implement this concept, at the start of the week, make sure you decide on your three big rocks for the week. They are the three most important tasks you have for the week, the ones where, if you complete them, you will feel that your week was worth it.
Schedule time to do them. To choose the three big rocks, look at your long-term goals, and make sure you choose the things that move you in the right direction.
Those are just a few examples you can implement. To help you deploy those habits in your life, remember to start small. Your brain will resist any substantial changes.
Habits are implanted faster if you succeed than if you fail. So, it is better to create a writing habit by writing for 5 minutes every day and succeeding every day than trying to start writing for 1 hour a day and failing after a few tries.
Also, daily habits are easier to implement because they become ingrained faster. To implement a habit, experts say you need around 66 repetitions to create new pathways in the brain. That amounts to 3 to 4 weeks if you do 2 or 3 repetitions a day. So, it is better to do something you can repeat every day, multiple times a day, depending on the habit. That is another reason why you should focus on starting small.
Other techniques you can use to help you keep the motivation to implement powerful habits include doing things together with friends in a community (it increases your commitment) and organizing your day or your habit to be easier for you to do than for you not to do (making it easier for you to take action).
Building small habits or routines will help you stay focused and consistent and will lay the groundwork for you to advance fast in your career.
Heather interjects here, as an enthusiastic learner who enjoys having a variety of responsibilities, “I have found joy in being able to consistently bring new aspects and skills into my life and career by developing habits that set me up to be successful.”
As the senior director and chairperson of the JCP program, in her role, Heather is responsible for the leadership of the community and chairing the JCP Executive Committee. She has led and participated in several initiatives with the community (including JUGs) as part of her role, such as JCP.next, Adopt a JSR, Hack Days, and Java in Education, and is an internationally renowned public speaker at software development events all over the world.
She says,
