One of the hardest parts of becoming a programmer is simply deciding what programming language you should learn. There are so many to choose from! You become curious and next thing you know you’re learning nothing more than the syntax and some algorithms of like 5 different languages just to feel as lost as you were when you first started.
The problem here is that when we’re first starting, we’re not always defining the direction we want to go with programming before we start. There’s a large misconception that to become successful as a programmer you just have to be very well versed in the syntax and algorithms of a specific programming language for the purpose of nailing whiteboard interviews to go work at some huge company that barely anybody gets accepted into in the first place. That all of sudden, if you just learn to code, that you’ll be able to make the million-dollar app idea that you came up within your college dorm room.
Blasphemy! You follow that tactic and I promise you that you will feel just as lost as when you first started when it comes down to creating something. Maybe you taught yourself the wrong language and what you wanted to create in the first place required a completely different language to work with. Maybe you learned all the nuances of a language just to realize you have no damn clue how to work with the framework that you’re working with. Remember, coders, are creators and not only just coders!
Define what technology you want to work with, what you want to build, and then only at that point, can you start learning a programming language with intent.
By defining what you clearly want to do and work with first, you’ll be able to find more utility in what you are learning and therefore be more productive in the act of creation and your approach.
Now with that being said, I’ve done my due diligence by creating a list for you guys on what you should learn based on the technology that interests you the most.
Data Science (Machine Learning, AI, Deep Learning)
Data Science is a bit more complicated in that they don’t require frameworks in order to learn effectively. In the approach to data science, instead, you’d have to place focus around the right libraries to use and have a fairly good understanding of both linear algebra, statistics, and calculus. Don’t be discouraged though if you don’t understand difficult math concepts, they are relatively easy to learn when you focus intently on the purpose of data science and what you are trying to accomplish with it.
Python is a very easy programming language to learn especially among beginners who are having difficulty understanding the syntax of programming. This is a perfect language to learn because it receives a large extent of support for machine learning via a variety of libraries and tools available to use. It’s for this reason why understanding the math behind data science isn’t a must but rather a “good to have”, so that you know exactly what is going on behind the scenes. Otherwise, all you have to do is just fit datasets to the functions available in the libraries.
Some good libraries to learn and get yourself familiar with are TensorFlow, Scikit-learn, Keras, Pandas, and Numpy. A good way to practice is just simply finding datasets to work with online.
R is very popular among machine learning developers specifically for its functional and statistical algorithm features, as it is designed for both statistical and analytic purposes. Due to the rich variety of libraries that R has, it makes it a very good choice for analytic specific work.
Although python can do much of what R already does, R is very good at living up to the purpose it was made for. So that being said, go with R if you are planning on focusing heavily on statistics. Otherwise, just stick with python.
My Recommendation: Python
Cloud computing is an absolutely fascinating technology. I actually work in the Cloud Computing industry myself as a Salesforce developer. For the most part, aside from Salesforce, cloud development may require knowledge stemming from all sorts of technologies including data science, web development, or even game development.
This is because integration with cloud platforms normally comes in the form of an SDK that you have to program into an existing application. Cloud technologies may also be controlled entirely from an administrative position. It really depends on what role you want to have with the technology. That being said, each of these platforms is very difficult to learn and has a huge learning curve. But when you get to the point that you do understand everything about the platform, you’ll be met with an overwhelming feeling of satisfaction and confidence.
Salesforce is essentially a CRM (Customer Relationship Management) on steroids that can be used to not only manage and store a companies information but to automate tasks and build out websites that customers, partners, or internal users can use and interact with.
Unlike the other services noted below, Salesforce is a PaaS (Platform as a service) rather than an IaaS (Infrastructure as a service). Meaning that it is a proven model for running applications without the hassle of maintaining on-premises hardware and software infrastructure at your company.
What’s great about Salesforce is that learning resources are very accessible through Trailhead, a gamified learning platform for Salesforce specific learning.
Amazon Web Services (AWS) [Various Languages]
Unlike Salesforce, AWS, Azure, and Google Cloud serve as an IaaS (Infrastructure as a Service). IaaS is a form of cloud computing that provides virtualized computing resources over the internet.
AWS stands as the market leader in the cloud computing industry and will most likely be wearing that crown for a while given its deep breadth of available services ranging across computing, storage, database, analytics, networking, mobile, developer tools, management tools, IoT, security and enterprise applications.
This makes AWS a relatively great place to start out for more people moving into the cloud industry given its vast array of opportunity and industry specializations. Learning and understanding the AWS platform will make you a very marketable developer.
Microsoft Azure [Various Languages]
Standing as a strong number two to AWS thanks to its integration between itself, Office 365, and Teams, Azure serves to be a fantastic choice for any aspiring cloud developer. This solution is especially useful for organizations that already widely use Microsoft tools as it allows companies to have a smoother transition to the cloud. This makes understanding Azure very valuable as many organizations are already committed to Microsoft technology making Azure the go-to solution for them.
Google Cloud [Various Languages]
If you’re interested in big data, analytics, machine learning, or cloud-native applications, this is where Google Cloud holds a very strong footing. It actually stands out in the space of machine learning thanks to the fact that it has direct access to the technology that powered Google’s search engine.
The issue is that Google Cloud has traditionally struggled to break into the enterprise market, but this allowed them to provide services to smaller, innovative projects. That being said, they are still growing at a rapid pace and still deserves to be weighed in as a platform to choose when deciding which Cloud platform you should learn.
Mobile App Development
I feel like it’s every other day that someone comes up to me with a different app idea that a million-dollar idea. We live in a world where everyone is now connected through their phones with thousands of apps available for download on the marketplace, so it’s completely understandable that many people would want to default to learn how to program so that they can bring their dream app idea to fruition.
This is a native apple development platform meaning that it can be used for the sole purpose of not only developing for apple exclusive applications but also for deploying any apple application made from another platform. That being said, XCode is absolutely imperative to learn if you ever want to deploy an app to an apple device.
Now if you want to create an app with XCode, Swift is the necessary language to learn. The primary reasoning you would want to develop with Swift is to create an app that not only runs fast on an apple device but also has a customized user interface for the device.
Android Studio [Java]
The same can be said about Android Studio as was said with XCode about user-interface and performance. As you can see in the name, this is an IDE that is used to develop native Android apps. Java is the must-know language for developing using Android Studio.
It is in my opinion, the best mobile framework to use, because of its ability to use native UI components, it contains a vast library of ready-made UI components, it provides access to native functionalities such as the camera, allows for further optimization using native code, it has hot reload for automatic recompilation, it is very reliable, and it has a vast array of libraries and packages to use for seamless development.
Xamarin, the oldest of the three cross-platform frameworks listed here, was founded in 2011 and allows hybrid apps to be developed using C#, .NET, and Microsoft Visual Studio.
Xamarin is known to create apps with near native-like performance levels and providing a seamless user experience with Xamarin Forms which allows the reuse of code using template-provided interface elements. It is best used for apps with simple UIs due to its larger-than-native app size.
Flutter is another cross-platform framework that is the newest among these three (created in 2017 by Google) but has gained a ton of traction, especially across front-end developers, for developing hybrid apps for mobile. Its primary programming language is Dart.
It offers a development platform complete with pre-built widgets, APIs, CLI (Command-Line Interface) tools, and pretty much every other tool that you’d possibly need for development. It allows high app customizability, reliability, and hot reload for faster bug fixes. Unfortunately, it doesn’t expose many Native APIs for utilization therefore you’d have to resort to using Third-Party Packages.
When the world revolves around the modern internet, the opportunity will always be found in the development of websites. Web developers lead contemporary innovation and are constantly changing the way technology and the world works through great examples such as Facebook, Spotify, Twitch, Youtube, Discord, and many others which ultimately started as websites before they came into the mobile application market. As a web developer, you essentially have the power to provide service to anyone in any market.
Now honestly, there are way too many useful frameworks out there in the world of web development to really ignore any of them so it’s very difficult for me to dilute each one down without writing a novel, so I’ll be discussing in terms of front-end and back-end development and then briefly go over the frameworks associated with each. Keep in mind you don’t have to choose either or route to go down. You are fully capable of learning both front-end and back-end development to ultimately be dubbed as a full-stack web developer.
When people initially think about web-development they think in terms of graphical interface first and foremost. We ponder about what we’re creating and try to reason how we want the user to interact with our application. This is perfect for the person who wants to focus entirely on creating a functional user interface and experience. Here are a few frameworks to consider:
Backend is essentially what you can expect to serve all the behind-the-scenes work and processing of an application. It’s arguable more important than frontend as it is the infrastructure that powers the application in the first place. This is where you would normally manage database connections and processing for cloud services such as AWS, Azure, and Google Cloud. Here are a few frameworks to consider:
- Django (Python) — It is a Model-View-Template framework that is used among tech superstars such as Google, Youtube, and Instagram. It provides techniques and tools for developers to easily build secure websites and comes with a bunch of features that includes messaging and authentication.
- Rails (Ruby) — A Model-View-Controller framework used by companies such as Airbnb, Github, and Hulu. It is very beginner-friendly and allows beginners to easily pick up web development, but also gains a steep-learning curve once you get into the more complex functionalities of it. Very useful and allows for fast-development with its library-like functionalities.
- ASP.NET (C#) — A very lean Model-View-Controller framework for building web and cloud applications, especially that it allows easy integration with Azure given that it’s built-in a Microsoft environment. It is a very secure framework, highly performant, and is complemented by the rich toolbox of Visual Studio. Companies like StackOverflow, GoDaddy, and Ancestry uses ASP.NET.
- Spring (Java) — A Model-View-Controller framework used by companies like Zillow, Wix, and TicketMaster. The fact that this framework uses Java makes it very attractive among developers.
Building video games is a dream for many and I completely understand, I actually started off my programming career pursuing game development before I moved into Salesforce Cloud Development. The idea of creating universes and interactive worlds out of nothing but lines of code and animation was absolutely fascinating to me. It’s probably the closest we’ll ever be to playing god.
Now when it comes down to game development there are two wildly popular game engines you should consider choosing.
Unity is a cross-platform game engine that can be used to create 3D, 2D, Virtual Reality, and Augmented Reality games, as well as simulations. Unity is primarily used by indie developers to create sophisticated games with ease using C#.
The most popular games you see made with Unity are normally beautifully made 2D indie games such as Hollow Knight, Cuphead, and Hearthstone. That doesn’t mean that you can’t make beautiful and sophisticated AAA level games with Unity, but honestly to reach that graphic rendering prowess with Unity requires a lot more work than Unreal Engine so that’s why you don’t really see Unity output games that rank up there with the sophistication of some Unreal Engine Games.
That being said, Unity is very easy to learn and I firmly believe it is the best place to start for any aspiring game developer as you don’t need a large team to create something great.
Unreal Engine (C++ / Visual Programming)
Unreal Engine is, in my opinion, a more sophisticated and powerful game engine than Unity. It is capable of making the most beautiful and glorious video games you can imagine and there is no doubt that many of you have heard of games like Fortnite, Borderlands, Gears of War, Bioshock, and the never-ending list of powerhouse games made with Unreal.
This doesn’t exactly mean you should go run into developing with Unreal guns blazing. Unreal Engine is made for developing large games and rendering games with extremely detailed graphics, and the fact that it uses C++ (cringes in horror) as the main programming language makes it difficult for beginning programmers to jump straight in. Yes, they do have a visual programming feature, but the point here is that you want to learn how to program. If you think you are up to the challenge though, be my guest.
My Recommendation: Unity C# (for beginners), Unreal Engine C++(for experts)
I know that was a lot, but hopefully, I’ve provided you as an aspiring developer to make an easier choice in deciding what programming language to learn and which technology you should use to learn it. As developers, there are so many great things that we can create and it can be very easy to be pulled in all different directions. My advice would be to start with one thing. Choose what you want to do and learn how to program by using a particular framework, platform, or engine. The best way to learn and gain skills as developers is to simply start finding ways to build.