How to Improve as a Software Developer

Search for a command to run...

No comments yet. Be the first to comment.
In this series I will be building a PDF splitting application for Windows using .NET MAUI.
Introduction For this series, I will create a PDF Splitter application using .NET MAUI. This will be a Windows application which will enable me to split out pages from a PDF file into multiple pdf files as required. .NET Multi-platform App UI (MAUI) ...
Introduction Semantic Kernel is an open-source framework by Microsoft that integrates machine learning and natural language processing to build AI applications. It offers tools for tasks like language understanding, text generation, and semantic sear...

Introduction In the earlier articles in my PDF Splitter series, we have relied on the inbuild .NET libraries to handle working with PDF files in MAUI, but these only support opening and displaying of PDF files. Now that we are looking to save our new...

Introduction In the previous article, we created a PDF model and service to allow us to work with and track PDF pages. The next step is to build the UI to allow us to interact with the service. To do this we will create a single 'view' and a 'view mo...

Introduction For the fourth article in my PDF Splitter series, we will start working with PDF files in .NET MAUI. Helpfully, MAUI contains a lot of useful PDF tools for reading PDF files out of the box, so we do not need to use any additional librari...

Introduction In this article, I'm going to introduce basic navigation into my .NET MAUI PDF Splitter application. If you're following my PDF Splitter Application series, you will have a simple application based on the out-the-box .NET template with a...

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.
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.
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.