As software developers, project-based learning is a great way to regularly level up your skills. Here’s how I set up my projects to help me with my career goals, from choosing a topic to setting objectives.
I am a software engineer with 6+ years of experience in building software applications, and a few years ago, I wanted to learn Android mobile development as one of my pet projects. Since Android mobile development is very broad, like most frameworks, I needed to focus my learning before starting a project.
With ‘project-based learning’, I found that I learn effectively no matter what technology, library or framework I study. However, designing projects requires planning to focus them in a way that enables learning.
When designing these projects, I focus on:
- Identifying why I want to learn something,
- Determining my learning objectives and skills based on the above, and
- Using my learning objectives to focus my project.
Identifying my learning motivation
Before starting a project for learning, I need to determine my learning motivation. I start by asking myself, ‘where do I see myself in x-number of years?’
Where I see myself in x-number of years does not necessarily mean in a professional capacity only, but in a personal capacity too. As an example, by profession, I build web applications and in my personal time, I build mobile applications, but the fundamental skills are transferable from either side.
The software development field moves very quickly, and with that comes new technologies every few years. Staying up-to-date and frequently upskilling makes for a long-term career in software development. As a web developer, I wanted to learn mobile development to diversify my skills and open up more professional possibilities for myself in the future.
Based on my knowledge and some research, I concluded that adding Android development to my ecosystem would be essential towards my goal because it’s a fast-growing industry.
Determining my learning objectives
Identifying a learning area - Android development in my case - leads me to develop a roadmap where I can keep my learning focused on achieving certain objectives, while also giving me a high-level skill overview of what I should be learning versus the good-to-know information.
To figure out my learning objectives, I ask myself why I need to learn this. That’s how I determined that I needed to:
- Acquire skills in mobile development
- Validate my work outside of professional projects
- Become a better developer
- Build a user base
Below is a diagram that illustrates my learning objectives:
This roadmap is similar to a study map. The main topic is at the centre, branching out to my learning objectives. Once I have this, I then look at my learning objectives and align them to the skills I need to acquire.
Aligning my learning objectives and skills
Acquire Skills in Android Mobile Development
The first thing I needed to do was determine how I intended to learn Android development. I decided to use Java as the programming language because I had exposure to it when developing web applications. Most Java web/mobile applications are nothing but a collection of compressed files in either .war or .apk (in Android’s instance) archives. However, these archives need to be created, compiled, and deployed as ‘projects’ using the dedicated IDE. This dedicated IDE would have to be something like Android Studio, where learning how to create, build, and publish my Android mobile applications would be essential skills.
Validation of my work
The choice to use Java was an obvious one for me as I was already exposed to Java in web applications (also known as J2ME). I saw this as an opportunity to extend my Java skills and validate my work as a developer in that I can pick up a new framework, learn it and build projects just as easily.
To get validation of my work, I knew that I needed to learn how to grow users while retaining them as well. This is why I identified creating a feedback loop for users as a necessary skill. A user feedback loop - which takes the form of a review section or forum - helps to identify:
- What is working,
- What is not working, and
- Where I need to improve.
Getting this feedback from users worldwide could then boost my learning, confidence and online presence.
One of my strong skills is pattern recognition, and I knew I could leverage this by learning how to track user activities as a skill. Analysing and interpreting these activities to influence existing and future apps meant that my applications become better over time. As a result, I become a better developer overall.
Become a better developer
For me, ‘becoming a better developer’ is having a good understanding beyond software development. Because I want my project(s) to be ongoing, being able to analyse, interpret, and translate user activities, I can identify the following:
- What features to add or remove
- For example, if the data shows that users spend more time on the main page of an app and the layout has a click-through to ‘more details’, I can remove the click-through functionality and summarise the app details on the main page instead.
- What kind of applications to build
- If the data shows that an app that formats dates is getting the most downloads, I can develop more apps focused around this.
- What kind of layouts to employ the most
- If users tend to prefer certain layouts for the apps they use, I could then focus on using these. This could include layouts like Linear, Relative, Web Views, Grid Views, List Views, etc.
- The demographics of the users
- Knowing this allows me to provide content that has the right context for users. For example, if the majority of my users were from South Africa, my content might feature loadshedding, potholes, etc.
- The rate at which my brand is growing
- By monitoring the network traffic, I can measure how fast or slow my brand is growing over time.
Build a User Base
Another aspect of becoming a better developer was branding myself as one. A personal brand, much like in business, gives you a public identity. Users get to know you through your work, and some of those users eventually become ‘loyal customers’. This meant I needed to build a user base, or customer base, to perpetuate my brand.
Users play a huge role in any application, and being able to identify what role you need them to have in your application can be immensely beneficial. I wanted to build a user base to test my ideas and share my continuous projects with, allowing me to always be learning and improving my apps. So creating a user sign-in and user registration pages was one of the skills I needed to learn. As part of keeping user details, I also needed to learn how to store and retrieve data from a database.
Once I align my skills with my learning objectives, I can update my project roadmap:
Using my learning objectives to focus my project
Based on the above objectives, I decided to create a project that focused on attracting more traffic to my network. My project was an ‘App Store’ which would list all my future applications and allow users to download and install the applications providing a single entry point to my hub. This would help me reach my learning objectives because I would be able to create and publish more applications in the store with consistent growth in my network traffic. To further refine this project, I did some research on frameworks and audiences.
Focusing my project with a target audience and framework
With mobile applications, the most important part is to know your target audience. To determine my target audience, I first studied the size of the market and the number of applications on Google Play and other mainstream platforms. Because of the large number of applications on these platforms, I decided not to publish my apps on them, despite the huge user base. Since I wanted to build my own user base, relying on the platform’s algorithm to recommend my app to a significant number of users would take longer or might not even happen.
Before I decided to develop Android applications, I had a huge interest in Android mobile devices and fell in love with the Samsung S-series line (which runs Android OS). This love affair for Android devices led me to join XDA Portal & Forums, which is a community for anything tech, especially Android. I used this website for updates and to always be the first to know about the cool hidden features, customisations, apps or easter eggs on Android devices. This is where I found out about Xposed Framework.
The XDA community has over a million users and only 500 apps. It’s a niche market, publishing apps on the Xposed Framework Repository, a dedicated platform for publishing Xposed Framework applications, so it would ensure my work goes through millions of consumers. This aligned really well with my objectives: to build a user base and validate my skills outside of work. It is for this reason that I chose the Xposed Framework, which also provides seamless customisation ability on compatible Android devices.
I figured once I had built a user base, it would be easier to publish in the mainstream platforms, rather coming with my own users than relying on that platform’s algorithms to push my applications to the top of their lists.
Creating a realistic goal and timeline for my project
From time to time, we developers need some sort of motivation to keep us going when work becomes too stressful. To do this, I set an overall goal that would build my confidence and my portfolio. And nothing screams confidence, like having a million users for an app that I built from nothing.
I then figured out my timeline for this goal by analysing the behaviour of the market in South Africa vs abroad. In SA alone, it would take four times longer to build a user base of just 1000 users, especially when you have no marketing budget. The market abroad is more open to ideas and trying them out.
By doing this research, my goal became to reach 1 million in downloads, users, or visits in my ecosystem in the next five years. To reach a million in my ecosystem, I understood that I needed to build a long-term relationship with the users based on trust towards my work. By becoming a better developer, I become better in a lot of things, including quality work, therefore, enhancing my reputation within that market.
Measuring current goal progress
At the time of this article, I have reached 65% of my 1 million user goal, and this is only after a period of 3 years. I am confident that I will reach this goal in the next two years or less. According to my network’s statistics, I average about 25% (in downloads, users, and visits) of the overall 1 million mark a year.
Of course, in the 1st year, this was not the case because no one knew who I was in terms of my work, but over time as I got better and actually started listening and replying to the few users who downloaded my applications, I improved. As a result, my applications became better at attracting even more users. Some users even started recommending my applications in XDA forums to others who were looking for applications that provided the functionality they needed.
What a learning roadmap enables
Outlining my learning objectives and desired skills in a learning area enables me to create a focused plan for my projects. Rather than simply tinkering with them, I can plan my projects so that the learning aspects are emphasised and align with my goals. From here, I can also create a realistic goal and timeline. Once I have completed my roadmap, the next step is choosing the right source/s for project-based learning.
Cedric Maenetja is a mission-driven software engineer with a passion for building things that make a difference as well as being innovative with 46+ mobile applications and over 160 000 users worldwide. He has mentored and advised numerous junior developers domestically and abroad through OfferZen mentoring programme.
- How I Make Time for Project-Based Learning (PBL)
- Luno Co-founder Carel van Wyk on Levelling Up with Projects
- Learning Resources that Helped Me as a Self-Taught Developer