University computer science departments are rapidly becoming Microsoft-free zones, as Linux, Apache, MySQL and PHP (LAMP) combine with Java to become the de-facto standard environment for students of programming. Microsoft knows from history that this will be fatal in the long term, hence its decision to extend free availability …
There's a chap at the end of our street who has a similar "the first hit is free" maketing plan. I'll give them both a miss; heroin is terribly bad for the complexion and learing VB.NET means you have to work with clowns.
Not entirely true..
At least not for me,
At university i had to learn both Visual Basic.NET (2003 and 2005 derivative) and VC++, this was on top of learning MATLAB for analysis and design (acoustics and algorithmic simulation)
At work i use Borland C++ builder and i also code quite a lot in PHP.
I didn't do a computer science course, those i know who did only seem to play with Java - ever. I disagree with that, you should be able to know the basics in all of the common languages and then specialise in one.
I graduated a couple of years ago doing a degree jointly between the EEE department and the Computer Science department.
The EEE department is one of (if not) the best in the UK with strong links to industry. The CS department is still pretty highly regarded but nowhere near as much as EEE.
I learned far far more about programming in EEE than I did in CS. CS taught Java, and yes even the operating systems class used Java to teach the concepts. Everyone had to do a little C with the joint degree guys, like myself, moving almost completely to C by year 3.
The EEE department focused on C but also introduced RTOS and alot more depth into why rather than how.
I would guess that the guys who did the joint degree could program twice as well as the software engineering guys who cared much more about how the GUI looked than about how the program worked. This is reflected in the careers both sets are now pursuing.
Note to employers - employ the EEE guys.
UI design is a key part of programming
Note to employers, only employ EEE graduates if you really really don't care about the UI and productivity (which is closely linked to usability, which is UI design).
The author writes back....
More of my thoughts are at www.wilmott.com/blogs/dcfc
I did say that MS has a minority/declining market share at Uni, not that it was extinct. About 70% of the entry level CVs I read do not mention any MS technology at all. That's not say they don't use MS, but if I were MS that would scare me.
VB.NET is extremely rare, indeed I only used the qualified "almost unknown", because I assumed that I can't know everything.
I actually quite like VC++ as a teaching environment, indeed I have gone on record saying it's the best place to learn C++, YMMV.
Some of the top employers agree about the value of engineering vs CS degrees. A stupid % of CS grads seem only to have done Java, no meaningful Lisp, Haskell, SQL, C++, Ruby, Perl, or anything that might make the poor dears think.
did you go to King's College ? Sounds that way, indeed I've helped some EEE people leave KCL, since I'm a headhunter.
We avoid even talking to KCL CS grads, it makes me sad.
Not a fan of the KCL course though, since the dimwits teach O/S internals in Java, just like the shambling morons who taught you.
RTOS is a fine component for a techie education.
You may reasonably say "who cares if an obscure journalist says my CS course is crap" ? I'm not famous as a journo, and am pathetically grateful to the Reg for letting me witter on :)
But I am *very* well known as a headhunter for banks, and that's easily the best paid destination for a smart developer. That's not just C++ of course, C# is also doing well for various reasons. Java is used for the dross end of banking work, and for the sort of work that is much the same at JP Morgan as at Tesco.
It's also exactly the kids of work that is most likely to be outsourced.
I've tried to get KCL to explain their "rationale" for teaching braind damaged shit to their kids, but my (surprisingly polite) emails were just ignored.
I attended Durham University a few years ago and I'm very glad I did. While the first year was pretty much Java, Java and Java, the second year branched out from that. Reading Dominic's reply above, we did indeed do Haskell, SQL, C++ and Perl.
you lucky, lucky bastard...
learning UNIX and C at uni? You lucky, lucky etc. etc. We were subjected to using 1st gen Macs as terminals to code ADA and Pascal on (IIRC) ICL Level 80s, and Occam on transputers(!).
So, that's an education that's served me well in the real world....
I did UNIX, C++, java, asm, perl, asp, php, and pl-sql
So asp was as microsofty as it got
You need a degree to be a programmer?
Most of the best programmers I've known haven't got degrees at all. And most of the rest consider their degree three years of their life that they can't get back.
(Not that a headhunter for banks would ever be interested in placing them of course - or vice versa.)
Of course, headhunters ARE interested in placing good programmers in the banks no matter if they have degree or not. Their money are paid from client satisfaction, which is NOT measured in number of diplomas in R&D deps. Quite the opposite, banks tend to be the most pragmatic employers in regard of actual skills - theirs income strongly depend on it.
T'Good Old Days
I graduated in 05' from York. I started having done a bit of Turbo Pascal and being a bit of an all round Maths/Science geek. First course, Principle of Programming in LISP, onto Ada, C, C++, B, Assembler etc etc. No mention of Java but I decided to do my final year project in it. I now work for a big bank doing C#, .NET, Sql, Perl but I wonder whether id be as good a programmer if id just done Java. I think not, but that doesn't discredit Java or .NET as very useful platforms.
Anti Java rubbish
Strong clueless anti Java bias in this article, the author seems to imply that Java can't be used to teach O/S internals (not true - the algorithms used can be easily demonstrated in Java) yet suggests that VB.NET and C#.NET can!!!
Like most recruitment agents the author has learned a few buzzwords, and read a few opinion pieces and decided to throw their oar in as well!
For the record on my degree we were taught languages from many different programming paradigms, as well as being expected to teach ourselves others, and I only went to an ex-poly!
I don't mean to be rude, but do you have a clue what you're talking about? Since when is Java only taught at universities where the students aren't clever enough to learn C++? Unless I'm missing something, many top universities teach Java to undergraduates (Cambridge being one of them).
The whole point of a CS course is not to arm you with great knowledge about how one specific vendor's tools work. It is also not aimed at turning you into a code monkey capable of churning out C++.
A CS course is designed to give you a grounding in the skills and concepts that will help you over your career. Anyone can churn out C++ code ... it's not tricky. Compare the code of a CS graduate and an engineer and they will be very different even if they both work equally well. The CS guy will know when to implement design patterns, when to refactor, and what tools to use. The engineer will, most likely, give you a monolithic horror.
I'm not sure how you call Java 'braind damaged shit' but then say C# is great. Do you not realise that they are very similar in design and language? For an experienced Java programmer to write nicely designed C# code, it'd take less than an afternoon of training.
Unfortunately, I guess you can't expect intelligent discussion from a recruitment consultant ... it's what people who dropped out of university tended to become. After all, he probably despises us CS grads because he is forced to look at how much we get paid :).
Every programming language has its place
C++ for writing fast code, Java for slapping something together quickly that will (eventually) get the job (or a job) done, asp for creating inadvertent back doors into servers, .NET for making clock tower snipers out of programmers...
I'd just like to say there are uni's out there that do teach operating systems using C, and even assembler. Also UI is a very small part of a CS degree, maybe less than 2% of the final grade is based on it.
To the York AC
I also did the York CS course (4 yr MEng), graduated in 2001.
The great thing about the York course was that you were taught languages as a tool for teaching the concepts, not as an end in itself. LISP is great for fundamentals of programming, ADA is great for realtime and concurrancy, C for compiler design, Prolog (really) for Constraint Optimisation and Operations Research coding, etc... You learnt the concepts, and that there is more than one way to write a computer program.
I left York having used a dozen different languages (and a bunch more in my spare time). I can pick up the fundamentals of a new language in a few hours. A *good* CS degree teaches fundamentals, which you can then use to learn specific technologies. Technologies change over time, if you can't keep up with them because you were only taught "the one true way", then you are going to get screwed over in the job market in time.
@Norman, can't argue with you on that one as I've met so few profeessional programmers without a degree of some-sort. However, I have met some damn good ones who did EE or Chemistry, and even Law in one case. I've also met some terrible ones. It's all very much dependent on the kind of work you are doing, what your priorities are, and the individual in question. Coding safety critical systems (what I used to do) is very different from slinging out Perl for web/network applications (what I do now).
The author again
>"Like most recruitment agents the author has learned a few buzzwords, and read a few opinion pieces"
The author has debugged O/S code for IBM and MS, worked on the first Intel Unix, and earned good money coding. And although I agree you can teach O/S theory in Java, you can't do the practicals.
As for C#, I did not say it was great, partly because I don't think it is. I was observing there is commercial demand for it, as there is for Java.
I don't have a problem with Cs doing UIs, and don't really care whether it is 2% or 20% of the practical work. Most coursework is about the techniques and theory, and so UIs are as valid as databases or reading files.
UI is a fine place to teach OO, since of course a lot of that emerged from GUI research.
Same applies to lots of CS study, quicksort and the blackboard pattern are as valid in Java as C++. But my problem is kids only learning one language, which often leaves them with a very restricted view of the world.
I'm not anit-Java, I'm depressed reading the CVs of students who seem unable to get beyond it.
Is VB really fifteen years old!?!?!? Damn! I remember when it was all shiny and new! Back in the good ol' days, most of us wandered into our degrees with a little BASIC coding behind us. I started my degree with Pascal and Modula2 - scary to think I meet codekidz today that don't recognise those names! Then I was taught C (absolute code heaven), before finally moving to C++. In many ways, I now support the argument for bypassing C and going straight to C++ as my C++ code tended to include lumps of recycled C code in a C++ wrapper! ;) On the side I touched ADA and Perl, but I never saw a reason for Java - C/C++ and Perl gave me everything I needed. I don't get paid to code nowadays and any bank that would consider me for a coder (or qualified to hire coders) would probably think Nick Leason was a smart hire! But I do work with lots of coders, and I have noticed that Java alone seems to keep you at a junior grade, whilst those with a firm grounding in C++ as well as Java move on faster.
Right tools for the job
While I still think it is incorrect to slate CS grads who have been taught mainly Java, I agree that you need the right tools for the job. Being a CS grad (like I am) doesn't make you a genius. I am quite happy to accept that I would not be the correct person for the job when it comes to complex mathematics involved in the banking industry.
Sure, I have debugged code by hanging 'scope probes off the end of SPARC chips and have written code for various obscure embedded platforms. It does not make me an expert on set theory. You want a math grad for that.
It's sad that CS is becomming so undervalued in the industry. There is a lack of people taking the course and this then means that some bodies 'dumb' it down. I'm sure we're not too far off the day when course CS101 is 'How to use MS Word'.
CS grads will never be the answer for all programming jobs in every industry. We serve a purpose, and the skill of a recruitment consultant is to know what that purpose is. Generalising about the languages we learn is missing the point.
Anyway, how did an article on free MS tools become a rant by me on degree courses? :)
I'd take C# over Java any day of any week you care to name. The ability to decompile it into $Your_Preferred_Code alone is worth gold.
I don't think it was a wise idea generalising a few 'high level' languages and saying one is better than the other in terms of intellect. Everyone knows there are lots of different ways of achieving something, the skill is choosing which way to achieve it, and I don't think that is easily generalised. When you have a hammer everything is a nail.
As for preaching you want people to learn everything, I agree, but this is the distinction between a good developer and a bad developer, however I don't think that is based on the developers preferred language, as they will probably have some environmental factors as to why they chose that route. Java is not so different that you can't apply the concepts to another language, just like C# / C++.
These kind of sweeping statements make The Reg seem ignorant to the world around it, especially this guy who seems surrounded by *ankers.
Learn what you like
It's not important what language you learn - as long as you don;t think that it's important what job you want to end up with.
As an employer of programmers (developers, software engineers or whatever is the currently preferred job title), I'd have to broadly agree with the original article.
Too few recent graduates have an in depth understanding of how a computer and operating system work. I believe that this is because of the reliance of degree courses on very high level languages (when I learned to program, C was a high level language, but if Java and C# are high level now, then that makes C more like a low-level language).
The new languages insulate the programmer from the OS and internals so much that I constantly find painful bloat in code - for example, it is so easy to use strings in Java and C# that I even find my younger programmers using strings to store numbers, without the faintest clue about how inefficient this is.
If I want someone to write UI code I look for good graphics skills and then C# or PHP. For anything else you need experience with C++ (or C or even better assembler).
I don't blame the students, but I am more and more concerned about the University courses - the course designers should know better.
And finally - students need to realise that hardly anyone works in AI, even if that was the most enjoyable part of your degree it's pretty much useless in the real world!
It's not what you learn....
...it's how you learn.
When I was a gap-year student working for IBM, they spent part of the initial training course teaching us APL. This was not because we were expected to have any need of it, but because they were pretty sure that none of us would know anything about it. They wanted to teach us to learn, not to give us knowledge, and wanted us to all start at the same level.
Blimy. Java gets a really bad rap on this thread. We have many desktop environments in which we have to write software for. These include Macs, Windows (many variants), Linux and wait for it... OS/400 (or i5/OS). We chose Java using Eclipse RCP. We do not have to recompile for each platform incl i5/OS, which is fantastic!!
What other language/platform would you all use?
And, i started off with COBOL, yep! Then Pascal, then C/C++ and on to Java. This is along with SQL programming. Try getting your head around Common Table Expressions!!
Java really does have its place.
The write writes yet again...
>While I still think it is incorrect to slate CS grads who have been taught mainly Java,
Agreed, my gripe was CS grads who seem *only* to have been taught Java. If there existed a course where there was only C++ or only Lisp, I'd say the same.
>It's sad that CS is becomming so undervalued in the industry.
>I'm sure we're not too far off the day when course CS101 is 'How to use MS Word'.
We passed that some time ago. I find "CS" grads who boast of having done website design in pretty looking tools.
>CS grads will never be the answer for all programming jobs in every industry
Yes, but why ?
One would not have physics grads doing dentistry, so why are CS grads so unable to demonstrate superiority on their home ground ?
. We serve a purpose, and the skill of a recruitment consultant is to know what that purpose is. Generalising about the languages we learn is missing the point.
Anyway, how did an article on free MS tools become a rant by me on degree courses? :)
I see programmers like musicians.
I think of programming as more of a creative skill and not an engineering skill. In engineering you learn the rules and follow them to build whatever you are building. Programmers still look at the rules for reference but should always strive to create something better either in terms of functionality, efficiency, or usability.
A programmer is like a musician. Any good musician who has studied music for a long time and has been practising with at least one instrument and enjoying it, should have absolutely no problem picking up a second instrument and becoming good at it in less than a month. I've seen musicians being a able to pick up new instruments and play them well after only a day's practice. If programmers know how to program then the language is irrelevant and can be learned very easily.
Paris has a depressingly modern view of art.
Michaelangelo knew more about the physical properties of marble than any scientist of the time. Leonardo da Vinci more about physiology of his subjects than the doctors who might treat them for illness.
Before the 20th century, painters would be educated in the formulation of their paints, and even recently Sebastian Bell could mend and upgrade flutes.
But sadly "understanding" your materials and instruments is now seen as "geekish".
A friend of mine was recently interviewing media studies graduates to a plum job working on the next Harry Potter and James Bond films.
Not one seemed even to be aware that with paints colours are composed by subtraction, but colours on a screen are made by adding.
Her view was that there was something missing in media studies "they should teach them how to give blow jobs, as it is the only way they'll get a job in this buisiness".
I have no time for so called "developers" who think understanding stack frames or disk i/o is "beneath them". You don't always need to think about pointers, and Java may well be the right choice for a given job, but if you only know one tool, and only a few ways to use it, then there is little chance that you've chosen the right one.
The author's observations on university curricula may be representative of his experience or the UK, but they're nothing like my experience here in the US.
PHP becoming the part of the defacto environment for universities teaching CS while VB.NET is virtually unknown? I've never heard of a PHP course being offered by a university, but I've helped many people working on their business degrees (including the hybrid business/IT degree) with their VB.NET coursework. At Arizona State, all the would-be accountants and finance majors have to take at least one VB.NET course.
I have a BSE in Computer Systems Engineering from ASU (cross between EE and CS). While it's true that Java was heavily favored, the University was usually pretty good at picking the right tool for the course. C for the O/S course, Assembly for the embedded systems course, Lisp for the AI course, SQL (on MS Access - yuck) for the DB course, and Java for the data structures and algorithms courses. I would guess this is fairly common, as it appears that even the semi-evolved monkeys running ASU figured it out.
"If I want someone to write UI code I look for good graphics skills and then C# or PHP."
I assume this was a joke...You can't really think there's a relationship between knowing C# and/or PHP and writing good UI code. In a typical 3-tier environment (DB, BL, UI) C#, Java, and PHP are strong in the middle and weak at the ends. They are piss-poor UI languages. You should reconsider your hiring criteria.
- iPad? More like iFAD: Now we know why Apple ran off to IBM
- +Analysis Microsoft: We're building ONE TRUE WINDOWS to rule us all
- Climate: 'An excuse for tax hikes', scientists 'don't know what they're talking about'
- Analysis Nadella: Apps must run on ALL WINDOWS – on PCs, slabs and mobes
- Major problems beset UK ISP filth filters: But it's OK, nobody uses them