Recently I got BSc degree at Wroclaw University of Technology (aka PWr) in field of Electronic and Telecommunication, today in my blogpost I would like to talk about formal education, how I precept it, and what it gives us. We will try to answer to following question, is formal education required to be a programmer?
Legacy
Before I went to Uni. I had some experience in field of programming, mostly basic knowledge about c++, c#, php, even my first *real* job was programming, during summer break at high school. In meantime when I was in high school I did few minor projects as freelancer. I am very glad that, I didn’t waste my time during summer break and instead of this I have been gaining knowledge.
During that time my ego was very huge, probably because I was very young and my thinking was that I can do anything, beside that was the time when I thought that I know *everything* and I can do the same job as colleagues with 5+ years experience. I was so wrong…
I was almost ready to drop out of university, because I thought that programming is just about writing the code, and math ? who cares about math…and other skills.
Expectations
My expectation about university wasn’t clear enough, but for sure I wanted to continuously improving my programming skills (yea right now I know that it doesn’t matter) and I was hoping to get more knowledge about algorithms and data structures.
As I said before, I thought that knowledge I had before my Uni, was everything that I need, and University won’t give me neither skills nor knowledge that I would use later in my career.
I think that most of us had same expectations and point of view about university, especially people who had previous experience with programming or they started their journey very young.
Reality
Reality, was huh…very different that my expectations, basically because I went into Electronic department and my field of study was Electronic and Telecommunication, so in a first look it couldn’t have so much common with programmer job, and its skills.
Of course I was wrong (again n-th time), I got great classes with programming on all levels of abstraction, ASM, C, C++, C#, Matlab, I was programming DSP, distributed systems, optimizations algorithms, data structures, sorting algorithm. Many interesting things, that’s why now I am a little bit disappointed, because I didn’t make my best to focus on my study properly.
Even during one of the laboratory I propose to do pair programming with piece of TDD, and she has agreed on that. Always remember, if you want to do something in different way, then just ask your professor (99% depend on you, how you do it!).
Studies gave me very strong background about computers, and computer science theory, a lots of math…but hey! functional programming is all about math, physics, electric circuits theory (this is one of the legendary subject, due to hardness to pass)
Beside, at my third year of studies I had classes about image processing, optimization, numerical algorithms, pure joy! That time I realized that web development is boring as hell, that why I chose to my BSc project a Optimization Algoritm as a subject. I will write more about my BSc project later, but it was amazing to learn new language within 2-3 weeks.
Post-graduate feelings
I think that lots of students they forget that university isn’t profession school where you are learning to be a just a worker, Uni is beyond of this, it is a school where you are learning to be a inventor, creator that know all about what is hidden behind of specific platform, or some level of abstraction, you know math, algorithms, how something is built.
What I feel right now, that I didn’t use my time properly during my university, at least first two year of my studies, I think that studies are the best time to learn as much you can and discover things that normally you won’t discover.
Why you might ask me, because during your university you are still young, you have loads of power, free time, you don’t have any real commitment, mortgages. That’s why you should use your time wisely! Don’t worry, time for settle down will come! and don’t worry about money it should be just a side effect of your work, something not really relevant at the begging. Time for real money will come as well.
During this three years you can get know a lot of interesting people, maybe even your future partners in your business, at PWr, we do have a lot of group of interests. Get involve yourself, even if you are really beginner, it doesn’t really matter, because at those groups you will meet a lot of people that will help you to kick off with your knowledge. As Jakub wrote at his blog, you can be good code writer without university and computer science, but you are going to miss a lot of fun and knowledge.
Ending word, in my opinion if you want to be just a programmer (aka coder), you don’t have to know all about computer science, you can learn coding via video courses but some of the knowledge is still difficult to get from internet. For me discussion with professors was really relevant in terms of getting knowledge, they walked through all this knowledge, problems years ago and it can be really nice to see different point of view. I am sure that formal education is not required if you want to be a programmer, but it helps a lot in terms of learning new things, getting know variety of abstraction and what is hidden beyond of them. I want to really encourage you to get a degree at least BSc because it’s pure fun!
University degree is not required to be a programmer, but it’s useful and helpful.
Please let me know what you are thinking about this, and if you have any questions feel free to ask me here or via email pawel@sawicz.eu
Resources:
http://jj09.net/10-things-learn-university/
http://www.daedtech.com/how-developers-stop-learning-rise-of-the-expert-beginner
@Edit : Thanks for Michal Franc for review, and kind word.