Over 2,000 mentors available, including leaders at Amazon, Airbnb, Netflix, and more. Check it out
Published

New Age Learning

Navigating the complexities of learning software development can often seem like an insurmountable task, yet with the right motivation, it becomes an engaging journey of discovery. This article explores how personal projects, inspired by everyday challenges, can not only accelerate your learning experience but also add a touch of innovation to our digital world.
Joey Pedicini

Software Development Coach, Freelance

Introduction

Navigating the complexities of learning software development can often seem like an insurmountable task. Yet with the right motivation, it becomes an engaging journey of discovery. This article explores how personal projects, inspired by everyday challenges, can not only accelerate your learning experience but also add a touch of innovation to our digital world.

The Journey of Learning Software Development

Learning software development is hard. There's no definitive right or wrong way to learn, but I firmly believe that anyone can learn if they're properly motivated. For some, this motivation stems from the thrill of creation—starting with an idea in their head, transforming it into physical reality, and then sharing that with the world. That's my preferred learning method, and that's how I assist my mentees.

The Power of Personal Projects

There are countless ways we can integrate software into our daily lives. Even though we're all unique individuals, with our own interests and skills, there's a software project out there for everyone. For me, that project materialized as a journaling app I named Bonjournl.

From Problem to Project: The Story of Bonjournl

It all started with a problem—I needed a tool to encourage me to write daily, as writing contributes positively to my mental health. I wasn’t satisfied with the existing tools; they all served their purpose but didn’t align with my unique workflow. So, I noted down a few key features that I wanted my app to possess, drafted some rough sketches on a whiteboard, and set to work. This journey highlighted how one's own challenges could fuel creative problem solving and product development.

Guiding Clients on their Learning Journey

When I initiate work with a new client, I urge them to consider a problem in their daily life that software could potentially solve or improve. It might be an existing product that falls short of addressing their unique challenges. There are a variety of projects that people have wanted to build: a habit tracker, an anonymous therapy app, a podcast summary generator, an online dog tag, a community prayer app, and the list goes on.

The Impact: Creating and Learning

What's fantastic about this learning approach is the innovation it spurs. While learning software development, fresh ideas and perspectives on existing issues are constantly being formed. One project at a time, we're incrementally improving the world. The ability to share your creation with the world is a powerful driving force.

Learning in the Information Age

The allure of the information age is vast. All the information you need to bring whatever ideas you conjure up to life is at your fingertips. At times, all that's required is guidance from someone who has tread the path before to help you navigate it.

The Mentor's Role

My clients are the captains of the ship; I merely act as a guide to keep them on course and prevent capsizing. I'm there to cheer you on and reassure you that you have what it takes. Through this process, not only do my clients gain a comprehensive understanding of software development, but they also build practical solutions that they can take pride in.

The Step-by-Step Process: Bringing Ideas to Life

One of the crucial elements of the mentorship I offer is a defined process for taking an idea from conception to realization. It's a step-by-step journey, which we'll explore in more depth below.

1. Ideation

The first step is to form an idea. There are no limitations on what ideas can be worked on, but the idea should serve a purpose - it should solve a problem. So, I suppose we could say we start with identifying the problem statement.

2. Establishing Requirements

Next, we come up with a few requirements. Bonus points are given for writing these requirements as user stories. I encourage my clients to learn about what makes a good user story (Given, When, Then; Acceptance Criteria).

3. Sketching the User Interface

If our project has a user interface, we then create some whiteboard sketches of what it will look like. This step allows us to visualize our product and plan for its functionality.

4. Review and Feedback

Then comes the review stage. We go over the sketches and requirements together, and I provide my feedback. After that, we decide on a task management process that suits the client's comfort level. This could range from using Jira, GitHub issues, or even just a plain to-do list.

5. Task List Creation

Once we have our management process, we create a list of tasks and prioritize them. The goal is to produce working, useful software as early in the process as possible to facilitate early feedback.

6. Choosing the Tech Stack

The next step is deciding on the tech stack. The choice entirely depends on what the client feels comfortable with, because the learning process can adapt to anything.

7. Development and Check-ins

Task by task, we build the project, with weekly check-ins to assess progress. I also remain available via chat for any queries or hurdles the client might face during their coding journey.

8. Setup and Launch

The first task is always to get a "Hello World" app running and have your main branch hooked up to a CI pipeline. This ensures that each push updates your production app.

9. Iteration

Once enough of the project is complete to start using and sharing it with others, we can begin to identify what is missing and what could be improved. This stage involves a lot of iteration and refinement based on the feedback received.

Embrace Imperfection: There's No Such Thing as Terrible Code

One key piece of advice I always share with budding developers is that there is no such thing as terrible code. There is working software, and there is non-working software.

Too often, developers hold themselves back because they fear producing bad code. But the reality is, the internet is built on what some may consider "bad" code. Especially if it's a proof-of-concept project, the quality of the code doesn't matter in the least. The goal is to build something that elicits feedback and allows for further iteration. If it ever reached a point where it received funding, a team would be brought on board to re-write the software to be more scalable.

So write code that might be deemed terrible and wear it as a badge of honor! It's a testament to your learning journey, and each line of code brings you one step closer to becoming the developer you aspire to be.

In conclusion

Learning software development is an enriching journey that fosters creativity and problem-solving skills. Through identifying everyday problems and turning them into personal projects, you'll gain a deeper understanding of software development and improve the world one project at a time.

Find an expert mentor

Get the career advice you need to succeed. Find a mentor who can help you with your career goals, on the leading mentorship marketplace.