As I mentioned in a previous post, professionalism in software development means a lot of self-improvement and some time out of work to learn new things. Sometimes an employer will give you a few hours a week, or perhaps a day a month, to be used for learning. Which is great and is a sign of a good employer. These opportunities in work hours provide ample time to learn new things, as the time investment isn’t as steep as people think.
To start, a good measure is providing you with an information flow of the things you want to keep up-to-date with. Finding these springs of information can be a pain, however. Distinguishing from a mindless spam can be tricky. You need to find the nice middle ground between information bombardment and drought, based on how much time you spend browsing the web normally.
Try to weave them into your usual web browsing. Whichever your social media of choice is, use that. It will automatically build into your daily routine. If you’re on Reddit, subscribe to subreddits and make sure they appear on your front page. It’s all about making the transition from looking at dog gifs and cat pictures, to looking at dog gifs cat pictures as well something productive.
Integrating these information feeds into your current feeds is just a start though. The best way to keep on top in the industry is to do greenfield projects. Something new and fresh, which isn’t constrained by legacy patterns or technologies. However, as you probably know, they can be hard to come by, particularly if you’re starting out in your career. You need to create your own opportunities through home projects. Outside the work environment, all projects are greenfield, with the added benefit of no deadline and no expectations.
Choose something that interests you and just start coding. If you’re aiming to design a new feature, just start writing and see if you can make it work (You can tidy it up later). If you want to learn a new design pattern, start small and build a small and simple program that gives you the feel for it.
If you’ve had that idea for a potential SaaS solution, just go make it. Use a new technology, use a new design pattern, and even use a new language. Build up your arsenal of tools to use in your day to day work. It doesn’t have to be the next multi-million dollar product to make the effort worth it. The experience gained will set you apart, making you first in line for future opportunities.
Remember. Time spent thinking about doing something is the time you could have spent doing it. This isn’t to say don’t plan what you want to do. It means you don’t need a detailed plan before you start. Questions like “What if I want to monetise it?”, “What if AWS pricing shoots up?”, “How could I market my SaaS idea?” are all secondary. You can cross the bridges when you get to them (and I hope you do). Use them as learning opportunities. Start simple, and build from there. (“I am going to make an exercise routine app using Xamarin” or “I’m going to make a simple website using the MEAN stack”, even “I’m going to keep up to date with the latest c# news”)
When I start a new project I like to swap out only one of the layers for something I haven’t tried before (SQL to NoSQL, Razor to Angular/React, Repo pattern to Clean). Keep it simple and don’t bite off more than you can chew. Starting out I just made sure I stuck to SOLID principles, which in itself gave me the largest gain for understanding what makes a good and bad codebase. To summarise, get started and see where it leads.