Advise to Computer Science students

I went to Damascus University to study Information Systems and Software Engineering 2007. On my second year, I shifted my focus to the market and having “real” work in the field became my main priority. You should do that too!


Why you should enter the market now?

Computer Science (CS from now on) as a field is a joint field of different bodies of knowledge, directly converting them into an applicable form of engineering and tangible products.

Computer Science is an applied science at heart

Although labeled as a science, and some branches might deal more than others with scientific research methods than engineering, it is unescapable that CS true value lies within its practical application rather than its theories.

Don’t get me wrong. I am not saying that theory in CS is not valuable. In fact, it can be of great benefit to keep your theoretical backgrounds well established and up-to-date.

The point is, due to the fast-paced nature of the field and its direct applicability, theory and academic papers in CS rarely come from within the academia or labs. They instead mostly come from the market, by people working on real-life and timely issues.

The class-room at best will teach you the past, esp. in a field like CS, where new advancements are happening in every direction while you are going through a course designed 10 years ago on RDBMs.

There’s only one way to prepare yourself to enter the market, and that way is to enter the market already.

Should I drop out of school?

The previous point does not mean that you should drop out of school (I’m hopeful there’ll be more accessible opportunities, perhaps less extreme, similar to the Thiel’s fellowship).

Just don’t put all your 100% energy at the class-room, chasing grades or even trying too hard to depply understand every single topic/course you take.

I know many students end up doing this for different reasons. I’d add here that you should conciously spend 20% to 40% of your time in the market.

Where do I start?

The best place to start is finding a student job at any company (common sense applies). The next best place is finding a local agency or service provider that can give you projects to work on coming from real businesses, or to try and get some freelance projects by yourself (not easy, but there are various platforms for that). The least ideal place, but still better than the campus, is joining some non-profit organization (esp. if you need to earn a minimum amount of living).

Don’t fear failure either. People hiring students account for that, that’s why you either do not get paid or get paid a little. That is totally fine for the first few projects.

Closing quick advises on how to do it

  • Do not focus on money in the beginning. Your biggest benefits out of doing these projcts are:
    • gaining experience on how to apply what you learn in the class-room and beyond to context-bound real-life problems that have more timely constraints than book and exam problems have to offer.
    • communicating and negotiating with non-tech people, esp. within a business context.
    • learning how to balance different compromises in your decisions
  • But once you’ve worked on 2-3 successful projects, you should stop working for free (or very little amount of money).You should be able by now to better assess the value of your work. You’ll also have a good-enough profile that employers can look at and build initial trust to pay you for your work ;)

  • Make sure you maximize your learnings after each projects. Not only on CS related skills, but on the broader management and communication of it too. Continously reflect on the following questions:
    • How did you get your last project? How does that channel perform compared to preivous ones, if any?
    • Did the communication with the stakeholder(s) work effectively? If not, why and what will you do next time to improve?
    • Why did you choose this or that tech-stack? What could’ve been a better alternative?
    • Do you feel paid adequately for that project? If not, what went wrong during estimations and later negotiations, if any?
    • What was the biggest challenge in that project, technically or not? How did you solve or go around it?
    • Did you fail to deliver? Why exactly, and what are you going to do about it?

That’s it for now. I may return to this topic and provide more actionable items. Until then, happy studies and projects alike!