Oh, what’s in a name?
As time goes by, I realize how many holes there were in my college education. Indeed, part of me is very proud of my alma mater and satisfied with the outcome of my undergraduate efforts - that is, I was able to use that degree and education to land a solid job at a great company. Unfortunately, another part of me is absolutely shocked that the school can label the degree, “Software Engineering”.
This brings to light the gross disservice that various colleges and universities are doing my using degree names interchangeably. Commonly, “Information Technology”, “Computer Programming”, “Computer Science”, “Software Engineering”, are all used to describe collegiate degrees involving the development of computer software. Sometimes a degree from one school called “Software Engineering” would be equivalent to another school’s “Computer Science” degree. Sometimes they are very different. Unfortunately, I don’t believe that the schools even know what to name the degrees.
For me, there is a big difference between computer programming and computer science. The former is more of a stereotypical “code-monkey” type of thing. A higher-level knowledge of programming, familiar with only the most common data structures, unconcerned with what is going on in memory and such. The latter is a lower-level study of programming and computer theory. Understanding how a language is built, how a compiler and linker work (and knowing that they exist in the first place!), how memory is managed, how and why certain data structures are implemented, etc.
There are certainly benefits to producing “programmers” and “computer scientists”, and I am not going to discredit anyone who would prefer learning one or the other discipline. But again, I think there is a difference and a very important one.
As I mentioned earlier, it can be a hindrance to students and employers alike when schools use curriculum names interchangeably. It is very hard to know what you are getting without detailed descriptions of the courses involved. Even then, it is hard as a new student with little or no knowledge of terms or theory. And employers are left wasting time and money sifting through various candidates for a position to find out who has the skills needed for their positions, despite having a vaguely named degree.
I feel slightly gypped after completing my degree. In hindsight, I believe there should have been more classes on lower level studies (memory management, data structures and algorithms in depth, compiler/linker design, etc). Again, I definitely learned a lot and that knowledge was invaluable as far as getting my job, BUT it could have been better.
Fortunately, all it not lost to those of us yearning for more understanding and seeking true mastery of particular topics. Our industry is one that is overflowing with great learning resources. From books, to web sites, to experienced coworkers - there is never a shortage of resources to learn from.
This is something that I embrace wholeheartedly. I am constantly taking in new and valuable information. Learning and growing from books and friends. I have determined not to limit myself to what was deemed sufficient by one school, but to constantly challenge myself with new material and projects.
For anyone else in my situation, here is a recommendation: set up for yourself a Personal Development Timeline and stick to it. Buy a few books, find some coursework, whatever will work for you, and write down what you will accomplish and by what time. I’ve done this myself and have found it incredibly useful. I have the next several months of my life planned out as far as personal development and education goes. It is encouraging to know that, just because I might have missed out on something, doesn’t mean that I have to accept it and move on.
As Mark Twain once said, “I have never let my schooling interfere with my education.”
I have the power and hunger to grow - and I will - and so does anyone else who wants to.
Continuing Engineering in a Nutshell
If this doesn’t describe bug finding/fixing to a T, I don’t know what else can.
Enjoy:
As we know,
There are known knowns.
There are things we know we know.
We also know
There are known unknowns.
That is to say
We know there are some things
We do not know.
But there are also unknown unknowns,
The ones we don’t know
We don’t know.
Former Secretary of Confusing Poetry - er…- Defense, Donald Rumsfeld
—Feb. 12, 2002, Department of Defense news briefing
Ref: Using C# For a Commercial Game
Alistair Doulin has written a great article supporting something I’ve been behind for a while now - the viability of C# as a commercial game language.
Check it out here.
C# is becoming more and more powerful with each new version. The tools and libraries available to it are fantastic and would save tons of development time. And the fact that it includes - brace yourself, I’m about to go there! - garbage collection - gasp! - saves you from those pesky memory leaks that can plague C & C++.
I know that garbage collection is a sensitive subject with a lot of developers when performance is on the line, but like Alistair mentions, like any other language “bad code will run slow”.
Dirty Coding Tricks
I wanted to make a quick post referring to a great little article I just read on the superlative game design & development site, Gamasutra.
Really, if you haven’t visited Gamasutra before, you are missing out.
The article is called Dirty Coding Tricks. It has several first-hand accounts of the not-so-pretty things that desperate developers do when crunch-time comes knocking. We’ve all seen things like this before and, in a strange way, it makes you feel better that you’re not the only one who’s had to stand behind a product that has some nasty bits of code in it.
Be sure to check it out! It’s a great read…
Another helpful tip…
Here’s another quick tip that I found useful and I hope some of you will as well:
Is Firefox failing to save your cookies after you shut it down? In other words, do you have to continually log into certain sites despite saving your password and, normally, selecting an option to remain logged in?
Well, it seems that this is caused by an unclean shutdown of either your system or Firefox which results in a corrupted cookie file.
Here are the steps to correct the problem (on Windows):
1. Go to Application Data Folder. on Windows Vista or on Windows XP, type %AppData% and click enter. On XP, it will open the folder Application Data. From their, open Mozilla\firefox folder. Normally on XP, the path will be C:\Documents and Settings\%USERNAME%\Application Data and on Vista it is C:\Users\your name\AppData\Roaming\Mozilla\Firefox.
2. Once you read the Firefox folder, open Profiles folder. Most likely you will be only having one profile named xxxxxxxx.default where xxxxxxxxx is some 8 characters. If you have more then one folder, you can do the next step for both profiles, though start from .default one and see of it fixes the problem
3. After opening the folder, look for cookies.sqlite file and delete it (you can copy it first on some other folder as a backup). You won’t be able to delete it if Firefox is running so first you have to close firefox.
4. Restart Firefox, and now Firefox will be able to save all cookies and remember logins and passwords.
If this doesn’t work, you can also delete cookies.txt file (if it is available). If you have another profile, you can try this on that profile too though most likely you won’t be required to do it.
RSS