Skip to main content Jump to list of all articles

5 Things I Wish I Knew Before Starting Programming

It can be hard to start programming. Especially if you’re going from a newish casual developer to doing a degree. Considering I’m in my fourth and final year of said degree, I’d like to think I know my way around my IDE of choice by now. I’d also like to think I know a few more things than 17-year-old Cait did back when I started my degree, I’d only really done basic HTML scripting, SQL and Python, and hadn’t considered the fact I could set up my IDE with other extensions to make my life easier.

Four years later, I’m a bit more experienced with setting up Visual Studio Code for other languages that I’ve had to code in for my degree including Java with Gradle, C#, and C++. Or set it up to use game engines like Godot.

Of course, that’s not all that goes into an IDE or programming, and the fact stands that there are other things you can do to make your development easier, both in terms of extensions and sources you can use to learn. So here are 5 things I wish I knew before I started my degree.

1. Programming With SonarLint

Briefly mentioned in July 2023’s Hot New Web Dev, I got acquainted with SonarLint during my summer internship. Though I used it in the context of my internship, I’ve found it improved my quality of coding. The general idea of SonarLint is that it informs you of any coding errors, such as breaking naming conventions.

It can also inform you whether there is a better way to do things, whether it’s from a cyber-security standpoint or general performance. There is both a cloud version you can use and an extension that integrates it within your IDE, which is what I use.

It goes into detail about what the rules are and why they should be heeded, giving ideas for solutions and in some cases, correcting it for you. In case you want to deliberately ignore a rule, you can also disable it from within your IDE so it no longer flags it as a warning.

With support for many languages, I have it in most of my profiles for VSC. Speaking of profiles…

SonarLint warnings in the console
Example of SonarLint’s Warnings in the Console

2. VSC’s Profiles

It always used to annoy me that I couldn’t have different instances for Visual Studio Code and that I had to have everything I needed installed, regardless of whether I needed it at that moment or not. Visual Studio Code would have to load C# extensions and C++ extensions, even if I needed just my Java-related ones. And I could uninstall them all, but when you swap between languages a lot, it is just time-consuming.

The mass number of extensions also impacted my loading time, and more often than not, made my laptop’s fan kick into overdrive as it tried to load my IDE. Admittedly, it isn’t hard to make my fan sound like a jet engine, but that’s neither here nor there.

Fortunately for me, Visual Studio Code added profiles a while back, which has made things a lot more organised. I have one “Essentials” profile that contains everything I need regardless of the language, and then when I create a new profile, I use that as a base.

I have profiles for most languages now: C#, Java, Python. Everything is neater and segmented. Some extensions I have don’t work the best with profiles currently- I use one called Projects to organise my different workspaces, and it creates new instances for every profile- there isn’t an option to have one static install.

Regardless, I wish profiles had been around much sooner, and I would say learning to use them are necessary for those of us who like organised IDE’s, or program in many languages.

VSC Profiles
My Profiles in VSC

3. Most Things Have Visual Studio Code Support

I’m a bit spoilt by Visual Studio Code. I struggle to use other IDEs like IntelliJ, Eclipse, etc. I’ve tried and failed to swap: learning a new IDE can be time-consuming, and I’ve used Visual Studio Code ever since my small Python programs when I was fourteen.

I’m a bit stuck in my ways.

Anyway, I’ve coded in things like Unity, and Godot and I’ve coded in Java, and C#. In the case of Unity and Godot, they have their own built-in editors, which they generally recommend you use. In the case of C# and Java, it’s recommended you use Visual Studio and IntelliJ/Eclipse. So, obviously, I didn’t do that. I instead googled if I could use Visual Studio Code as an IDE.

Which you can. For Unity and Godot, it was as simple as going into the program settings changing the editor to Visual Studio Code, and adding extensions for each one. There are plenty of guides available. It’s a similar concept for Java and C#- you can install Java Extensions for Visual Studio Code, and ones for Maven, and it works fine.

