I Want To Be A Programmer: How Do I Start?
Tags: beginners, languages, developer, career
Published: 2020-04-22 01:38:24

I am not self-taught. I went to school to obtain a B.S. in Computer Science. I’ve been in the industry for one year. This is not to say that having a CS degree is a requirement (as there is a plethora of evidence to suggest otherwise), but to acknowledge that this is my journey. It may be completely different from yours, yet we can still end up in the same city, same office, same team, doing the same job. I've seen it and can attest that it *is* possible to learn on your own!

There are plenty of resources available online to start programming. In addition, computer technology has a variety of domains, including database management systems (DBMS), internet of things (IOT), web development, and more to explore once you get the hang of it.

###**I'm listening... What do I have to do?**###

The principal step for beginning developers is to **choose ONE programming language** to start. This is because there are underlying foundations for all languages and too many growing languages to count on one hand, so let’s get really good at building with one.

I like to say that “Programming languages are really the same language but with different accents.” For example, one nuance amongst “language neighbors” is that the way a programmer declares, or names, variables may differ.

###**There are so many languages. Which do I choose?**###

Here is a list of common languages today:

* HTML/CSS/Javascript - These are all different languages, but with niche purposes. In conjunction, they are used to build the frontend (let’s say visible) parts of the webpages we use daily. HTML is for the bareboned text of the page, CSS is for the styling, and Javascript is used for the page’s functionality. Javascript can also double as the language for backend work. You may find this a good option to get started and get results!

 
* Java - My first language. Used mainly for backend development. It’s part of a cluster of languages called object-oriented programming (OOP) languages. This, in and of itself, is a separate detailed post. It is slightly more tedious to learn in the beginning, but not impossible and very useful in the end.

* C++/C# - Not interchangeable with Java, but tends to be spoken in the same sentence. The primary difference is that these are platform dependent, which is useful for game development. C# is also more proprietary and associated with a Microsoft development stack. A development stack is a specific group of technologies used in building an application.  

* Swift/Kotlin - These are used for mobile application development. The former is reserved for iOS development. Built by Apple, for Apple. The latter is for Android development and similar to Java.

* Python - Tends to look the least like the other languages, while maintaining the necessary concepts. One of the hottest and more versatile of the languages because of the gentle learning curve and readability. It’s a “code what you mean and mean what you code” type of language. This is another option that I suggest using to get your feet wet.

As a beginner, I recommend starting with Python or Javascript, but feel free to choose one that piques your interest. There are more than these, and, unfortunately, you will encounter people at arms about the “better” language. But it is up to you as a programmer; it all comes down to purpose and preference.

###**Nice to know my options. Where do I start the learning process?**###

Once you’ve settled on a language of choice, you can start filtering out all of the internet code-torial noise. 

* [freeCodeCamp.org](www.freecodecamp.org) - I hear rave reviews for those that go into bootcamp or apprenticeship that attribute this site as their starting point. **FREE**

* [Test Automation University](https://testautomationu.applitools.com/) - Abbreviated as TAU. Up and coming but also highly appraised. I’ve used this myself and found a better understanding of concepts that I’ve been using for yeaarsss in Java. I’ve also used it to learn Python in a couple days. It includes code-alongs and quizzes to test your understanding. **FREE**

* [Udacity](www.udacity.com) - A popular site with a wide variety of content. However, you have to pay for some. I have not used this.

* [codecademy](www.codecademy.com) - This is very helpful! I used it to learn Angular when I was short on time. It includes code-alongs to build something as you’re learning. It may offer a pro version, but, for your purposes, you can get what you need for **FREE**.

* [Youtube](youtube.com) - I think it’s underrated. When I’m doing something specific and snapshots from tutorials are not helping, I resort to Youtube to get what I need done. Sometimes, videos better explain the missing links between the snapshots. Also **FREE**.

Some languages are maintained by a company or organization, and may come with their own tutorials, such as [ReactJS](https://reactjs.org/). You can find these with a simple Google for the language.

Whichever resource you choose, find a tutorial, start it, and stick with it! Any final product, no matter how unappealing or inefficient the code, is an accomplishment. I proudly claim my code, even if I don't want it to ever see the light of day. But that’s what makes us programmers. Always learning, always improving, always spending too much time on semicolons.