Symbian Operating System
15th August 2022MVVM Architecture in iOS
29th August 2022The change in the software industry has been dramatic over recent years. New technologies are introduced daily to keep up with this evolution. Developers must be adaptable if they want their careers to progress through these changes successfully!
Developers are constantly learning to stay current in the industry. The 2020 Stack Overflow Developer Survey found that 75% of respondents learn new technology at least every few months or once a year. Given how quickly innovations happen, developers have no choice but to keep up with changing technologies.
Creating Sustainable Learning Habits
To stay competitive in your career, you need to ask yourself some questions.
- “Do the technologies our company uses change and advance?”
- “Does my role help me keep up with technology evolution?”
The answer isn’t always a resounding yes.
Not all companies have the capacity or appetite to stay at the forefront of technology. Many large corporations are focused on delivering business outcomes that mean maintaining current systems instead of making drastic changes.
You need to be responsible for your own learning to stay competitive in your career.
There was a time when the longer you’d been in the industry, the less you needed to learn. But now it’s different! Think you can sit back and relax after you’ve secured a developer role at a tech company? You’re in for disappointment.
You need to learn and learn how to learn quickly.
To make sure that you are learning effectively, you need to do more than set goals. You need to create learning habits that are sustainable.
Humans are creatures of habit. Habits transform our lives because we become what we repeatedly do, day after day. If you want to achieve a goal, you can’t do it on a whim and expect to achieve it tomorrow.
This is true whether your goal is to become more mindful, receive a promotion, or make a million dollars.
Becoming an exceptional learner — who learns and applies what they learn in practice — takes consistent effort. You can only do that by creating good learning habits. I will share with you seven learning habits for developers to aid you in your career success.
Habit #1: Blocking Out Learning Time
The difference between successful people and those who are not can be found in how they approach their goals.
Successful people set aside time every day to work on the things that matter to them. The others try to set huge goals and hope for the best.
So the first and most important habit that you need to cultivate is to be disciplined about learning. You can achieve this by setting aside dedicated time to learn.
If you have a full-time job, this could happen after work hours. You might decide to set aside two hours after dinner, three nights per week. Or it could be a few hours every weekend.
To create a habit, you need to set the time aside first. Then you need to follow through and consistently spend that time learning. Whether reading a book, watching a tutorial, or writing code, you need to treat it like an appointment. You’ll form a habit of learning new skills at that time. And once you do that, you won’t have to think twice about it.
Without dedicated time set aside, it’s easy for you to prioritize other activities that are more urgent. And often, those urgent activities don’t really matter or bring you closer to your goal.
Habit #2: Creating a High-level Plan
You know the saying: “if you fail to plan, you plan to fail.” This applies to learning, too.
Sometimes, developers get impatient and plunge straight into active learning without any preparation.
If you want to become a front-end developer, you don’t need to read every book on how to code with JavaScript, HTML, and CSS. You don’t need to watch all the JavaScript tutorials. And you don’t need to subscribe to every web developer’s website. If you do that, you will end up lost in information overload.
Instead, start with the basics. Read one book or article at a time. Or watch one video tutorial series at a time. And then slowly expand your resources as you need to.
When you have too many resources, it can be overwhelming and make it difficult for you to focus. It’s important to create a high-level plan of your goal, and then break it down into smaller milestones.
This will help you focus on one thing at a time, and prevent information overload. It will also make it easier for you to track your progress and see how far you’ve come!
Another example is when a developer wants to learn a JavaScript framework, like React. She starts reading tutorials about React without any plan on areas to focus on, or how to get to her goal — an ability to write React apps.
The better way for her to learn React would be to:
- pick up a focused book or course,
- look at the official documentation,
- go through the step-by-step approach from main concepts to advanced guides and API references,
- and create a sample application in React while looking at and learning from other examples out there.
This structured way of learning can be achieved with S.M.A.R.T goals for each stage of your learning. S.M.A.R.T. goals are good goals because they’re specific, measurable, achievable, realistic, and time-bound.
Building learning habits via a structured way of learning doesn’t mean subscribing to traditional classroom-style learning and attending classes regularly. Let me introduce you to a learning framework called the 70:20:10 model.
As developers, we know that you learn by actually doing the work. The 70:20:10 framework is based on the principle that 70% of your learning will be hands-on and on-the-job. 20% will be social learning through others who have already done it, via coaching or collaborative activities like peer programming. 10% will be through the traditional way of learning.
Each has its own merit. But this model is a good reminder that you must incorporate working with and interacting with others into your learning plan. So, when you are creating a high-level plan, be sure to include all of them.
Here is how to put the 70:20:10 model into practice. Continuing from the previous example, you want to learn React. When creating a high-level plan, you will come up with a small project idea, create an end goal, define the steps required to achieve that end goal, and for each step, read and learn only what is necessary to complete that project.
Here, your end goal might be to create a web app that uses React for both the backend and front end. The first step might consist of creating a static page with links to your favourite websites. And once you achieve that, you can tackle the next step. This could be to connect to a third-party API and display the five most recent articles. This step will therefore include tasks like researching the API, reading about its data structure, implementing it in the app, and so on. Research, reading, and watching tutorials make up 10% and the rest of the hands-on activities will make up 70%.
When putting together a high-level plan, make sure to include S.M.A.R.T. milestones. S.M.A.R.T stands for:
- Specific: This ensures your milestones are well thought out, and not vague or general. Instead of a generic goal like becoming a better programmer, set a specific milestone. For instance, understanding the basic concepts of data structures and algorithms. This will lead to you achieving your goal of becoming a better programmer.
- Measurable: This quantifies your milestones so you know where you are and whether you have reached them. Instead of saying learn React, a measurable milestone might say: Create an interface in React that reads JSON responses from a third-party API, displays results, and refreshes them every 30 seconds.
- Attainable: Having ambitious goals are good. But if they’re not realistic, then there is no point to them. If you have no experience with machine learning algorithms, you can’t expect to write a system that offers a personalized news feed, based on a user’s search history, in a few days. By breaking down an ambitious goal into actionable tasks with milestones, you have a higher chance of achieving them.
- Relevant: This ensures your milestones are relevant to your overall goal. Just like the saying, “Never lose sight of your vision,” a milestone that is not aligned with the goal is a random activity — or busy work.
- Timely: This one is pretty straightforward. In Agile software development, there’s a concept called timeboxing, which is allocating a maximum unit of time for an activity. Having a time constraint for each milestone means you have a deadline for when you should complete the activities you set out to reach.
Without S.M.A.R.T. milestones, you won’t be able to measure how you’re doing and your high-level plan will be less practical.
Habit #3: Reflecting On What You’ve Learned
Having a clear high-level plan with milestones is good. But it will serve little purpose if you’re not tracking your progress.
With this habit, you’ll commit to reviewing your progress every fortnight or at least every month. You’ll compare it against your timeline and ask yourself whether you are heading in the right direction.
Set up a calendar reminder to do this at the start of your learning goal so you don’t forget.
Check against your high-level plan and think about what you’ve learned each month. If you’re not achieving your milestones on time, reflect on what you’ve learned to help you understand where you’re struggling. Then you can revise your action accordingly. Think of it like A/B testing for your learning approach.
On the other hand, if you’re achieving your milestones, reflection serves as a great tool to think of creative ideas. For example, thinking about how you used the API in your latest web app may spark a new idea using the same API.
Habit #4: Tinkering & Having Fun
One reason people find it hard to make good habits stick is that doing the work consistently isn’t always enjoyable. It requires discipline.
For example, it’s easy to cultivate a habit of eating dessert after your meal, because it’s pleasurable. It’s much harder to build a healthy eating habit. That’s simply because it’s not as fun as eating what you want when you want it.
We are humans and humans, by nature, like to do things that are fun and enjoyable. We seek pleasure and avoid pain. So to make sure your learning habits stick, you need to inject some fun into the process.
What does fun look like? From my experience as a developer, there is nothing more satisfying than seeing my code run successfully. It makes you feel good. The feeling of accomplishment is one of the best feelings because it’s so rooted in ego.
For a new backend developer, it could be seeing how data is successfully saved into a data store. For a front-end developer, it could be seeing their new app working in a browser for the first time.
When you know what brings you joy and satisfaction, include those things in your high-level learning plan. When learning becomes fun, it’ll be a habit that you will likely keep for a long time.
Habit #5: Taking Notes Like a Pro
Whether you’re learning on the job, from others, or at formal learning events, you should take notes.
Note-taking feels natural to students in secondary schools or universities. But many knowledge workers lose the habit as they enter the workforce.
There’s a lot of research on why note-taking is beneficial to learning.
- It helps with information retention as well as recall.
- It helps with understanding what you’re learning as your brain processes information. Note-taking encourages you to clarify the main idea and key points as you’re writing things down.
- Lastly (and probably most importantly), it focuses your attention on what you’re learning.
Today, there are so many distractions that are fighting for our attention, from seeing a social app’s red badge to the rabbit hole of information at our fingertips. Just by typing a few keystrokes, note-taking forces you to stay focused on your learning topic.
“It doesn’t matter how you record your notes, as long as you do.” – Bill Gates.
While taking notes is better than not taking them, I beg to differ with Bill Gates. You can take good notes and you can take bad ones. If you’re going to take notes, you may as well do it well.
Here are some note-taking strategies for developers:
- Pick an appropriate system, like the Cornell system, Mind map system, or Classification system.
- The Cornell system is great for taking notes while reading a book, listening to a podcast, or watching a tutorial.
- The Mind map system is appropriate for deep research on a topic and how various information comes together. Check out these examples on mind map note-taking.
- The Outline system is great for classifying information based on importance using headings, sub-headings, and lists. It’s the most common form of note-taking method and is often used by students.
Habit #6: Learning in Public
#buildinpublic is a trendy concept amongst makers and entrepreneurs. Some may even call it a movement.
It’s where creators share progress on what they are making via public platforms like Twitter and YouTube. They share their successes — and their trials and errors.
It’s definitely the opposite of sharing your achievements only after you’ve successfully created something.
Just like #buildinpublic, learning in public means sharing your progress on a public platform. It’s a great habit. By sharing early and often, others will be able to provide feedback on your progress, share insights from their own learning experiences, and last but not least, help you build momentum on your learning journey.
What’s more, you will reach like-minded individuals in the industry. They might be able to connect you with potential employers and projects. They know what kind of skills you have from what you share in public.
Check out the #learninpublic hashtag on Twitter. You’ll see many tweets from developers sharing their learning and enjoying an open dialogue.
Habit #7: Celebrating Small Wins
The habit of celebrating small wins may seem self-indulgent but it’s actually one that will bring all the other habits together and create an impact on your career as a developer.
How does celebration relate to impact creation, you might be wondering. It’s because when you celebrate your achievements, however small they may be, it helps keep your momentum and motivation going.
For example, if you’re building an iPhone app in React Native, you don’t have to wait until your app is finished and is available in the App Store to feel accomplished. You can celebrate every time you’ve reached a milestone that you’ve set in your high-level plan.
The first milestone might be the point where you can run your React Native app on iOS Simulator. The second celebration might be when you’ve finished creating a splash screen for your app. All these small wins are critical to helping you build the momentum you need to achieve your goal of being able to create iPhone apps using React Native.
In James Clear’s best-selling book, Atomic Habits, the author described the process of building a lasting habit via four simple steps:
- Cue. A cue is a trigger that prompts you to take an action. In the case of learning habits, it’s habit #1, which is about setting aside dedicated learning time.
- Craving. Craving is what you are wishing for, something that gives you a positive feeling, such as feeling accomplished, productive or useful.
- Response. The craving then causes you to perform an action which is a response. It could be the art of tinkering or getting support from others when you share your learning progress.
- Reward. Last but not least, the habit loop is completed by reward, which is the benefit you gain from engaging in the habit. And in building learning habits as a developer, the reward is reinforced by celebrating small wins.
Through this process, your brain will start associating the reward of celebrating small wins with the cues of learning at a dedicated time. This is how you create a lasting learning habit loop.
Learning Is Critical For the Future of Work
Back in the day, career progression was largely linear. A person would move up the traditional career ladder — from a junior role, to mid-level, to a senior role, before becoming a manager and then possibly retiring as a senior executive.
However, your career progression will not be the same in the future. It will be a lattice career progression, where you will move throughout your career, whether horizontally, diagonally, or vertically, in both directions. This form of career development has already become common in our generation as more workplaces have a flatter organizational structure and an agile way of working.
It is estimated that 60% of all new jobs in the 21st century will require skills that only 20% of the current workforce possesses. What this means is that you will need to be flexible, adaptable, and always be learning and growing in your career to thrive in the future of work.
Being an exceptional learner gives you an edge and sets you up for your career success. I’m a firm believer that you can get better at anything in life if you take the time to understand the process and have the willingness to improve.
Learning is no exception. It is a skill that can be improved with practice. Building sustainable learning habits as a developer will keep you challenged, provide you with excitement, and move your career forward as a developer.