C# was a little more finicky to set up with the .csproj file types, but once I had it working, it was perfect. There were certain benefits I missed out on by using Visual Studio Code over Visual Studio, but for me, the benefits of using Visual Studio Code outweighed them.

So, if you ever want to use Visual Studio Code in another application, like Godot or Unity, or things like it, have a Google. Chances are, there’s support.

And of course, this also applies to your IDE of choice- go wild!

Godot C Sharp Editing within VSC
Godot C# Editing within VSC

4. Project Management

There are several ways to go about project management. Personally, when it comes to my personal projects, I use a combination of GitHub Projects, GitHub Issues, ToDo Tree, and Bookmarks.

I’ll start with the GitHub-related things. GitHub Projects is a way I keep track of things I want to integrate, things I was in the middle of, and things I’ve done. It integrates neatly with Github issues, which is exactly what it sounds like- a way to keep track of all the issues in your projects.

GitHub is used industry-wide, though many companies use something called Jira and Confluence alongside it: Jira is used to keep track of your “stories”, basically things you want to include in your project. Confluence is used for documentation. Personally, for issues, I have used something called Linear, however, whilst I found it good for group work, more often than not I find using Github is simpler for a one-person project.

The Kanban board can be organised however you see fit, and in my case, you can see I have ToDo, in progress, stuff I’ve done, and useful resources. I refer back to it every so often, but you can see at the moment I haven’t added much to my Todo.

Project Board for my All The Small Things Project
Project Board for my AllTheSmallThings Project

ToDo Tree is something I use on the IDE side of things. By writing keywords like ToDo, and Bug, I can write comments above lines of code and use the ToDo tree tab to jump to those positions in the code. I find it’s a lot easier than relying on memory or trying to search by keywords in the IDE itself.

Along similar lines, Bookmarks allows you to, well, bookmark specific chunks of the code. There is a little overlap with ToDo Tree admittedly, but whereas ToDo Tree relies on keywords within your comments, you can use Bookmarks to mark specific functions in your code.

ToDo Tree
ToDo Tree within my Code
Bookmarks
Bookmarks within my Code

5. Start Small

I’ll admit- I hate reading documentation. There’s just so much of it, so many pages, so I’m far more likely to brute force learning than to read the docs. It’s a bit inefficient admittedly, and sometimes, even I turn to documentation, but for me, brute forcing is a better learning style. I learn better by implementing it myself, and running through the code with a debugger, then reading ten pages of the split function in C#.

Either learning style is okay.

Anyway, when faced with large programs, especially when unfamiliar with the language, breaking it into smaller, manageable chunks is a better way of handling it. In group projects, this already has to happen, by the nature of working in groups. It might seem obvious at first glance, but when I was starting out, I’d look at the program as a whole and wonder where on earth I’d start.

Nowadays, I look at the project, or program, and roughly plan what I need to do. In my games programming module, I made a list- a ToDo list, if you will- of things I wanted in my game, prioritised the necessary ones from the unnecessary ones, the easy from the difficult ones, and designed rough algorithms for the harder aspects. It made the project seem more manageable, instead of, you know, staring at it blankly and wondering where to start.

Similarly, looking at other people’s projects and running through them to understand what they do is also a good way to learn. I did that when I was attempting to learn Forge for Minecraft Java Edition because there wasn’t clear documentation available, but plenty of example programs.

Conclusion

A lot of this might seem simple to some. Especially those who have been developing for a while. But I hope this helps in some way for those who can struggle to remember the small things you can do to make your life easier, especially aspiring developers and students alike.

It certainly gave me a few things to reflect on while writing this.

Caitlin Ridge-Sykes

Author

Cait is a student currently studying for an applied computing degree at the University of Dundee, Scotland. In her spare time, she likes reading, writing, gaming and various crafts.

Explore Cait’s Talents on Linkedin

2 replies on “5 Things I Wish I Knew Before Starting Programming”

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Discover more from WorldOWeb

Subscribe now to keep reading and get access to the full archive.

Continue reading