Where to Start
Having spent over 10 years as a software developer and having managed teams and mentored people from other areas of technology, it won't come as a surprise that this question has been asked of me on more than one occasion. I've read or heard this question asked many times over the years, and most commonly, the answer given is always: Just start writing code.
The reality, though, is that that answer isn't entirely helpful, or complete. A lot of time it's not particularly helpful at all.
It's not easy to get started and just write code. Sure, you could write something to display 'Hello World!' to a console, in fact as a first step you probably should, but this isn't going to get you far.
The real answer should be: You need to write code, that solves a problem for you.
It doesn't have to be good code, no one starts out writing good code. It doesn't need to look pretty, and you certainly don't need to compare yourself to every YouTuber that has created a video, after spending hours prepping and completing multiple takes.
The only thing that matters is that it solves a problem for you and that it works.
Why is this so important? The truth is all about motivation. In reality, it's difficult to come up with a real-world problem you need to solve, and the chances are, if you look online someone may already have solved that problem, but that's not the point. If you have a problem you would like to solve, and you have the desire to find a way to solve it yourself, then you will be motivated to stick to the problem and find a way to complete a solution.
I've never personally found it easy to write code for code's sake. If I'm not working on something for a reason, and by reason, it has to be more than that just because I want to write something, then I often find halfway through the project, that if get sidetracked, or lose interest, I'll never return to that code and it'll remain forever unfinished.
A Bit of Background
Before I became a software engineer, I worked in other areas of IT, working in support, or as a network engineer. I'd completed a computer science degree prior but never really made the most of it at the time. Throughout, my time in these jobs, whilst I enjoyed them, my passion was always in coding.
As such, I always found myself coding in my spare time, finding projects that solved a problem for me. My first few 'personal projects' were actually:
An application to manage and tag my MP3 collection.
An application for my family to manage their digitised film collection, that is additionally connected to IMDB to display the synopsis and rating of each film in the collection to make it easier to decide what to watch.
An application from when I worked in IT Support for a college, which allowed us to do mass imports of student accounts into Active Directory, allowing the year's intake to be created in minutes rather than the days it took previously to manually input the accounts.
None of these applications would be looked upon as being well-engineered or good examples of coding, but because they solved real problems, I had the motivation to see them through to completion.
So Why am I Talking About This Now?
Well, in truth learning never really ends. For most of my recent career, my focus has been on engineering web-based and back-end platforms. However, when I started, a lot of my focus was on desktop applications and I did a lot of work with Windows Presentation Foundation (WPF) applications.
Recently, I have been thinking about a day-to-day issue with document management in my own home, I have huge amounts of physical documents I could do with digitising and destroying, after all, who works from paper these days?
I could scan these documents into one single PDF file and then split them into individual documents later. This is far more efficient than splitting them up, scanning each document and then manually renaming them individually. I'm sure there will be plenty of tools to do this already but to me, this is an opportunity to revisit those days of desktop application development.
I came up with a plan:
Create a PDF Splitting application using .NET Multi-Platform App UI (.NET MAUI) a more modern implementation loosely based on WPF.
Having a plan to solve a real world problem has got me excited about writing code for a personal project again, and writing about it also makes me think a bit more about what I'm doing as I go. To me, even though I've been writing software for over 15 years in various capacities, this is still going to be an opportunity to learn.
Did you find this article valuable?
Support Dave K by becoming a sponsor. Any amount is appreciated!