How to Start a Career in Computer Science

Adriano Marques
CEO at XNV

Which way? I still remember asking myself in front of all the possibilities in the field of computer science when I had to decide which one to pursue. So many variables, so many technologies, so many industries, and yet just one life time to pursue one or a few of the various possibilities available.

That reminds me of a well known book – there is a line from Alice’s Adventure in Wonderland that relates perfectly to the feeling I had then. Amazed and puzzled in a whole new world, Alice tried to consult with the Cat she found on which way she should go from there:

‘Would you tell me, please, which way I ought to go from here?’

‘That depends a good deal on where you want to get to,’ said the Cat.

‘I don’t much care where—’ said Alice.

‘Then it doesn’t matter which way you go,’ said the Cat.

‘—so long as I get SOMEWHERE,’ Alice added as an explanation.

‘Oh, you’re sure to do that,’ said the Cat, ‘if you only walk long enough.’

If that sounds like you right now, I might have something to help you get started with building a career in Computer Science.

Where are you right now?

Obvious, but overlooked, is the need to answer and understand WHERE you are right now. Are you a student? Have you just graduated? Are you doing an internship? Where do you live? What languages do you speak? What are your hobbies? What are your skills? What kind of work do you enjoy doing? What industries do you have experiences with? What do you know about computer science already?

All roads could lead you to Rome, but if you’re headed Rome from Milan you might be a heck of a lot better off than someone else headed Rome from Beijing. Thinking of where you are right now, will help you better understand the road you’ll have to take to get to where you want to be, and maybe even understand other places and roads you may want to consider instead – one from Beijing would rather pursue a road to Hong Kong and forgo Rome entirely as a destination.

Whether you get the short or the long road it is up to you. This exercise is helpful in planning the route, not deciding the destination.

Where do you want to go from here?

The second, and most important step, is figuring out your destination. Think of 10 maybe even 20 years forward and realize where you want to be then. Do not underestimate this task. Saying that you want to be in a lead position in a multinational company is just as vague and useless as saying that you want to have pocketed $1 Million by then. Avoid clichés and try to think of things that relate the best to the answers you found on the previous section.

What you want with this exercise is to understand the real world possibilities out there, ignoring the outliers and investigating people that are 10 or 20 years ahead of you. Forget examples like Bill Gates and Steve Jobs for now, and think of the Joes and Jacks out there that work in the fields of your interest. This is going to much more realistic perspective, and if you happen to be one of those outliers, you’ll find your way up to the top despite of the occupation you consider for this exercise.

Get out there and find this people. Go to their conferences, talk to them. Look up online as much as you can find about these guys, and as you investigate them, try to keep track of the following: How many hours a week they usually work? How much education do they have in average? What are the work conditions? How often do they need to travel? Where is the next probable step up in their careers? What were they doing before getting where they are right now? What is the average wage for this occupation? What are the industries most likely to be served by this career? What are the predicted outlooks for those industries in 10 to 20 years from now?

O*O*Net website (http://www.onetonline.org/) is a great destination to help you collect  information. There, you’ll find useful data on trends for almost all occupations within the US as well as a list of related occupations that might be of your interest.  Here is one excerpt from their website for the occupation named “Software Developers, Systems Software”:

The devil is in the details – you must understand the perks and perils of the occupation before you commit to it, so don’t be shallow with your investigation.

Pretend you’re one of them

O*Net is a great tool, but it is often too generic, technology agnostic, and could be outdated. Once you’ve figured a list of possible occupations that you can see yourself happily working with in 10 years, it is time to infiltrate and get the real world data for those occupations. Get out there and search for as many job openings as you can find for this occupation, and compare what they have in common.

Narrow the scope enough to find useful job openings. Let’s say you’ve decided that you want to become a Software Engineer. The next step would be to decide the kind of software you’d like to develop (web based, mobile based, desktop app, server, etc.). And then what would be the key languages for that position in the market (python, ruby, java, etc.). Once you’ve narrowed your scope, get out there and use all of the job seeking websites including but not limited to google.com, monster.com, indeed.com, careerbuilder.com, and craigslist.com.

For the sake of reference, I’ll consider that you’ve looked for Python Web Software Engineer openings. While comparing your findings, you may figure that a common trait for occupation is to have some experience with a python web framework, know some JavaScript, know some jQuery (or similar library), know Linux, and have some experience with a mainstream database like MySQL or PostgreSQL. Some of these openings will certainly mention experience with cloud services like AWS, Heroku, AppScale, or even Google App Engine. Others will require experience with Non-relational databases like Redis, Cassandra, and MongoDB.

Take action

Now you know what a real world company is actually looking for when hiring for the occupation you’re interested in, it’s time to act.

Being a Computer Scientist is not easy, and the number of technologies you’re expected to master can be overwhelming. Learning it all at once is impossible, but you need to get started somehow.

Start with the basics. Learn the fundamental technologies you’ve chosen to work with. Following the example occupation mentioned in the previous section, I’d focus on learning Python, Linux, and Javascript. Develop a simple personal project that uses Python as back end language, use some javascript on the front end and serve it using Linux. Don’t go out for a framework just yet. Stick to the basics and make sure to deliver what you’ve set yourself to do. Once you feel comfortable with the basics, you can add a couple more technologies to the mix.

Be one of them

Developing a personal project is great to get you started, but real world companies usually look for real world achievements.

One of the best places to get started is by contributing to Open Source projects or developing one yourself.

Once you’ve gone through the experience of designing, implementing, and distributing your own software, you’re going to be a great candidate for the Google Summer of Code program (https://developers.google.com/open-source/soc/) where you could be mentored by one of the best Open Source Organizations out there, get paid by Google to develop during your Summer season and have it distributed through the Organization that mentored you. That would be a heck of a great start for your resume, and you’re sure to find some good offers once you’ve put your experience with Google Summer of Code in your resume along with the Open Source softwares you developed and distributed.

Forget the one page boring resume

Maybe this isn’t one of my best advices, and it probably won’t be a good advice for you if you don’t feel comfortable and confident with it. I’m sure that recruiters reading this will hate me for life, but forget about sticking to one page template on a black and white format that we often learn to follow while seeking for advice on how to prepare a resume. I know the reasoning behind all of those restraints, but I don’t believe they’re good for me. You want to stand out and be different. You want to be seen different, and you want a recruiter to be at least curious enough to move forward with you in the process. The recruiter is facing a pile of 100 resumes, all by the textbook: one page long, blank on white, and using the neat template they found somewhere on the internet. In the middle of that pile, there is you: as many pages as you found appropriate to expose your profile and skills, modest use of colors and highlights to draw the recruiter’s attention to important achievements, and a fun tone that express a self confidence and creativity will sure make you stand out even if one of the other 99 candidates have a better profile then you do. The recruiter would have sure missed it anyways, since all of them look almost the same.

Or, if you’re not comfortable with taking risks, just stick to textbook and disregard my suggestion. I’m not a recruiter, and I know that some of them would shred your resume if it is not by their textbook.

And finally

These suggestions are not the ultimate answer to start a career, but will sure help you get started in the right direction. Don’t be afraid of trying, and be prepared to change your route if you don’t  find pleasure in doing what you’ve set out to do.

There are probably as many careers possibilities for a computer scientist as there are technologies out there. A good scientist isn’t tied up to a specific technology for life, and is rather expected to be flexible and know how to learn new technologies on the go. Never expect to stop studying, and you’re sure to have a bright future ahead of you.

THE BLOG

News, lessons, and content from our companies and projects.

Stay In The Loop!

Receive updates and news about XNV and our child companies. Don't worry, we don't SPAM. Ever.