How Do I Practice Writing Code If It’s Not My Day Job?
Mom,
I graduated from a programming bootcamp, and six months later, I finally got the job!!! But I have to spend a few months in QA before the company can move me over to a software developer position. My manager has set aside some time each week for me to work on my development skills, do you have any suggestions for courses or projects to practice programming and help my skills stay sharp?
-Biding My Time
Dear Biding,
If your company has a subscription to an online learning platform like Pluralsight or Udemy, that’s a great place to start! Course-based online learning often walks you through building a project to help you learn new material, and microcourses can be a great way to add new skills to your programmer toolkit.
Outside of courses, though, here are some of my favorite projects to practice programming skills you may already have. These projects require thinking through problems in ways you may not be used to, with all of the “gotchas” involved in creating a fully-functional application. They are also large enough that they can be split up into multiple days/weeks/months of work, and can be put down and picked back up fairly easily… as long as you’re writing clean code and documenting what you’re doing as you go along!
Also, since you mention doing QA work while waiting to be transferred–is there an opportunity to write unit tests for the existing codebase? If there are no automated tests, or the existing tests are somewhat skimpy, that could be a great way to provide value to the company and increase the testability of the codebase while keeping up your programming skills.
Happy coding (and congrats on landing the job!),
Mom
Build-A-Blog
There is a joke: every developer has built their own CMS (content management system) at least once, and then thrown it away to use something built by someone who actually knows what they’re doing. (I once built my own CMS with Ruby on Rails; you’ll note that this blog runs on WordPress.)
Creating a CMS or blogging application involves a lot of moving parts that are similar to other, more complex applications: user authentication, database management, CRUD API design, and a graphical user interface. The basics always stay the same–users can log in and post content, and other users can log in and comment on that content–but you can spice up the “blog model” by building a CMS that operates more like a BBS forum (think Reddit subreddits), or a CMS that serves up pages of a comic book instead of blog posts.
Go Shopping
Ecommerce is another one of those things that often gets thrown away in favor of using specialized platforms with dedicated support teams, but shops make for a great practice project that utilize most of the same skills as the blog project mentioned above. In lieu of accepting actual payment, you can use dummy credit card numbers to check out through payment APIs like Stripe or Square.
Start Playing Games
Simple game development using the Unity game engine can be great C# practice! You can find a beginner course from Unity at this link, and an intermediate course here. Recreating a classic 2D game or creating your own platformer, side-scroller or shooter game can help sharpen your C# skills while exposing you to new ways of programming. I would be remiss if I didn’t say that Unity has been in the news lately for some not-so-great reasons–so if the recent drama around their pricing schemes left a bad taste in your mouth, MonoGame (https://www.monogame.net/) is another engine written for .NET that you can use to create your own games.
Automate Your Life (or, Run the Report)
Scripting often involves looking at problems in a slightly different way than object-oriented programming. Is there a process you do on the computer that could be automated? You could try writing a program that automates a task for you, or a script that runs against a particular file and changes the file in some way. In a previous job, I wrote a Python script that attempted to consolidate and remove duplicate entries in complex spreadsheets, because manually reviewing the sheets took up a lot of time.
Another twist on this idea is to create a program that generates a report from a large set of data. You could utilize a free dataset, like Microsoft’s Northwind database, and write a program that generates reports based on the data in the database. Users could select what data they are interested in, and your program could generate a human-readable report document based on information and relationships pulled from the dataset.
This question was asked by a CodeMom.net user on X.com! Do you have a question for Code Mom? Use this form to ask your question, or ask Mom via social media!