But, if you're looking to make yourself a professional, it's very important to be mindful of the fact that the university's primary functional output is university professors. That is, the most successful university students tend to be those who fixate on abstract problems, rather than the practical application of those abstract problems. Of course, the former is necessary to be a good university professor, and the latter is necessary to be a good professional.
In this article, I go through a few epitomic examples of how The University might leave an aspiring professional feeling, frustrated, erroneously inadequate, and wanting more.
Visual Studio vs vim—Just Get the Job Done.
At Portland State University, students are required to log in via ssh to a Solaris environment, and do all of their coding from there through
One even went so far as to say "Here in the real world, we use Visual Studio."
At the risk of offending anyone, I'm just going to be out with it and say that
Of course, the intent of PSU's policy is pretty straightforward: encourage students to learn the basics of *nix environments, discourage the abuse of treacherous crutches like an IDE's auto complete or file template features so students can actually build language fluency, and give graders an easy way to collect homework and track student work habits.
Theoretically, this is a great idea: force students to absorb important concepts. But from the perspective of a professional, many of these concepts are losing importance for basic and entry-level programming positions, because programmers will probably never encounter a situation where they can access
University insistence on using tools such as
vim. I have had multiple job interviews where I mentioned this, and the interviewers laughed at my misfortune and all said "I'm so sorry."One even went so far as to say "Here in the real world, we use Visual Studio."
![]() |
| Lynch me for saying this, but: "Where's the mouse?!" |
vim is a 23 year-old update to a 37 year-old travesty called vi, and has been entirely rendered obsolete. If you would like to argue about the virtues of having a high-powered text editor that is not part of an IDE, become aware of the existence of Notepad++ and kindly reconsider your opinion.Of course, the intent of PSU's policy is pretty straightforward: encourage students to learn the basics of *nix environments, discourage the abuse of treacherous crutches like an IDE's auto complete or file template features so students can actually build language fluency, and give graders an easy way to collect homework and track student work habits.
Theoretically, this is a great idea: force students to absorb important concepts. But from the perspective of a professional, many of these concepts are losing importance for basic and entry-level programming positions, because programmers will probably never encounter a situation where they can access
vim, but not an IDE with auto complete and file template features.public static void main(String [] args) from memory," to skills that IDEs still can't do automatically, such as "can made do with an incomplete API for an imported library," or "can design and implement features, and provide good documentation."University insistence on using tools such as
vim, which attract a particular breed of "purist" programmer, can make someone perfectly capable of programming somehow feel like they don't know what they're doing. Minds work in different ways, and an unwillingness to use legacy tools ought not to be considered a red flag for programmer candidacy.Abstract Data Types—Too Abstract?
It all but goes without saying that abstraction is key to creating an effective program or, what's more, to making your code re-usable. But let me ask you this: in a world where nearly every programming language has a built-in library—or, at least, an open-source extended library—with an implementation of everything from a linearly-linked list to a tree set, how important is it for you to know how to create your own?
The answer is very important. This is something both professionals and academics can agree upon. However, the frame of mind from which this answer comes is very different.
In the academic world, it's extremely important for you to have a complete and thorough fluency in whipping up these data types. This is because academic computer scientists deal explicitly with creating new and better data types.
But in the professional world, this knowledge goes only as far as your ability to create the most effective implementation for your needs. Having memorized the pointer arithmetic for making a linearly-linked list becomes substantially less important, when you did that before and have an abstract template class stored away. That template class, of course, only needs slight modifications to be applied to your current task—because you did it right the first time and don't need to memorize those sorts of things.
This is not to say knowing how something works is unimportant. Quite the opposite—having thorough insight into the inner-workings of any system is integral to successful use of that system. However, having an encyclopedic recall knowledge of something you could look up—which you then pair with your wisdom and insight to produce an elegant solution that can be used forever—is only useful in the amount of time it saves to look that something up.
The point here is twofold: memorizing very convoluted facts is not important; but knowing where to find those facts, and having the insight to use those facts effectively, is extremely important.
![]() |
| The Konigsberg bridge problem might look familiar to some of you... |
In the academic world, it's extremely important for you to have a complete and thorough fluency in whipping up these data types. This is because academic computer scientists deal explicitly with creating new and better data types.
But in the professional world, this knowledge goes only as far as your ability to create the most effective implementation for your needs. Having memorized the pointer arithmetic for making a linearly-linked list becomes substantially less important, when you did that before and have an abstract template class stored away. That template class, of course, only needs slight modifications to be applied to your current task—because you did it right the first time and don't need to memorize those sorts of things.
![]() |
| ...but this better look familiar to all of you. |
The point here is twofold: memorizing very convoluted facts is not important; but knowing where to find those facts, and having the insight to use those facts effectively, is extremely important.
How to See Beyond the Ideas.
The focus of The University will always be the ideas. This is the canonical purpose of The University, and why they are necessary for the advancement of humankind's ideas. And knowing how to comprehend and communicate ideas is very important—for your intellect, mental health, and social life. In The University, application is a consequence of ideas.
But in the professional world, the ideas are a consequence of the application. In the programming world, this is twofold (get it?). Seriously though, being able to apply ideas in order to actually create something tends to be the job of the professional.
That's not to say that ideas are unimportant, but in order to be a successful professional, the schema with which you consider ideas must be "what can I do with this?" As long as you continue to treat ideas with high regard while simultaneously employing them to create, your professional success will skyrocket.




No comments:
Post a Comment