This has been on my mind for a while. Lots of friends are asking me for advise about their interest in pursuing courses on computer science (undergrad or grad).
First things first: I do have both CS and EE degrees (from Oregon State University), but that was from the 1980s. The world of computer science has evolved significantly since those days. I got to be on APRAnet then and it has evolved into what the Internet today. In that process, lots of the types of knowledge that one needs to do computer science – as an academic program – has also changed – but not evenly across the world.
I do mentor/advise startups and if any of them come to me with proposals that involve buying hardware, setting up software as part of the servers etc, I will promptly throw them out. Create your stuff on the cloud – AWS, Google, Rackspace, DigitalOcean etc. Lots of them out there. At some point, when your project/start-up ideas have gained some form/shape, and you have paying customers, you could consider running your own data centers using Red Hat Open Stack and Red Hat OpenShift to make sure that you have a means to run your application in-house or in your own data center or onto the public cloud seamlessly.
So, likewise, if anyone is keen on doing a CS degree, do consider the following (not an exhaustive list, but a starting point):
- Do look at courses available online (Khan Academy, Coursera, EdX) and understand the breath and depth of what is out there.
- Learning online is a big challenge – especially for adults (atleast it is for me). I think I can manage the courses, but having to juggle the course and life when you don’t have a supporting group of classmates, it will be a struggle.
- If you are already keen on something – like game development, or artificial intelligence etc, do look out for the sites that are specialised in those fields. I particuarly like fast.ai for AI related stuff because of the use of Jupyter notebooks (which is really the only sane way to do anything with data science).
- Make sure you create and manage your own brand via your own blog – wordpress.com (like this blog itself), code repositories (not only code, but including documents, graphics etc) sitting on sites like gitlab.com or pagure.io (or even github.com). Create and curate your thoughts, ideas and considerations on your blog and repositories. I would not recommend LinkedIn as the primary site, but would encouage use of it as a place for links to your personal sites which should always be primary. You must always retain control of your stuff and not be dependent on others.
- Explore the various areas of interest that you have and find out who the thought leaders are including the professors. Contact them and seek their advise. Don’t be concerned that they might ignore your – which is just fine – but you never know who will respond and engage and your path will take a different turn.
If there are any other thoughts, do comment below. Love to hear from others on how they would have answered the same question.