Skip to main content

Study to pass school (aka get credentials) or Study to Learn?

After interviewing a lot of candidates for software development jobs, I am starting to remember the days when I went to school and I am wondering about the following question:

Should students study to pass college or should they study to learn?

This question comes from my concerns that I have about candidates from both great and average universities. There is no direct relation between your skills and your credentials; it is really up to individuals and how they approached studying. When I attended the University of Toronto in mid-90s, I studied Computer/Electrical engineering. This university was considered to be one of the top three universities for computer/electrical engineering program in Canada, and also among the top 10 when compared to big players in US. My parents were willing to pay for me to go to this school even though I had a full scholarship offer with another average university.
Did I make the right choice attending the better school? Are you making right choices now?
Right choices? It all depends on how I approached my studying. If I had studied to only pass and get good credentials from University of Toronto, then my parents’ money was not invested properly. I studied to learn and if that meant that it would actually affect my grade in a negative way, that’s how I approached it. This may not make sense, but we all remember the days from our college when exams had things that you would never apply in real life and in the meantime the courses were also teaching things that were very applicable in real life. If you studied to learn things for long-term gains, then a lot of times you would get in trouble. Don’t misunderstand me here. Yes, there are things that are taught in courses for which you can’t see applications in real life in that given moment, but you need to plow through it and you will see answers to these doubts at the end.
I have also seen the opposite effects. I am talking about schools diving into real life examples too soon without teaching students good fundamentals in that area. If every student approached this, then nobody would be inventing new things; it would just be a game of putting components together. There has to be some golden balance.
Going back to interviews that I mentioned at the beginning of this article. Regardless of your school credentials, you need to have very strong fundamentals and you need to be able to apply those fundamentals at the right time. For example, software engineering is a very wide field these days and it is impossible to have expertise in all the areas. This is where the fundamental knowledge kicks in. When you jump from field to field in software engineering industry, you will not know everything but you will need to apply those fundamentals and learn quickly. That’s where you separate yourself from others.
In conclusion:
Put the credentials of your university aside and use the great things from your school to learn.
Almir Mustafic

Comments

Popular posts from this blog

Brand New programming language and one solution OR …

Brand New programming language and one solution OR Two existing programming languages, one solution for EACH? I understand that there is no right or wrong. It all depends on your software architecture, team structure, team skills and other factors, but I still want to explain the scenario as it may look familiar to some. Let me explain. Let’s assume that you have microservices and common libraries in two major programming languages. You have some teams who are experts in one and some teams experts in the other programming language. Now you need to come up with a solution for a scenario that all teams will need to leverage. Let’s assume that your cloud platform has an off-the-shelf approach for this but it is supported by a 3rd programming language that your teams do not have much experience in. What is the right thing for your organization and not just from the technical point of view? A) Do you embrace what your cloud platform gives you off the shelf and implement thi...

Programming / Software Engineering  — Think Paper, Paper, then Code

Most of the software engineering problems are solved in what I call the high-level brainstorming sessions. We basically walk into a meeting room and white-board our thoughts and come up with solutions. When things start falling apart, you better believe this happens in the last stretch of projects and it does work.  Now the issue is that we as programmers do NOT do the similar type of exercise before a line of code is written ? I typically see developers get requirements in the form of a document or a user story or in the form of walk-by requirements. The next thing I see on developers’ screens is code editors or IDEs. Is that the right thing to do? You may say that you are advanced enough and that you like to dive into coding right away, but this happens even to the best of us. We fall into this trap and rarely step back and review our habits. We have to go back to fundamentals. What did we do in school?  Professors taught us to write down our thoughts and to show what...

Owning and improving what you have is a sign of maturity in software engineering — Is it?

Re-factoring vs. Re-Writing? A lot of times we heard the talks about “Never be satisfied” in the context of innovation and driving your teams forward. In that context, this is totally fine, but when this mindset gets blindly used in the software engineering low level details, then you could be constantly  re-writing  code without taking the effort to truly understand it. Is this the right thing for business? Is it costly? Re-factoring  means that you took time to understand what you have, and you are improving it. On the other hand,  re-writing  does not necessarily mean that you took the time to understand the low-level details; it may mean that you went back to requirements and decided to re-write it without trying to understand the low-level details. There could be something in those details that you need to know so you don’t make the same mistake again in the process of re-writing it. At the end of the day, if you are constantly re-writing code, t...