The choice of programming language and other technologies is one of the first steps in building software. With the variety of languages and the overlap between them, the choice often depends on the preferred environment (i.e. desktop vs. web), operating system and personal preferences of the developer or company. For the individual programmer, the choice of a first programming language can be confusing but is ultimately less important than the continued dedication to developing your skills and knowledge of overall programming concepts with whatever language you choose.
This post is part of a series on creating a roguelike game in C#. For the latest chapters and more information, please visit the Official Project Page on ComeauSoftware.com. The current code for this project is also available on Github.
What language should I learn?
That’s the first question that I often see from aspiring programmers which is understandable. With all the technologies out there, it’s easy to get lost in all the choices and spend too much time agonizing over the decision and second-guessing yourself.
There are two basic questions you should ask yourself when deciding on a first language –
- What kind of programming do I want to do?
- What language am I most comfortable with?
That’s really what it comes down to. I’m not going to defend C# as the best first language to learn because it might not be the best for any given person. It’s simply the language that I find most useful at this point and the one I’m choosing to teach here. If you’re looking at this course, you probably have more than a passing interest in learning it, too, and I’ll do the best I can to guide you.
What do you want to create?
To answer the first question, C# is a general purpose language derived from C++ as so many languages are. As a general purpose language, I’ve used it to code everything from Windows Forms apps to web applications with ASP.NET to Windows services. That’s something I like about it as I have one major language that I can do just about anything with. I’ve also seen the tendency for people, including myself, to get distracted by every new popular programming technology that comes along and to believe that they have to know a lot of different languages in order to be real programmers. This is not true.
Of course, if your main language is no longer in demand and you want to stay in the job market, it’s a good idea to pick up something new and popular to stay in the game. As long as you’re working with useful tools, though, there’s nothing wrong with just mastering those tools as thoroughly as possible. Certainly, there’s more than enough in a language like C# to keep you busy doing that, especially as it’s now being updated every year.
It’s great to have some experience with two or three languages for the sake of perspective but, if you really enjoy programming, you’ll probably pick that up naturally as you go. You don’t need to be fluent in a variety of human languages to communicate with others and you don’t need to know a variety of computer languages to call yourself a programmer.
What language are you comfortable with?
Again, it never hurts to investigate a new language because you just might find that you really like it. I was a Visual Basic programmer until I found myself on a team that used C#. I was productive with it within a couple of weeks and have never gone back although I still enjoy working with Visual Basic for Applications (VBA) when I need to.
As a programmer, you’ll spend enough time and energy mastering various concepts such as object orientation and data management no matter what language you use. As long as you’re reaching your personal goals and creating great things, forcing yourself to learn a different language for any other reason is often a distraction and will take the fun out of programming.
Above all, use a language that will help you keep programming.
What else should I learn? What will I need to know tomorrow?
C# is not going anywhere. I’m confident that the language will be around for many years to come and it’s used enough that, even after something else takes its place, there will be plenty of code that needs to be maintained. Still, there are other concepts such as user interface standards and error handling that apply no matter what technology you’re using and I’ll do my best to present as many of these as I can during this course.
C# is the chosen language in this course and I want you to be comfortable with it by the end but I also want you to know how to design great, robust solutions. While there are guidelines that you can follow, there is no checklist. It really comes down to understanding how the technology works and caring about the outcome so that you can make the right decisions at each point in a project.
Throughout this series, I will encourage you to explore certain subjects further on your own. I’ll be sharing links and encouraging you to do your own searches on specific subjects. This is an essential skill for programmers but, unfortunately, its one that aspiring programmers sometimes lack. So many people will spend tens of thousands of dollars on bootcamps and classroom instruction when there are endless resources of all types online, even free college courses. Technology is constantly evolving and finding a new classroom course or bootcamp for every new subject would soon become impractical.
I encourage you to pay close attention to the external links that I feature throughout the course. I enjoy sharing quality resources and I will do that here as well. Take a moment to bookmark some of the sites that I refer to as they might come in very handy as you progress in your own programming journey.