How and why you should start programming
This article is for all of the absolute beginners of any age, computer science students, and also for those of you who quit school and want to retrain. It is also for parents who think their child might be interested in IT. This article will answer most of your questions and point you in the right direction. It'll also explain why it is a good idea to become an IT professional at this point in time.
I'm writing this article after many years of experience in the industry. I studied at a university, and got everything I needed to get started. I've trained people in IT workshops, developed several business applications, and most importantly, I created the ICT.social network (which is the international expansion of http://www.itnetwork.cz, the biggest IT website in my country, where I've written over 1000 expert articles which are now being translated to the English language).
What future do you have as a programmer?
Right off the bat, let's think about why you should even consider a career in the field of computer science. Other than the fact that it's a nice job that you can do easily from the comfort of your home, it just so happens to be a well-payed job as well. The average annual salary of a good American programmer is about $80,000. If you're really good, you'll get even higher pay, like $110,000. Also, if you are not afraid to start a business, well, the sky is the limit, we all know how many billionaires there are in IT.
(It may sound a bit cliche of me to be appealing to money, however, the more money you have, the more time and freedom you have. You could travel, discover new technologies, lifestyles, cultures, entertainment, and so on.)
Wages are high for the following reasons:
- IT automates business processes. Huge orders are ordered by countries so that their financial giants are able to work faster for less of a cost. Information technologies save them lots of time and money when compared to keeping an army of officers. Thanks to us IT people, they are able to work faster, serve their clients faster, and sell millions of products daily in e-shops. The costs to keep machines operational are very low, and it could be your software that makes them work! Companies will gladly pay high prices for your services since they'll be able to get back to mass production in a short amount of time. The monetary profits attributed to automation are astronomical.
- Working in IT is an expert field and requires high-quality knowledge.
In other words, IT guys use their knowledge to help businesses grow and get paid big bucks to do so. On the other hand, not everyone is capable of understanding the matters enough. If it truly was that easy, the pay wouldn't be as great. There are many obstacles in your way and it's very common that you spend hours googling till you even move forward. As I'm older, the more I realize that the patience and self-improvement are the most important properties of a programmer.. You can become a programmer even if you got all Ds in Math, however, you will fail if you lack willpower. For all of you brainiacs out there, it is true that the smarter you are, the better and faster you'll get all of the concepts.
There are plenty of schools out there. However, businesses soon realized that getting things done properly is more important than having a diploma. If you are currently enrolled or at one point attended a university, good for you. If you no longer want to further your studies, for any reason at all, do what you need to do. Here, we provide all of the practical knowledge of real-world projects needed to get hired or to start a reasonable business.
One doesn't become a programmer overnight. You have to be patient! Patience is one of the most crucial abilities that a programmer possesses. A programmer should also:
- Have a logical mindset, since problem-solving is an extremely common thing in programming
- Enjoy improving him/herself and be interested in staying up to date since the IT industry is constantly evolving
- A good programmer must be able to set goals in order to avoid quitting after a couple of tries. At this present time, 2016, I have about 15 years of practice and still learn new things. Mainly because new technology arrives all the time, and I want to be in demand and aware of current trends at all times.
A programmer who does not use object-oriented programming nowadays is not much of a programmer at all. OOP is a simpler way to create software design patterns and create complex business applications. We'll teach you all about it, just do it step by step, and be patient. It can't all be done at once. I'm telling you this now so you get an idea of the amount of knowledge required to succeed in this field of work.
Choosing your programming language
This point is very important. You should start by programming in a modern programming language. You should pick your language based on the following criteria:
- How in-demand the language is in the market you are pursuing (market shares, salaries, development...)
- What platform the language is designed for (Online access, Desktop, Mobile...)
Big business is dominated by two languages at the moment- Java and C#. Java is the alpha and the omega in business, C# is, in my opinion, basically Microsoft's version of Java. Then, there is PHP, which is extremely popular for web projects. Salaries for PHP programmers are a bit lower. However, PHP is an excellent choice if you want to start your own business. Then there is C++, Python, Ruby, among others.
For starters, pick one of the following languages (links will open online courses, the basics of each language are available for free):
Java - The alpha and omega for businesses, a modern language with a virtual machine, that works on all platforms (PC with Windows, Linux, Mac, phones, printers, ATMs...). Oracle says that Java powers about 3 billion devices. Java is open-source which means it's completely free and anyone can contribute to it. Java is a universal language powering applications (Open/LibreOffice), games (Minecraft), and websites (eBay). I recommend Java if you want to work as a company employee since wages are great, but be prepared to enterprise complicated libraries.
C# .NET - I'm sure others will forgive me if I say that C# is "Microsoft's version of Java" (in my humble opinion). The basic version is free (MS recently released the entire language as open-source, however, other tools and services still have to be purchased). Since the language is maintained by a single company, its libraries are clearer and better documented than Java. From a general point of view, C# is much more advanced than Java. It has a lot of constructs that make programming clearer and more efficient, but you'd have to learn all about them first. For corporate, use you'd have to purchase several different licenses depending on what it is you're doing. As it was with Java, C# is universal, so you can work on applications, online content, games, and is used by many enterprises as well. C# is sort of a "middle ground" in my opinion.
PHP - Is an open language that was popularized on the Internet. It started off as a hobby project and gained a reputation as a low-quality language somewhere along the way. However, by the time Facebook was written using PHP, it had grown a lot. Nowadays, it's a good-quality and fully-featured tool designed for creating websites. In runs on the server-side and generates web pages requested by users. ICT.social is written in PHP, as well as other popular websites like Facebook, Wikipedia, and so on. It is said that it powers a large part of the Internet. I recommend PHP if you're starting your own business. It's low-cost and the language and frameworks it uses are relatively simple. You could easily get a job as a PHP programmer as well, but the pay isn't as great.
The C++ language
The C++ is probably the language that the public is aware of most, probably because of its name ("plus-plus means best, right?"). Beginners often want to start off with this language. C++ allow us to program extremely high-performance applications. It's mainly used for system applications (Windows OS parts) and games (almost all AAA games are written in C++). A downside is that it doesn't have automatic memory management, which means a lot of extra work and debugging done by the programmer. I look down on C++, it's a good language, and there is a demand for it as well. However, it's better for professionals and people who like programming on the lowest abstraction level. It's too complicated for regular applications.
Mainly when working on web-related content, you'll have to mix your main (server) language with other, usually simpler, languages:
- HTML - A simple markup language that actually has nothing to do with programming. We use it to mark certain bits of texts on a website and give meaning to them. We mainly use HTML to create templates.
- CSS - This language originated from HTML and used to style HTML marks, i.e. the visual design of the site. It is also not a "real" programming language.
- SQL - A database language designed to query data from a database.
For most applications, you will be able to get by with the basics of the "other" languages listed above, as they're not complicated. Don't waste too much time on them, I highly suggest focusing mainly on one of the primary languages mentioned in the first part of this article. You will, however, have to improve your use of SQL later on because with more complex applications come more complex database queries.
As you can see, there is a lot of technology at your disposal. The times when John Pascal Smith programmed an entire accounting application using his own language (Pascal) are dead and gone. **The IT industry is constantly on the move and has a bright future ahead because technology improves at alarming rates. Also, **application requirements are more and more strict as time goes by, so you won't make it with if you only know a single language. You have to keep with the times and learn! As for job and business opportunities in IT, they have, will, and do exist. In fact, you'll have a hard time finding a career field with as bright of future as computer science.
How to start programming
The main thing, is to not be intimidated by any of this. You have to be patient and be as self-sufficient and proficient, as possible.
School and courses
As I said, to get an IT job, you either need a diploma or courses that give you an insight of real-world business in the IT industry. Aside from picking a good school or high-quality courses, it is also crucial that you program in your personal free time in order to succeed. If you think school or online courses will teach you how to program, boy, have I got news for you. To really get a goo grip on the concepts, you have to put what you learn into practice. School and courses can only guide you and provide the means to begin, however, most courses on the Internet seriously lack real-world examples and practical use (e.g. functional e-shops).
The ICT.social network was created to provide all of the information necessary for you to succeed. One might even say that it is something like a Wikipedia for programmers with real insight on the current state of the industry.
You will also have to program your own applications on which you'll test your newly found skills. Keep in mind, that programmers google things very often, almost like when a student asks his/her professor a question in class. Googling things takes up a significant part of their daily shift. You simply cannot know everything and attempting to would probably not be a good idea anyway. You mainly have to understand the key principles and be able to look up additional information when you need it. If you happen to run into something that happens to not be addressed in one our lessons, use our Discussion forum, where more experienced network members will be able to help you.
What to program
Program things that you would actually use. If you like writing stories, program a text-based game with a story plot and give it to your friends. If you like taking photographs, program a web portfolio with your photos or a screensaver to display them. Is your fridge empty? Program a shopping list for Android. If you program applications that you would actually find useful, you will more than likely take any problem that arises as more of a challenge than a nuisance. In the wise words of Comenius, learning in an entertaining manner is by far the most effective. People say that once you are able to program Tetris, you're an aspiring programmer. You would be surprised to see the kind of problems you need to solve in order to get Tetris working properly.
You could also create lots of other useful applications like a birthday notification program, a school attendance calculator, car gas consumption meters, and so on.
Want to skip the beginner levels and get some more advanced content right off the bat? We offer you the opportunity to work and learn under the supervision of an experienced industry professional in our programming seminars. These seminars are taught by the founders of ICT.social in distant online conferences. Now you might be saying, but that sort of thing costs hundreds of dollars! Well, have we got good news for you! Ours are only $80 for an entire day
Feel like you're already able to program fully-functional applications? Then, go ahead and apply for these:
If you read this article in its entirety, you're now on your way to a career in IT! Fingers crossed!
P.S. I disabled comments for this article because I evaluated several different programming languages, and people tend to go off on rants about their favorite languages. If you have any other questions, please address them in our Discussion forum.
David Čápka, ICT.social CEO