The labour market is becoming so scary that I usually find it difficult to find myself. As a computer science student in a tertiary institution, I was taught to look at a problem and provide a mathematically better solution to the problem than has ever existed.
What I was not taught straight in school was how to immediately code like a geek and write about a thousand projects before leaving school that I so become a hot cake for every organization out there to hire straight away or simply start up by freelance duties.
To try and be a geek in school might mean you have to forgo the academic success and focus on developing apps right from school or achieve academic success in school and develop apps after school. Some people can combine both but it takes a lot of dedication and self-discipline.
I would be using this avenue to enlighten computer science students still in school or those who are yet to become geeks at programming a few steps I have seen others take and has made them successful in the Programming world. I would be more specific about the Programming World so let's go for a ride
First, know that every computer geek today was once a novice who found it difficult to even use the mouse. So if you are at a stage where you can even use the mouse, that means you are way ahead in becoming a geek. Well, a lot of people can use the mouse and the keyboard, so what makes me different. Well, the resolution you are making now is all the difference between everyone who knows how to use the mouse and those who are willing to go the extra mile.
Choose an Area
Well, the resolution alone would not take you where you want to be. Make an extensive research on which language you want to learn and which area of programming you want to specialise on. This is very necessary to avoid becoming like a float in the ocean that follows anywhere the tide goes. Have a convincing reason why the language you are choosing is the best and why the area you are moving to is the best.
Because there are over a thousand technologies out there that are as convincing as your field, you need to know your grounds before you loose focus and go for something else just because people say its better or something like that.
If you decide to learn Brainfuck, its the most difficult programming language, yet you should be able to convince yourself its the best to do because you would later see more languages and you might just drift away and become a master of all trades.
Choose a certain language and specialisation and make your research. That is far better than jumping from Java to C#, then Ruby and then Pascal. Make a decision and stick to it
So after choosing an area, the next most important thing is to be connected. Have a github account, a bitbucket account, google developers, facebook developers, linkedIn, quora, stackoverflow and any other medium that can be used to meet real programmers. Understand the basics of each of the groups and please create accounts with reasonable names.
Post only items that are important. And no matter how much you think a question is wack, still ask it. Someone somewhere would understand that you are just learning and would definitely help you out.
Next most important is the Operating system you would be using. Well, Linux is kinda the most used by developers so you should be comfortable using the command line for simple instructions.
Well, the next is to learn some stuffs about Git. What is Git? Do check it out online.
Git and Linux
Have you ever thought about how programmers are able to share code in and around the world. One of the secret to doing that is through Git. There are a lot of such stuffs out there like svn and so on, but git is just fine.
To be able to push code to online repos, you would have to understand a little about git. This is not a class for git but just to highlight to you its uses so that you know what exactly it is you are looking into. After that, I advise you also get a little familiar with the linux commands.
Well Git and Linux were all the inventions of the same Man, Linux Torvald.
After getting around with git and linux, then we are indeed ready to touch on some more other things.
Next, it depends on what you really want to do next. Review the basics of the language you want to work on, read at least two books on the language and have a basic idea on why the language was named its name.
Well, dont fly into starting real life coding just yet. The basics would take you very far so be very conversant with them before you move on any further.
If you meet a friend you have seen a long time ago, you ask for his/her facebook account or his/her phone number. In the Programming world, people ask for one thing and one thing alone. What's your github account.
A github account is where you save your code online. It allows for you to share with other coprogrammers and prospective employers. Most employers seek to know how well you can work from your github account. Even if you do not have any project, your assignments or codes you read from books are some of where you can start.
A Stackoverflow account is also very important. You ask reasonable questions, you get points, you answer reasonably, you get points and through that, employers can always track you down.
So immediately you finish reading this, create a github account and a stackoverflow account. Please do that.
Most people especially software developers see computer science as a waste of time. Well I might be wrong, but the few programmers I have seen think so.
Due to this, I pose a question. If you see a road side mechanic who repairs a car, you really want to be a mechanic but if the opportunity comes that you have to go to school to learn how a car is made. Would you still choose to be only a car mechanic?. The answer is obvious.
Mathematicians have made all the research for the Engineers and the Engineers are just applying the theories. Would you still say an Engineer is better than a Mathematician. Each and every one excel in the field they choose.
Similarly is the case of a computer science student and a software developer. The theories are there to use, but we are taught to understand how the theories were made. As a computer scientist, the act of programming is not to design something end users can see and be woowed, no we design theories that make the software developer woowed.
It is left for the software developer to woow the clients with what the computer scientists have created. Computer Science as a course is not only for us to understand Software Development, go for an MSc in Software Development if you need that. What Computer Science teaches is how to harness the great powers the Computer has. Design effective ways to make the Computer go faster and more efficient
So if you are in Computer Science just to learn to develop software, you have bought too little. Ideas like Networking, memory management, Operating System Optimization would all look like Rocket Science to you and you say its a waste of time.
No, Computer Science is based on the theories on which the Practicals are built. So if you are looking to become only a software developer, please do look a bit further because computer science is far greater than what you have in mind.
When you watch movies, the impression that hackers or bad ass programmers are born might come to your mind. But the few moments I have seen excellent programmers, the Only thing I have learnt is that it takes a lot longer than you think for you to really become what you really want to be.
It might not happen in a day, a week, a month or even a year. But do keep practising and remain consistent in whatever you are learning. Never give up. Take your time to browse some of the greatest programmers and computer scientists and checkout how long they have been in the field. Some started as early as 8 years old. Now they are 20 years old with 12 years experience.
So because you are also 20 does not mean you should give up on what you cannot do. Practice always. In the field of programming, the only practice we have is to write code and write more code. Do not think I understand this, write it, study it and write again. By writing more, you become a better writer. Same as programming.
The Journey to programming might not be easy as you would see very young people doing things you can only imagine. But just know that, the more you write code, the better you would become. So do more and you would be more.
I have been in the IT for a few years and there is something I have observed which is that your personal life would strongly determine how well you can work with others. Most IT firms would not let you alone work on a project, God forbid, you wake up tomorrow and move to Google. Who would continue on the project? That was a joke. But seriously, the idea is you cannot work alone and you must work with people.
No matter how good your programming skills are, without the right personality, you might soon get bored off by others and believe me, most people are very easily replaceable. It does not mean you have to always be the nice guy and accept every poo from everyone.
But you should endeavour to not always be too self-centered in whatever decision you make. Always consider the wellbeing of your team mate and your organisation at last.
Always remember that even the best of programmers need to get along well with others, so you also have to. Please don't stop learning and don't stop coding.
Programming is in you!