One of the things that i was happy to learn in my last round of job interviews is that although C# and the .NET environment may seem like the most important thing ever happened to the software development world, it is actually not the case.

Don’t get me wrong: C# and .NET are good technologies. They are well-designed, and ultimately they make it easier for the programmer to write good software for the benefit of the end user. I even respect Microsoft’s boldness to innovate instead of sticking to rusty technologies such as COM and Windows API. Going even further, Microsoft is working on some very interesting new technologies that combine functional programming paradigms with the very object-oriented .NET – , F# and others; of course, i salute this. My only concern with .NET is portability – .NET development environment is good, and the software created with it may also be good, but they are all bricks from which a Microsoft-only world is built. (There are projects aimed at resolving this, such as Mono and DotGNU, but currently the solution they offer is very partial.)

But some – well, probably most people and companies don’t like to save time and money and to expand their user base by making their software portable and they think that working with Windows is just enough. Well, guess what – i am not going to work at such places. Some people are so deeply in love with .NET, that they won’t stand any criticism; if they see a job candidate that disrespects .NET, they will dismiss him immediately. “What?? You disrespect Microsoft, Windows and the Holy of Holies – .NET? Are you serious?!” Yes – it happens, not in these exact words, but it is implied. It happens, but not always. The good news are that there are people who don’t think that C# is the Holy Grail or even outright dislike it. At some interviews i was careful not to say anything bad about C#, not because i was scared, but because i just didn’t want to offend people. It’s a culture thing.

Again – i worked with C# a lot in the last year and i don’t think that it is an inherently bad language, and i even came to like it. But i am just glad to see that there are enough people in the industry, who exercise their right to think different.

The moral of the story: Diversity is not dead yet, and it is good that it is so.

Blaise P.

This is not a “People speaking” entry. And, hopefully, not a self-indulgent bragging entry.

— “Amir, did you learn Visual Basic .NET in the university?”

— “No. I learned VB.NET here, at this project that i’m doing now.”

— “And where did you study the old Visual Basic?”

— “I wrote many macros for Microsoft Word and Excel in Visual Basic.”

— “And C#?”

— “I learned C# at this project too.”

— “I want to learn C#. And C++. C# is just a new version of C++, right?”

— “Not exactly – they are different languages, but they are in the same family and their basic syntax is very similar.”

— “And is VB.NET a new version of the old Visual Basic?”

— “Yes, but Microsoft made a lot of changes in the syntax of the advanced parts, such as types, classes, objects, inheritance, controls, and stuff like that.”

— “Oh, yeah … That’s exactly the part that I don’t understand at all. I guess that I should learn it.”

If you are not a programmer, “that part” is called “Object-Oriented Programming”, OOP for short, and it is one of the most important concepts in the world of software since the late 1980’s.

At this point in the conversation i suddenly realized that i have never studied Object-Oriented Programming. I also realized that the biggest programming project that i’ve ever done all by myself was in high school. It was a project for which i received a bonus grade in my final school certificate (“bagrut”). Functionally it was a database of pupils in extra-curricular school activities.

Technically it was a pretty big Pascal program. I don’t remember how many lines of code it had, but i guess that there were at least a few thousands; i did have to break it up to several files (“modules”). It had a DOS’ish text based menu interface – almost a GUI, written using the wonderful Turbo Vision library, which apparently still exists today as free software.

To use Turbo Vision i had to learn Object-Oriented Programming and most of the concepts of Software Design and even System Analysis. I studied using books, completely by myself (except the stupid DFD diagrams, which looked hard, so i got some help from my high school Computers teacher; but he admitted at some point that they seem hard mostly because they are not so useful and allowed me to omit them from the project).

Now here’s the scary part: A year later i studied OOP at Programming Course in IDF. I’m not sure that i would understand it as well – if at all – had i not learned it earlier from a book.

And this is the point – for me self-study from books is nearly always better than classes.

In a class i feel that being there is enough. I mean come on! I woke up early, i went all the way to the school, i sat there for hours – what else do i have to do? Homework? Self-study?? I studied OOP from a book for the fun of it when i was sixteen. I am absolutely sure that i would understand it just as well if i would read it when i was nine.

When i am thinking about it this way, it seems that dragging children from the age of six all the way to to eighteen through all those classes in school is terrible dictatorship. It seems that it is done for a good cause, but it seems disastrously ineffective and possibly destructive.

But maybe that’s just me.