After some careful consideration, I've decided to change my main area of development from desktop development to web development. It's a decision I haven't taken lightly. It's a switch I've wanted to make for a couple of months now. This was my thinking process behind the switch.
Desktop Development Journey
Firstly, why did I venture into desktop development in the first place. In the beginning I wasn't quite sure which path I would take when I started software development. I just did an aptitude test and recognised that I have a good analytical brain and I knew I wanted to do something in IT. I reckoned that I would figure it out as I went along.
School was mainly desktop development based
I decided that I wanted to become a software developer in 2015 and enrolled in a Computer Science degree at the Namibia University of Science and Technology. I worked as a full-time accounts payable supervisor (and manager later) and studied part-time. Therefore my only development experience came from school assignments and projects.
In school we started off with C# in the first semester. I made an ATM banking console application. The next semester I learned about Java and made a hospital management console application. Later I learned about C++, made a name generator but after that I mainly stuck to C#. All of the applications I developed were desktop applications.
My classmates were also used to desktop development. This just made it easier to collaborate on projects together and this was the best way (at the time) to show off your project to the lecturer.
My first production application
In my final year of studies, word got out at my office that I was doing software development. The merchandising executive asked me if I could developed a simple desktop application. The main purpose of the application was for our business customers to place orders with Metro and to view our entire stock file.
The great thing about this project was that I could work on it during working hours. I didn't have too much difficulty creating this application besides figuring out how I will keep the stock file up-to-date and send changes to the client. Other than that, development was a breeze.
More development opportunities at work
After I completed the Metro Order App and I was put in charge of managing our ERP migration project. I got another opportunity to develop a desktop application for work. The new ERP system that Metro was switching to didn't have an integrated document storage facility. I decided to create one and save the company money in buying an application that integrates. There weren't a lot of document storage applications that did integrate with Metro's new ERP system.
There were more opportunities to develop desktop applications at work. I created a couple of small tools. I created a stock take variance report application to help Metro eliminate the second stock count. There is also the stock mapping tool I developed to help with the migration of the stock data from the one ERP system to the next. Finally I made a small ping app that saves our ping results in a text file that we can send to Metro's ISP if they are having connection issues.
Back-end over Front-end
Just before I developed my first ever production application, I did a web development course on Udemy. The biggest thing I struggled with was the front-end. CSS (and in particular the grid or flexbox) was giving me major headaches. I spent most of my debugging time fixing CSS issues. I was too obsessed with making everything line up perfectly and making elements grow and shrink properly.
When I developed the Metro Order application, I used Windows Forms for the UI. The drag and drop was a breath of fresh air. I stressed less about the UI and focused more on the back-end and getting the project done. This was a big selling point for me. That was the moment I decided to make desktop development (in particular .NET development) my niche to focus on.
Web development is the way forward
It was during my job hunting phase that I realised that I might have made a mistake by choosing desktop development over web development. I looked for local jobs and jobs in Canada (my wife and I were thinking of immigrating there) but most jobs were for web development.
A lot more web dev jobs out there
If I searched for ".NET" or "C#" on LinkedIn and Stack Overflow, most of the results would be for ASP.NET positions. Here and there I would find something for desktop development, but nothing was at a junior development level. I kept on searching until I finally saw two desktop development jobs in our local newspaper.
After the interview process and all the testing, I finally realised that I wasn't ready and wondered if I will ever be. There is just no way I will get enough experience in desktop development if I am not doing it on a full-time basis. Me getting up at 5 AM every morning to do one hour of coding just wasn't going to cut it.
Low barrier to entry
Web development has a low barrier to entry. Yes, this means more competition, but I'm not scared of that. I'd like to think I am a quality developer and companies would be lucky to have me. I just have to prove it to them. If I get my foot in the door, I am sure I can show them I am well worth investing in.
The amount of web development knowledge required to get my foot in the door is far less. I did an IKM test for one of the local desktop development jobs and there was just so much I still had to learn. I made a list of concepts I should have down, but I just couldn't find the time to learn it all.
I have the basic concepts down to build CRUD web applications. I've done it with NodeJS and Express, as well as with Laravel and PHP. I'm sure I'll be able to pick it up very quickly in ASP.NET and MVC.
Money, money, money
With web development there is an opportunity to make some side cash as well. You can do that in desktop development as well, but not a lot of people and businesses out there want custom built desktop applications. A lot of businesses want quick and easy websites. This presents an opportunity to make some extra income for not a lot of work.
Yes, there is a lot of competition out there. Plus WordPress and sites like Squarespace and Wix have made it easier for businesses to make their own websites in-house, but I've read a lot of articles stating that business owners don't really have the time to do this. I've also heard this from a friend of mine, who is also a business owner.
Any device, any operating system
The fact that you can access a web application from any device is the main reasons why I wanted to get into web development in the first place (before I developed my first production application). The bad thing is you need to consider every devices' screen-size and web browser. These days you just develop for Chrome, Firefox, Safari and maybe Opera/Edge, but that is still a lot.
At the end of the day, it just opens up your application to a wider audience. The user also doesn't need to stress about keeping the application up-to-date. That is all done on the server side.
The web is here to stay
The Internet is not going anywhere soon. In fact, more applications are starting to move to the cloud. Soon users won't need desktops any more. All the processing and heavy lifting will be done somewhere else and the user just views the end result on their smart phone or tablet. So there is always going to be jobs and business opportunities out there for web developers. Unlike desktop development which seems to be for big corporations only.
It's a shame I have to leave desktop development behind. I had a lot of fun, but its time for a new challenge. Hopefully I won't regret it.
Until next time. Thanks for reading.
Photo by Alvaro Reyes on Unsplash
Top comments (0)