I'm sure there were two girls on my degree course
But it may have been one. My recollection is rather hazy and beer-clouded, and I spend most of my time socialising at the local goth club instead of the union.
You choose your degree when you’re still a child, even though at 16 or 17 you may not feel like one. When I look back at some of my own teenage decisions, I shudder, and you will too when you think back to your younger years. But perhaps, armed with the advice below, you can avoid the common pitfalls and stumbling blocks on the …
There were (comparatively) lots on mine - i.e. maybe 10% of the total.
Given that I was a stereotypical "into computers" student (and more the bad stereotypes than the good) it benefited me as much as the icon suggests.
(Glasgow, Software Engineering, 2:2)
I spend most of my time socialising at the local goth club instead of the union
Same here. The Slimelight, Electric Ballroom and the Wag in London, early to mid 1990s. Made up for the college I was at (SSEES) having a student union that lacked a bar.
>> The Slimelight, Electric Ballroom and the Wag in London, early to mid 1990s...
Ha! I started going to those in about '96 (though substitute Gossips for the Wag). It's just possible we met...
Fail icon because, well that's what happened to my Chem Eng. degree at IC due to a bit too much gothing. I ended up at uni in Southampton, frequenting "The Dungeon" and squeaking through with a 2:2 in compsci...
Ha, and me! What is it with goths and IT? In fact my biggest achievement at Leeds uni (93-96) while doing comp sci was running the goth society, rather than my lazy Desmond degree result. Which came about due to putting too much focus on goth related leisure activities, and drawing pictures instead of studying. Still, I ended up as a 3d artist in games after that and was one of the few artists who could actually communicate with the coders and write bits of code etc, so it worked out OK in the end.
RE The maths: It was quite a shock coming to uni with my A in a-level maths thinking I was good at it, and then being whacked hard in the brain with discrete maths. Never quite got the hang of it. Do they still teach that?
Discrete modulo mathematics (if that's what you mean, limited integer domains that wrap around and their mathematical properties) was absent from my coure at Southampton (97-00). I've picked it up recently from my crypto studies though. It is really weird.
I remember being a bit miffed at the time that we got the C and C++ courses as our basic intro to programming and the very next intake year were going to be taught Java, the way of the future.
Looking back I'm pretty happy the way it turned out!
SSEES had a bar when I was there ('90-'93 - Social Science degree and proud of it) though it was only open 12-2 and 5-7. Though IIRC it did close for a while after the manager (a student) allegedly ran off with the takings and some of the stock. Don't remember any IT courses, but Jonathan Ross was registered as a SSEES student and actually took most (all?) of his classes at the LSE (that's where he says his degree was from) so I presume you did something similar.
SSEES had a bar when I was there
Do you mean the central University of London Union (which had a very large bar) or the tatty building behind Senate House that was home to the SSEES union? If it's the latter then I never saw a bar there, but there again I only took a look once and never went back as the whole building seemed deserted.
Don't remember any IT courses, but Jonathan Ross was registered as a SSEES student and actually took most (all?) of his classes at the LSE (that's where he says his degree was from) so I presume you did something similar.
I was studying Finnish at SSEES with Hannele Branch, wife of Michael Branch who was the head of the college at the time. Had a great bunch of UCL students in the same class for my second year, as they were doing a combined Scandinavian languages course.
@ Chris Wareham
Yes, the 'tatty building' on Russell Square - there was a small bar in the basement. And the room next door with the pool table was always full of life - at least until 7pm when the bar shut and we moved on to SOAS round the corner. Shame it's all gone now - they've moved to some steel'n'glass complex up near UCL.
It's Friday, hence a message about beer. Time to go home and drink some.
> The Slimelight, Electric Ballroom and the Wag in London, early to mid 1990s.
Ah that takes me back. And the next day, you'd have the "Slimelight Fever" which was a curious ailment, caused by breathing in the noxious fumes comprising of the various substances that clubbers happened to be smoking.
>> caused by breathing in the noxious fumes comprising of the various substances that clubbers happened to be smoking.
Probably mostly clove cigarettes :)
There was also slimelight ooze, a horrible mixture of sweat and whatever it was they'd painted to floor with. There would be red muck halfway up your boots by morning...
The Slimelight floor was covered in brick dust, which combined with the chemicals from when it had been a cable making factory probably explains the vileness. This was particularly bad on the upstairs dance floor, which had allegedly contained a pit used as a dip tank that was then filled in with rubble and concreted over. The place is still running as a goth and industrial club, although the top floor was closed and a new one opened on the ground floor. They've even managed to tart it up a bit and added bars. Your still allowed to take your own booze in and the toilets remain unisex, which must freak out first timers!
"I spend most of my time socializing at the local goth club instead of the union"
Exactly. A lack of women in your class room and lab is irrelevant on a campus crawling with lonely girls.
Go to social events the faculty of nursing puts on. Or go to some guest speaker presentations the literature department puts on. Join a film club. Or sign up for some co-ed sports.
Roughly 2/3 of any North American university these days is female. It doesn't matter what your major or faculty is, you can meet plenty of girls at social events.
Most of the girls at my University were studying Management. In the management lectures, which sometimes ran just before the computing lectures, the ratio of girls to boys was like 10:3. You don’t have to be a rocket scientist to figure out why the girls go into Management. Managers get paid more for simply bossing people about.
True managers are experts in their field and have the skills to hire the right people. Furthermore they also have the ability to steer the project into the right direction using their experience and skill.
Most of the managers in IT firms today are PowerPoint presentation experts. Why would some girl want to be a stressed out beer belly nerd. PowerPoint is far more easier and rewarding in the pay packet.
At University I learned C/C++ and now can also program Java which is similar but also easier. Nowadays Java is taught at University which leaves a student with a big problem if he has to work with hardware at the low level and code in C/C++.
U of Manitoba and U of Toronto, probably 20% of the students were female back in the 1970s and 80s.
I have heard that the number of females has been dropping.
Where once IT was a highly valued esoteric subject, now executives see our division as something their teenage kid could do.
Our relative pay is declining. Our work is being outsourced to the third world.
Refer to my other post about considering engineering or business degrees with some electives in CS. Or consider going to into sales or sales support after graduation.
Dominic is right about focusing on theory, theory doesn't go obsolete.
Don't take a CS degree program that doesn't include math, statistics, logic, C and C++.
In CS, C and C++ are essential.
If you do engineering or business and can't do C as part of your degree, pick it up in an evening course after you graduate (not necessarily right away after you graduate, within 2-3 years).
If you do CS and end up in business based-IT, pick up some business courses in the evening after you graduate (not necessarily right away after you graduate, within 10 years).
But so many CS degrees *are* pretty much exactly this.
It's an elephant in the room I have noticed, which has led directly to universities pumping out armies of mediocre programmers who are jacks of all trades but masters of none, rather than proper "Computer Scientists" that can solve real problems. For the record, I don't think I know anyone with a "Software Engineering" degree but have lost count of the "Computer Science" graduates who do that work daily. Where's the distinction in the workplace when it really matters?
The amount of times I've seen Top 10, well regarded universities who have CS graduates that gravitate towards software development after graduation because it's all they know and all they feel comfortable with [due to conditioning and 3-4 years of coursework revolving purely around programming] is truly staggering. It's like they're just not aware or don't have the motivation to take advantage of or explore such a wide open field. The same thing is now slowly happening with the InfoSec arena as well.
The state of academic CS in this country is, by and large, not that great. Flame and rebut away.
"And that is why you fail"
Science is not about solving real-world industrial problems. That's what engineering is for. That's why the demand is there for engineers in computing, not just scientists.
Yes, it's right to observe that courses that claim to be Computer Science but then teach mostly programming are not going to turn out great graduates as (a) they lied and (b) they're still not teaching engineering principles. At best they're a college course in a language that may well be on its way out. And yes, the Scientific staff may be resistant to teaching something they're not skilled in - but that's a sign to expand their remit, not barricade themselves in. Sadly though, this status quo will persist as long as the scientists control the departments and the industry still has an appetite for hiring mediocre programmers, giving them a pile of UML layouts to code, then kicking them out the instant they mention the word 'opportunities' to HR.
There are plenty of overlaps between science and engineering, but generally the focus is looking outward not inward. Science might teach the principles of the microchip, but (a) if you're going to work on hardware you should be on a different course, and (b) it barely touches on programming even if you get into assembly. And being able to demonstrate a language is 'Turing complete' doesn't remotely affect your programming of one as established as C++, as it's hardly your call anymore. Now where the theory of languages does help is in going from one to another, or for developing a scripting system of your own, but if you haven't knocked out code in at least three significantly different languages before you even get to Uni then what were you playing at?
Whereas engineering will take you more through breaking down problems, why you need a software lifecycle, when to apply it and give you some ideas about when to break away from it and make your own headway. If you think you learned all you need to know about that on your Computer Science degree, think again. It's like saying yes, I learned all about thermodynamics and motion, I can design an engine for you. Again, it's all very well to learn of strongly typed or provable languages for safety and security, but practically you're unlikely to get to choose the language so you need to know how to program robustly and defensively. And you might have learned about classes, compartmentalising and modularity. But you didn't neccessarily learn when and where it's appropriate, or how to apply it to a language that doesn't support it natively. And then there's that hushed phrase whispered occasionally by the weird guy without a heavy-metal reference anywhere about his clothing, the 'user experience'...
But that's how it's been for decades. And we still have no recognised programming qualifications.
Trouble is, in maybe 75% of North America engineering is a profession and you need an engineering degree to do it. That would include programming control systems, industrial, automotive, aeronautic and medical.
But OS design and compiler design you can do with a CS degree.
Thing is, how many compiles are need to be written in a year? Not many.
So there's gaming, and I don't know much about that. How often does a new gaming engine need to be created? How many person-hours? I have no idea.
And there are business systems -- analysis (business subjects definitely help), programming, supervision. During most of my working IT career, which goes back 35 years, there was tons of work. Now there are a lot of packages that just need customization. Of course someone needs to write those packages.
Really, *pure* CS is really just an academic subject. If you get PhD in CS you can do research into computability and give lectures at a uni. (Lectures in programming, a topic you have no practical experience in.)
A good CompSci degree will cover hardware and software but allow the student to specialize in the area they are more interested in. The University of Edinburgh do a Software Engineering degree; I'd hope that you could switch to/from CompSci so long as you've done the required modules.
And btw, new compilers are still needed and developed these days, especially with a lot of development on DSPs and GPUs. It is a bit of a specialist field, but many of the techniques involved are still very useful to know for almost all developers, for example using parsing and tokenising input.
Even in the 80s we were recommended not to bother with "computer science" O and A-levels - they only seemed to consist of binary arithmetic anyway. Maths/Further Maths is definitely the way to go. The Oxford SMP O-level syllabus was particularly good for this, as it put a lot of stress on matrix operations.
I considered doing Cybernetics at Reading (this was in pre-Kevin Warwick days) as the department had a nice mad-scientist vibe going on (but promised to be too much like hard work - long hours of practicals and open-book exams).
My elder daughter seems set on computer science, though in France. I was very happy to hear that C is still being taught.
Most of my programming was self-taught anyway (since ZX BASIC on the Speccy) with the exception of Fortran 77 at uni (standard for Physics degrees back then). I can still knock out the occasional Excel VBA macro, proving that one can write Fortran in any language...
No A-level courses beyond the traditional ones are any use whatsoever as preparation for any HE. English, Maths, Physics, Chemistry, Biology, History, Geography, Modern Languages and that's yer lot, save maybe Music and Art if and only if you want to go on to the same thing at university.
Psychology A-level? Economics? Computer Science? Design technology? All a waste of time as far as HE goes. And anything with the word "studies" in it is fit only for wiping your bum on, at any level.
Hmm, A-level Economics and Gov & Pol haven't done me any harm, but they were in addition to three proper ones.
Cybernetics at Reading in the Prof Fellgett (RIP) days certainly had a nice mad-scientist vibe going on and was indeed harder work than its CompSci. At the time, you could take anything into the exam room that fitted on the desk and wasn't plugged into the mains. The questions were correspondingly tough and you had to be good to get a 2.1, never mind a first. I wonder what they do now.
I don't know what college you went to but I did Design Tech and Software Development (writing Pascal oddly enough) at Hyde Clarendon and that put me in pretty good stead for a great many future endeavours. Of course that was in the 90s, when A Levels still meant something and were actually hard. So hard that I got an E in both subjects.
The work I turned in for them would get me an A* today. It was good work, but the expectations were that much higher back then.
Be honest, your E grade would not get you an A* today. You were obviously badly advised at school and after 'O' levels you should have gone on to an apprenticeship in brick laying instead. In the early days of computing anyone who could say 'com-pu-ter' could bluff their way into a job because the older management had absolutely no idea what it was all about.
Now, even with such a high opinion of yourself, you'd struggle to get employment.
O levels were phased out in the early 80s - before I was even in senior school - and brick laying is a highly skilled profession that I doubt one in 20 of the people who post here could do to any degree of competence.
If you're going to mock, be smart about it.
What are they teaching kids in schools these days eh?
I did electrical engineering and picked up CS theory and programming with CS evening courses at U of Toronto.
Every language I ever used on the job I learned on my own from the manual. Some I later took a course in (370 Assember and COBOL). The languages I learned at uni, PASCAL, SNOBOL, LISP, C, I never got to work with. (One exception, PL/I. I learned that at school before I worked with it, but then I only worked with it for 12 months.)
Community college students, they learn the languages they'll use on day one after graduation. If languages go out of favour, they need to go back to school for years to learn the new ones, or find a new occupation.
But a university degree should mean you have enough theory to learn a computer language on your own.
That means not just learning the syntax of Java or C++, but why languages work the way they do
In other words make sure to lay out a good foundation on which you can continue building. A very solid and valuable advice, even though newcomers may think this to be extremely clichéd (and in a way it is). Another thing I'm missing out on (or maybe I overlooked it): A degree isn't necessarily a "get into the market for free" ticket. I've seen many examples where someone with a high end degree simply knew shit about the basics:
"Why would you want to declare a variable?".
"A trick question eh? Well, you don't have to if you're using C# or avoid adding explicit in VB".
"No, I want to know why you'd want to declare one first?".
Stuff like that always reminds me that you might be better off going for a broad approach. The reason I went for this route is because I'm a systems/network engineer (or administrator?) which means that you'll be doing a lot of different things. From helping people out with simple Word problems right down to setting up a firewall design, that's the kind of diversity I really like.
But to me broader is always better.
That's me. I never finished my degree, but after about a month of being a lab assistant: feeding the printers; I became an admin on the university mainframe...which, I think, I proceeded to crash. I do remember disassembling and reassembling a FEP to pinpoint a hardware problem because I was bored and I knew that the FE wouldn't show up to work on it until the next day.
Of course, I also climbed into the cabinet (a cable raceway) and kept quiet for 3 hours so that I could scare the crap out of the night operator...fortunately they let me out because I couldn't reach the bottom door latch.
"I teach C++ and the course has lectures that include slides headed “Cruel and Unusual Pointers”, “Why the hell did it just do that?”, and “What do these syntax errors really mean?”. Some compilers will even abuse you with “useless code at line N”, and where just declaring a variable can convince you that the compiler is a malicious artificial intelligence." -- Nice. Although, causing the complier to crash can make up for this.
".....I particularly enjoyed the irony of your talk about second tier universities as your alma-mater is in that tier!" Queen Mary's is a bit of strange horse, it used to be one of the top choices for niche studies such as avionics and aeronautical engineering. I had a mate that helped build their supersonic windtunnel and he said they were some of the most interesting engineering people he'd ever met.
Having sifted CVs I can say the worst candidate I ever accepted had studied Comp Sci at the Computing Lab at the Uni of Oxford - absolute maths and physics genius, bulging brains but not a clue how to use them. He could talk you through a dozen different programming language structures and highlight the advantages and disadvantages of each, but strugglerd with do anything practical and productive like coding a website that actually looked good. After a year he left to train as an accountant. He was regularly outperformed by a kid we had that had left school with five GCSEs and a burning interest in how the Web worked.
> but strugglerd with do anything practical and productive like coding a website that actually looked good.
Jesus, you asked a Computer Science graduate to design a website?
Isn't that marketing work?
And WTF has it got to do with Computer Science?
I've been successfully working in this field technically for <erm, lots> of years: you would not want to see any web site that I designed.
Apart from that, I pretty much agree. We, here, have interviewed many people for technical posts. They come with all sorts of paper qualifications. When you ask them to perform some very basic algorithmic task, they tend to fall apart.
".... worst candidate I ever accepted had studied Comp Sci at the Computing Lab at the Uni of Oxford - absolute maths and physics genius, bulging brains but not a clue how to use them...strugglerd with do anything practical and productive like coding a website that actually looked good. After a year he left to train as an accountant. He was regularly outperformed by a kid we had that had left school with five GCSEs and a burning interest in how the Web worked...."
What a waste of talent and brain capacity. Now you have turned a genius into an accountant. I wonder what you would have turned Alan Turing himself, into? Given him bad confidence by letting him do absolutely brain dead tasks such as websites. I feel sorry for the Oxford guy. I hope he will get his confidence back some time and start to do interesting work, far away from you. Who wants to do brain dead stuff, with a bad manager?
Genius! Don't think so. Someone with an over-inflated opinion of themselves got shown up as not capable of doing something actually useful. IT has lots of Geniuses like these, and loads of other "non-geniuses" running around after them fixing their super clever but not quite working properly code....
Picking those subjects at 13 more or less determines what you will be doing for the rest of your life (mostly but not always).
The choice is falls between picking Music/Art or Science subjects, they do seem to be on the same list for some reason. Then starts the social divide at 13 between the arty kids and the geeky science kids.
Well, only if you deliberately choose all arts or all sciences.
Unless someone's holding a gun to your head, presumably there's nothing stopping you choosing three separate sciences, maths, English, and a couple of interesting humanities. History and friends. That's only six I've mentioned specifically, so room for more and it in no way restricts you to one path or the other.
Many of the best programmers (as opposed to computer scientists) I know are music, essay writing arts or (intriguingly) chemistry graduates. Arguably, some of the worst were maths graduates.
This has nothing to do with intelligence or knowledge. Let's face it squarely: at the end of the day a talented programmer can structure and design a reasonable system in his (sadly yes) head while you wait. He then has to spend the next three to six months writing it down. That's a bloody long (and very *precise*) essay/dissertation by anyone's standards. And he has to do that year in, year out, during his programming career.
Programming is craft, not science. It is more akin to carpentry with book authorship than abstract maths.
As a Chemistry graduate (and PhD) who works in computers, I salute you for that comment about Chemists. My (probably biased) insight into this is that science graduates are often presented with problems such as "we need to go 'here' and we have a bunch of tools, but none are guaranteed to work. Off you go and work out a few plausible routes, plan the costs, expected efficiencies of the synthesis". Also we're told, "just give it a go. You never know, it might work".
Since sometimes nuances such as a tiny fluctuation in temperature/atmospheric humidiy can cause what you want to happen (or something strange), you have to be thinking very outside the box. I had a reaction that was reported to work in DMF & dichloromethane, and apparently with great yield at room temperature. I could not get it to work as well, but heating it in a sealed container in pure water gave me a predicatable route to what I wanted with good quality stuff and not the partial compound I did not want.
it's all about saying "okay, the obvious isn't working" and then trying something a little random to find the problem. It's much more satisfying when that actually works.
Am I the world's best programmer? probably not.
can I find solutions or reasons that something is 'failing' and also clearly comunicate this to non-technical people? Yep
can I get useful tools built and get them work to what people need, as well as being efficient with resources? Yes.
are people happy with what I do? Yes
Those make me useful to my company, and, in my opinion useful for business work.
Indeed, I'm now at the stage of my programming career where I don't go anywhere near code.
I spend every day in Balsamiq, Word and XmlSpy designing applications, screens, APIs and architecture.
The docs I write then get spilt out amongst the the programmers, be they "front end, "back end" or "external" and they do the programming.
Graduated from Brunel University with Comp Sci in 2001.
Did 4 year sandwich degree so I could actually get a job
Took A level Maths, Physics and Music Tech.
Spent 4 years at uni breaking any computer I could find, drinking, clubbing, camping, bowling and living in the 24 hour computer room. Oh and we had lots of block-war water fights
"..at the end of the day a talented programmer can structure and design a reasonable system in his (sadly yes) head while you wait. He then has to spend the next three to six months writing it down. That's a bloody long (and very *precise*) essay/dissertation by anyone's standards. And he has to do that year in, year out, during his programming career."
A fantastic description of programming which had never occurred to me :)
Most solutions to problems I can design in minutes in my head, then hand draw out data models on paper, form layouts, having everything all figured and drawn out in perhaps 30 minutes.
Capturing it in crappy Visio is the hard and time consuming part, which I find very frustrating, it restricts the creativity, but documentation must be done.
In Scotland, strictly speaking you don't choose your degree until after the second year of a four year honours course, so you could be 19 or 20. Of course, your choice is limited by what you did in the first two years, and that in turn by what exams you took in school. So, yes, what you decide in school DOES affect your choice of degree - just not as finally as it does in England.
Same in Canada. Start of second year uni you choose your specialty (age 18 to 20).
But the choice of high school courses at age 15 will limit whether you can get into first year and what you can pick from at 19 or 20.
But these days a lot of students here take their time graduating. A lot of false starts, changing majors, going back to take remedial courses in what they didn't take in high school. (Don't have university entrance math or english? You can fix that with a 3 month remedial course.)
When I got my choices at school as to what I studied, many of the combinations that I'd have liked to do were incompatible due to scheduling. It's wasn't just an arbitrary decision that I couldn't take both English and Computer Studies (as my computer course was known as) there were three streams and I in one of the choices I could choose either English, Computer Studies or Art. There was some sense to it, so the more science related people could choose science related topics, hence my "maths", "science/physics" and "computer studies" selection but I'd have liked to do English and Art but these were excluded.
So around the age of 13, is the time that many of these life long decisions are made.
Picking those subjects at 13 more or less determines what you will be doing for the rest of your life
Bollocks it does. I did the (then typical) mix of arts and sciences at GCSE, followed by arts subjects at VI Form and University. Then I became a computer programmer. The best computer programmers I've ever worked with, apart from one exception, have arts degrees or in one case had left university partway through a medical degree.
The most annoying thing for me at that age was that I had to choose at all. I can't remember exactly, but I think I had to choose ten subjects from about sixteen. I could easily have just done all sixteen and kept my options open and I bet that applies to a not-insignificant number teenagers.
At A level I did Maths, Physics and Computer Studies. I'm glad I did CS because it included a mix of Pascal programming and the basics of how computers work. It was my first formal introduction memory, bit manipulation two's compiment, fixed and floating point and all that. I think it set a good foundation for further learning at uni and beyond.
"At A level I did Maths, Physics and Computer Studies. I'm glad I did CS because it included a mix of Pascal programming and the basics of how computers work. It was my first formal introduction memory, bit manipulation two's compiment, fixed and floating point and all that. I think it set a good foundation for further learning at uni and beyond."
I did all of that at A level Computer Science in 1986. Didn't need to do a degree to do that.
"Algorithms + Data Structures" by Nikki Wirth was probably the most influential book on programming I ever read. It caused me to change from Algol to Pascal (and later avoid Pascal 68/Simula etc) as my high level language. Anything was better than Fortran and (spit) Basic. Mind you I was still writing a load of machine code, assembler and Plasyd at the same time. So when I came across unix and C in 1981 I was ready for the change. I have been writing in C ever since. I have never understood why people think it is so hard to use.
Caveat: I started computing ten years before you.
I agree with your evaluation of Pascal being better than FORTRAN or BASIC, but only as a stepping stone to C, which I wish had been an option when I was at university. Pascal always felt limiting, in terms of data types and I/O options, C never does. It took me ten more years (I'm a hardware guy) to start using C and I wish it had been much less.
_The C Programming Language_ and Steele's _C: A Reference Manual_ are always near to hand. Well written and densly packed with useful nuggets, both of them.
I find if you can program one you can program in the other. Pascal, Basic, Delphi, C++, Java, C Sharpe. One uses curly braces the other begin and end. They all have branching, looping (IF, While) statements. All have procedures and functions. Some allow object creation methods. In the ones that don’t you have to implement it crudely yourself. If you have programmed Win32 API you will know what I mean.
They all have techniques for handling arrays and strings in their own particular way. Some allow a cleaver way of handling errors using Exception and in the ones that don't you have to make use of error flags. Most have libraries to handle collections and sorting. The newer languages allow a decoupled method of programming using delegates and events. In the ones that don't you have to obtain multiple threads from the OS and implement a postbox system using semaphores and thread sleeping.
Some allow Tempting techniques such as Generics others don't. Some allow Function pointers which allows short elegant code to be written which was vital when computers had a small amount or memory.
Contrast these languages with something like Smalltalk which is a big paradigm shift. Even if you have programmed in the languages above writing Smalltalk would be quite difficult. Take for instance VHDL which is a parallel language and difficult for a C/Pascal programmer to master. Matlab which is a matrix manipulation language would also pose a challenge to a C++ programmer. SQL which is a declarative language and requires some getting used to.
A good programmer can code in a variety of languages.
As a learning language, I believe excess focus on Pascal, Delphi and even Java hobble you with respect to what's going on under the covers. That may not seem important to many people - too many in my opinion. But in my experience, the really excellent programmers are the ones that understand at least some of the low-level implementation details of how languages, and indeed computers overall, get done what you ask of them. Languages like Java work hard to hide that from you by design.
Learning C and C++ force you as a matter of the language basics to learn about things like referencing memory more or less directly via pointers and low-level arrays. Naturally, using these tools can be risky and poor use leads to all manner of awful bugs. Indeed, that C/C++ can permit such horrific bugs is the main reason we have languages like Java, whose core design philosophy is to "protect" the programmer from these things. But by using languages like Pascal and Java as your sole teaching tools for a new programmer, the students don't learn nearly as much about what's actually being done by the resulting program than they would having written in, say, C/C++.
I believe this deprives them of all manner of useful knowledge they can later bring to bear to debug deeply buried issues or improve application performance. Not because they're going to hack pointers into a Java program, but because they often have a better grasp of things like stack and heap maintenance, why things can go wrong with loading in foreign libraries (vi JNI and the like), and so on.
The above can be covered of course by courses in assembly or compiler design, but not that many CS students I know take those if they can avoid it when their goal is to get marketable skills, as opposed to pursuing computer science directly. They usually focus on programming classes, which usually focus on higher-level languages used in business.
Learning algorithms, design patterns and the like is essential, and I hardly think
Learning both isnt a bad idea. We started on C++ before moving to java (the good old days of making a mouse driver for DOS and programming parallel outputs to control oscilloscopes). I learnt most of my bad habits in C++ purely due to direct memory addressing etal. That was on an electronic engineering degree at UMIST (early 90's) with A levels in maths, physics, business studies and electronics.
Gave up programming as a pure career as I didnt want to move to the city and stepped into a worse choice of sysadmining (with just as much programming really)
"I find if you can program one you can program in the other. Pascal, Basic, Delphi, C++, Java, C"
Mostly true, but I did meet someone that had programmed in Cobol, and was trying to program in C.
Poor guy didn't have a cats chance in hell. He really couldn't hack it.
I know that book. I came across it a few months back. It was actually very useful to me, due to being so outdated now - it covered a lot of tricks for performance optimisation that modern coders simply don't learn because they have no need. Things like the 'trap' matching record at the end of an array in linear search, so you can skip the n<max comparison in a for loop, or the old merge sort algorithm for tape storage that happens to do quite nicely if you want to sort your too-big-for-RAM array without sending heads dancing back and forth across the platter.
this October since I started my CS degree course at Bristol. Now I am in my third job and am very happy with my career; a lot of that is thanks to the degree I did even though I might not have thought it at the time.
Looking back, uni days were awkward for all sorts of reasons (at that age, you think you're an adult, and in many ways you are, but in many other ways you're not). but I learned a lot and scraped a 1st class MEng degree. Sometimes life at uni was enjoyable, other times quite the opposite; I guess that is par for the course when you're that age.
The degree and grade itself gets less useful as time goes on, but the things you learned at uni remain as useful as ever. The modules I disliked because they were hard/I couldn't understand them turned out to be some of the most useful, and I guess at a lesser university they'd have skipped them altogether. At the time I thought "there is no way any of this stuff will turn out to be relevant"; I thought all software engineering in the real world revolved around Java, PHP and web apps - but it turns out most of it is driven by C and C++ and people who know how to debug something at both the very lowest level and the very highest are highly in demand and I'm very glad I dragged myself to all those low-level lectures about computer architecture and compiler design.
So yeah, doing a good degree is hard, but it will pay off. Don't shoot yourself in the foot through laziness.
And try something like Math's, Physics or Engineeering with a soft minor such as Economics. All "hard" skill degrees which when taken with a reasonable techie internship qualify you almost as well but leave wider job opportunities when the inevitable happens and your job is offshored or you are made redundant.
Left a Comp Sci course on my first day, and 2 years later did a Physics. Worked in IT roles for 20 years and counting......
Also you dont have to focus on languages to be a good techie. A techie BA who can actually communicate, influence and say no to the business is worth their weight in gold and should be cherished.
And physics! Never forget physics, at the end of the day the NAND gates just obey few simple rules of physics. Math is an abstraction layer on top of all that. I studied AeEng (95-2K) and when I minored in CS they told me it was useless for me, already knew most of the stuff... To put it bluntly, economist is a dumb sociologist/antropologist with a very limited view, chemistry is a non-existent science named after alchemy just to accomodate dumb physicist with limited view and CS, well... It is like teaching the English language to lit majors so they can actually write literary works. CS is just a tool that every engineer must know like a back of their hand if they ever wanna get something done in this lifetime. E.g. try solving the continuity equation by hand...
Dear god no. University is where you go to study one area of academic interest, and study it in depth. And then you get a graduate job that pays you properly, rather than considering it some sort of honour to slave away for virtually nothing...
I'll agree that communications skills are vital if you want to get very far.
Got to disagree there. Maths and Engineering are essential skills, but when I hire someone in IT I want them to know IT, not to train them on the job. Ask a maths graduate with no IT experience to design a data structure to solve a problem and it won't happen. They might be able to do it, eventually, but they won't be able to describe it to you. Although sadly I've interviewer a few IT graduates with the same affliction.
The value of an IT education, like any specialized education, is common point of reference.
With a successful career, largely in software engineering, now behind me (I'm retired) I can say this is actually pretty good advice. I never had a day's formal instruction in any form of programming or comp. sci., but I did do a lot of Physics and Maths.
Those subjects open a lot of doors if you're any good at them and the skills don't go out of date nearly as quickly as in IT. Given that many of your IT skills could lose their value on a time scale of just a few years, you're going to have to continually learn new stuff throughout a career.
That sets you no higher than other numerate graduates who can also learn the same new stuff just as fast as you. Except that they have the advantage of another large set of skills that aren't going out of fashion.
Think about it. A degree is an investment. You'd invest in a house, that would last, not in a car that'd need replacing in a few years.
"With a successful career, largely in software engineering, now behind me (I'm retired) I can say this is actually pretty good advice. I never had a day's formal instruction in any form of programming or comp. sci., but I did do a lot of Physics and Maths."
With the greatest respect, you're either exceptional or your programs were probably lousy.
I've interviewed and worked with a lot of mathematicians/physicists/electronics engineers who think they can write software. They can, but not well.
You wouldn't say "I never had a day's formal instruction in any form of surgery...but I know a fair bit of anatomy and biology so I feel qualified to have a go".
"With a successful career, largely in software engineering, now behind me (I'm retired) I can say this is actually pretty good advice. I never had a day's formal instruction in any form of programming or comp. sci., but I did do a lot of Physics and Maths."
I am going to agree with that. I studied Computer Science O level and A level and have a degree in Electronic Engineering. All the programming languages I know I have taught myself by picking up a book and doing practical exercises.
The best people in IT are not those that have been taught, they are the people that teach themselves by being inquisitive, picking up books, doing practical things, working things out for themselves in their spare time.
One of the first languages I learned was 6502 machine code, typing in hexadecimal op codes into a monitor program (no assembler) to write the op codes into RAM, running the code and looking at the processor registers and working out what just happened. There was a dissembler, what did JMP ($C010) mean?
What did JMP $FA mean? Gradually, - in the first case - I realised that the PC (program counter) register contents ended up being what was being stored at memory address $C010, (it was an indirect memory jump!) It was by experimenting, observing, that's how I learned machine code.
it doesn't matter so much what your degree is, the really good people work read around and experiment and learn for themselves.
I made the mistake of enrolling on a Computer Studies degree course at LJMU in 1989 having spent the previous few years mixing a love of microcomputer basic/assembler with some formal Pascal (Open Uni). I chose Computer Studies because I loved programming and wasn't (at the time) overly fond of anything that stank of teamwork (that's changed). Imagine my utter horror when the 3 year (plus one year industrial training) course turned out to be 40% programming and 60% business studies and bloody systems analysis! I spent as much time learning about the economics of banana production (seriously) and fucking double entry book-keeping as I did hands on with the university VAX system! As a result I lost all focus and interest by the final year and got a crap degree when I'd have possibly got a 1st if it was pure (ish) coding!
QED: Be sure that the course you sign up for is what you actually desire.
".....Imagine my utter horror when the 3 year (plus one year industrial training) course turned out to be 40% programming and 60% business studies....." I nearly fell into the same trap, only I had a good bit of advice from a teacher - ask to see the syllabus and then expect them to be able to talk through the content in detail. If they can't tell you at least what's in the first year in detail then back away. If they are unwilling to let you see what the current final years are studying then back away. Saved me from signing up for the wrong uni where the actual course content was not what was being advertised!
Same happened to me, but not so bad. First two years were ok... third year they squeezed all the techie into one module, and put the rest of the course onto business studies. They had me studying personality testing and classification as a tool in hireing practice. I ended up in a breakdown once it became clear I was going to fail all modules except the technology one and left with an epic tantrum.
Still managed to get a diploma out of it, so it wasn't a total loss.
C, C++, Python, Java or C#, software engineering development methodologies, databases, SQL, maths, data structures, object oriented design, AI, neural networks, operating systems, crypto, forensics, embedded systems, assembler, network routing algorithms, even machine architecture and machine code. Where I work ( clue: a newish University in the Midlands) we teach all of these things and merging our previoius Computing Science and Software Engineering schools strengthened both as well as the range and quality of our courses. Our stats show our graduates to be pretty much all employed. However, there's only room to include so many of these subjects on a 3 year undergraduate course if these are to be studied in any depth, so we can't in practice teach all of these subjects on all of our courses. So the selection of subjects depends upon whether our students want to study electronics or computer science, or games programming, or business IT, or networking and/or security or forensics based courses.
I did an A-level in comp sci back in the early 1990s. We were using Xenix on a network of 386s and as there was no Pascal compiler installed on the system our tutor reluctantly taught us C. We did our editing in vi. We did a little bit of assembly coding. I remember covering CISC CPU architecture, networks and databases (I think we had an Oracle 5 site license) in a fair amount of detail. With this knowledge of UNIX, a real-world programming language and relational databases I went on to do a degree in journalism.
You were a bit behind me.
I was introduced to UNIX at Durham University between 1978 and 1981 (V6 and V7 on a PDP11/34e, - and yes, there was one girl on the course in my year), and got a job needing UNIX in 1982. I admit that it was at a college (Newcastle Poly.), but I am still using what I learned, 35 years later, as a techie (not jumped to management, teaching [dallied with this for a year], or horror of horrors recruitment! [dig intended, in a light-hearted way]). Very glad I chose what I did as a career, and I'm one of the few people in my sphere who actually like their work, even after such a long time.
Strangely, I dug my copy of Lions UNIX V6 commentary out yesterday to check the way that Ancient UNIX did something that IBM, in their wisdom, choose not to document for AIX. Not sure whether it is still relevant, but it was a real nostalgia trip.
Just hoping there will still be a need for deep UNIX skills for the next 13 years to get me to retirement age. I don't want or intend to retire until I have to!
I was working at that weird phone company -- actually at AT&T, and Bell Labs sent over a release of it to trial. This had to be around 1977 - 1980. I picked up the trial because nobody else had time to do it. It was a mind altering experience, especially as it was the first time I had tried to learn from nothing but sparse documentation (man pages!) I mostly used the shell, not C.
I was mostly involved with mainframes, though, and spent the next 25 years or so in a mix of languages. What I learned from my couple of years in Unix was a great help throughout. Now that I am retired, Linux has taken over.
As you might expect, AT&T used UNIX a lot.
I actually worked for an outreach of AT&T that was doing work on the 5ESS telephone exchange, and not only was UNIX used in various parts of the exchange (the AM ran UNIX/RT on a duplexed 3B20D when I was working with it), but UNIX was also the development environment for all the code.
In my time, they were also using Amdahl mainframes running R&D UNIX from AT&T Indian Hill as an emulation environment (EE) for the exchange, as believe it or not, the costs of emulating the exchange on a mainframe was less than having a full exchange as a test-bed.
After I left, they switched to Sun 3 (because the SM used 680x0 processors) and Sun 4 kit for the main working environment. Just before I left, I was playing around with gluing all the systems together with AT&T RFS, which allowed you to do some really neat tricks.
On the subject of Indian Hill (Chicago), pre-TCP/IP and SMTP, the UUCP hub IHLPA, which used to be a go-to for routing mail to systems that you did not have a direct path to was run from this site by AT&T. I don't know when it was decommissioned, but not that long ago (a couple of years) I came across a reference to it in a sendmail configuration that took me by surprise.
. . . is one of the best attributes to have for any technical subject/job.
My advice to add to all the excellent ones above:- pick subjects you like and are interested in. If not you won't enjoy it, won't put the effort in and probably end up changing course/career later. May be obvious to me, but not to all.
Yup, pick a subject that interests you. Get a degree and consider it proof that you're not thick, but don't treat it as proof you're actually qualified to do a particular job. If you do complete a Comp Sci course, don't expect to just walk straight into a high paid job like many of the newly graduated folk I've interviewed do. Whatever course you do, if you want to get into programming then narrow your interests to specific areas and find the good books that cover it. You'll need algorithm books, and those rare beasts, good books on system design / architectural patterns. Code some projects in your spare time, and contribute to an open source project or two if you can find ones that interest you.
started compsci here but after a year kinda lost interest in it mostly because it's geared to teach you the basics that if you previously were taking anything like that in high school(local equiv) you already knew and were basically bored of it. So still without a degree in anything, 6 years employed as a sysadmin since then at a SMB/E company making decisions on purchases, planing, deployments and so on. Have the respect of the CEO(at the head office) and of my manager and my boss. The only thing I still need to teach them is that you pay a sysadmin to sit on his arse to stare at nothing most of the time because you really only need him/her when something breaks.
Interesting observation - thanks. This comment is well off-target re matters of importance to IT, but is (in my untested opinion) on target about the importance - the vital necessity indeed - of our 'Universities' (hah!) (and even more, of our high schools) to equip our young ones with the competitive skills to earn for UK.
In this regard, one of the 'Universities' I know of (Winchester School of Art, part of the University of Southampton) appears, to these (very old) eyes, to have a completely orthogonal objective. It appears to be in place only to extract money in obscene volumes from Chinese youth, returning to them poor quality instruction for a Master's (what a joke) degree, that could be covered, in about 3 intensive weeks, but at a higher quality, by an in-house course from a major UK plc. Any suggestion that the University should regard itself as a supplier (of skills) and hence be subject to the normal customer-dissatisfaction/product-replacement/money-back process, results in extreme reactionary responses from staff.
I doubt that WSA is alone. The whole morality and effectiveness/competitiveness and objectives of the tertiary education industry in UK (important to our balance of payments) needs urgent, invasive and decisive review (but, please, not another 'nobody is to blame' Staffordshire-style enquiry).
Posted anonymously for obvious reasons. The staff may have limited intellectual, industry and administrative skills, but I'm sure they can still heave a brick through my window!
Up to age 18, I had been putting money away to pay for Uni (not for CS but a bio-med course); I had even visited a couple of places to see which I Iiked. Then Shit Happened big time; and I was working 70 plus hours a week to feed, clothe and house a family of 6. (No regrets; in no universe would I have taken a different route)
Many years later, like many others, I found myself moving into IT because I had an interest and had played with PC hardware as a hobby. My management and project management experience over 20 plus years in a variety of sectors gave me a major boost. However, I was in the position to expand my academic knowledge and I chose to do a part-time Masters through the Open University.
There are those that will denigrate the OU and they often ignore it on the grounds that it is not a "real" university; but the OU does provide some really good courses with a lot of value. I'd also highlight that these are very regularly updated so you get quite a lot more of the more up to date thinking.
You have to be really committed to the studies though; when you've done a full week of 8-10 hour days, it can be hard to switch your mind over to studying. The drop out rate is high because many just can't manage their time or find that it is just too hard. But that just means that when you do get the award, it means that much more. If nothing else, it can provide you with newer ideas.
I'd recommend it to anyone; and you don't have to drive yourself arse deep in debt just to get a piece of paper that most recruiters wouldn't know (or appreciate) from something knocked out on a copy of Photoshop.
The best advice you can give a teenager about what university and what course to apply for is "Don't. Not yet". They'd be better off taking two or three years out to figure out what it is that they really want to do, and ignoring any pressure from their family to "go to uni", as if merely attending was an aim in itself. I, unfortunately didn't take those years out, and instead ended up doing half of a course I hated (before dropping out), having chosen it on the foolish grounds that I didn't want to do anything else that my A-levels had prepared me for.
My own experience from when I've been recruiting geeks is to, in general, avoid people with CS degrees, unless they've also got plenty of real-world experience and so have had all the CS ideals and impracticalities beaten out of them by other employers and they've learned to compromise between purity and practicality. The best graduates to employ, I've found, have had degrees in the practical sciences (things like geology, not physics) or people with arts degrees - people with well-rounded educations and personalities, who will get on with their co-workers - who just have an interest in computar-maschinen.
And if you want to guarantee an interview with me, you'll be a theology graduate with stuff on github. Theology, despite being a load of bollocks, is a great discipline. If you can do well at it, it shows that you can think clearly and critically within arbitrary constraints imposed from outside which don't necessarily make sense. In other words, it means that you can turn a customer's half-arsed spec into something that works.
Taking a break is fine if you're doing something arty. But if you're going to do something involving proper maths, the only reason for taking a break is to have something involving more proper maths, not bum around Asia. Otherwise, you will have a horrible time getting back to speed.
Good article and I would broadly agree with the statements.
My advice would be to find a course with the broadest curriculum from high level to low level. It is not about the languages you learn but what you do with them. I would worry if the university only teach declarative languages and did not touch embedded. From what I see in CV's it appears many universities only seem to use Java nowadays and this is a big mistake.Just as important is learning how to work, manage and interact in teams(virtual as well as local). Also I would add a smattering of cyber security
Also remember that universities are only the start and don't most universities are 3 to 4 years behind the industry standard. Industrial placements are valuable, but so is life long learning
In my comp sci course (St Andrews, late 70s) we did have to write essays, one a term. Looking at their website today, I can see a link to an "essay guidance" handbook, so presumably writing essays is still part of the course.
I'm all for it. Not everyone needs to write essays in their professional life, but many us of need to write proposals, reports and other documentation. The ability to research and collate information, and then present it in a comprehensible and coherent manner, is vitally important, and writing essays certainly helped me understand how to do that.
Too often in the industry I have had to work with illiterates who can't form a sentence or communicate in any language other than C++.
But might just be the route I took.
Maths, physics, chemistry A levels first itme round - bit pants, so retook, but replaced chemistry with CS and got an A. This was in 84-85. Ended up at UEA on the CS course, and really enjoyed it. Also think mu A level CS stuiff was pretty interesting, coming from a BBC micro background.
Again, we see that all you need for Computing is Maths. And yet, almost without fail, the worst developers that I've come across have also been maths graduates.
I've had Maths specialists spray me with spittle for hours on end, telling me that the "next generation" of computer languages will write themselves, there's no point in learning development and that every application can and should be mathematically described. Even the simplest of optimisation / performance demonstrations between a mathematically described process and one that's been thought about failed to sway most of these spittle spreaders. It was almost a religion to many of them.
There are many things you need to be a good developer, a maths degree is far from the most important unless you're going to be specifically using maths in what you develop, in which case pray for the sanity of those that take over what you've developed if your maths is good but your coding skills are poor. Coding skills? Entirely separate from maths, are more about organisation and planning, logical awareness and experience and knowledge with a hearty dose of artistry thrown in than any degree course title.
I've never understood that incredible hard-on people seem to have for Maths as some necessity for Computer Science. I've been working as a programmer for close to 7 years and have yet to see a single math problem requiring more than just basic algebra. Sure Maths can help with logical thinking but far more often what is needed is basic understanding of human behaviour.
High flying ?
Nope, I don't recall making such a claim, if you'd read more of my articles you'd see that the ambition of the series is to get you guys a better career than mine. Judge my writing on whether it helps you think of ways to get ahead in your work and no other basis, f I fail on that I apologise.
Also a "high flying" recruiter of any kind is an interesting, if implausible idea.
I know something about the recruitment of entry level programmers because
a) I've been one
b) I've hired them
I dont understand why you bad mouth Dominic. He tries to give good advice to help us, and what does he get in return? Sure, he displays some attitude in his articles, but they are very amusing and interesting to read. And his articles gets lots of comments, that must mean something? Regarding attitude, there are several people here sharing the same trait (myself included), so we should not focus much on that. If you dont like his articles, dont read them. I think it is interesting to read about the job market in City. More on that, Dominic! :)
Back to topic. I think we must distinguish between comp sci and engineering. If you are doing bread and butter programming you are probably an engineer. If you are doing stuff which requires theoretical knowledge (like writing a compiler, designing new algos) you are more a comp sci guy, and you must have a solid math foundation to do that. If you dont need math in your work, you are into engineering. Real comp scis often have an PhD and can tackle difficult problems. Of course, some people dont need a PhD to do that, but many have.
An comp sci degree should focus heavily on math and theory (logic, discrete math, compiler theory, AI courses, algorithms, paradigms such as functional programming, prolog, database theory, etc). That stuff never gets out of time and is indispensible for a theorist(?). During all the years there should always be one programming course rolling so the students always have one foot in programming. The last years should have some limited coverage of some applied tech, see below. Maybe 2-3 short courses.
Regarding teaching programming, in my experience you should always start with learning basic concepts first. Be simple, there is no need to go through pointers at the first course. It is better to get used to programming and the flow of logic, with if, for, etc. So I strongly believe all programming courses should start with Python, the easiest language. Large parts of the Spotify backend is developed in Python. When people knows how to program and write small programs, only then they should start with C/C++. All large software projects should avoid C/C++ in courses, because the students need to see their project deployed in time, so use a simple language. Python is so small you can keep the entire language in your head (much like C) but there is no difficult syntax. It just works. See what Eric Raymond, ("Cathedral and the Bazaar", Linux hacker) writes about Python. Very enlightening.
Myself focused heavily on algorithms and discrete math in my first M.Sc. I read only theoretical stuff for one of the best mathematicians in the world. He was not a good teacher though, because he is a genius and everything is simple to him. We struggled hard with the concepts and had to solve problems in the exams, which where published in refereed math journals. One friend of mine, even got an assigment which was an open problem! My friend could not solve the problem, so he asked the professor about the solution, neither of them could solve it. So the professor emailed one of the experts in the field who said it was an open problem. The classes where very difficult and my university is one of the best in the field of algorithms and discrete math, and we regularly beat Stanford, MIT, Harvard, etc in programming contests.
My second degree is in applied math. So I switched field to algorithmic trading. I could not have done this switch if I where an engineer (then I would have built the systems). Solid theory allows you to switch fields. I always studied academic subjects (maths, algos) instead of techniques (C#, Java).
"I dont understand why you bad mouth Dominic. He tries to give good advice to help us, and what does he get in return?"
You don't? Well, it's because all of his articles are written in a tone that says "Almost all of you are complete idiots who will be unable to process even the simple advice I give in this article, and really I shouldn't be wasting my time with this shit, and by 'this shit', I do mean 'you' "
And that's not actually hysterically amusing, endearing, or symptomatic of anything except an inflated ego. Even if it is an affectation. It's not an interesting or entertaining affectation.
Does that help you understand?
Having worked in academic computing, you get to hear lots of funding stories about unis. Worst story I heard about Reading was way back in the '90s, when the local Microsoft campus was asked to make a donation and chose the local tech college instead! The story was that Reading Tech College were under pressure from the local LEA to join with Reading Uni but refused, which says a lot about how they perceived the Uni. IIRC, Dimitir Koveos and Dave Farmborough, two of the gents that wrote programs for the Atari ST, were lecturers at Reading Tech - a lot more impressive than Captain Cyborg!
I am afraid that this story is completely untrue. There is no basis in fact whatsoever. For the record, Reading CS has had a long and fruitful partnership with Microsoft (and Cisco and many others) which continues to this day. The reason why Reading Tech College did not partner with Reading Uni has got nothing whatsoever to do with CS or anything related, it was purely and simply local politics at its worst.
On a more general point, when I read this article I was tempted to say to myself "what a Grade A plonker" and move on. I only hope that his employers don't read it. Any headhunter with an attitude of such certainty as this must be completely useless. His ignorance is only exceeded by his arrogance.
... I was tempted to say to myself "what a Grade A plonker" and move on. I only hope that his employers don't read it. Any headhunter with an attitude of such certainty as this must be completely useless.
I'm afraid that it's you who are the plonker. Anyone in the real world knows that employers generally have their preferred universities, and that these can be pretty short lists. So it's probably not only his attitude, but also his employer's attitude, and indeed their employers' attitude.
In fact he said so later in the article: "...the very short list I have of UK universities that high-end employers mention by name".
But you'd probably arrived at your attitude of certainty by then.
Cant agree about the maths requirement part. I was pretty much forced into A level maths 25 years ago on the basis that it was a good background for a Computer Science degree - but its really not required. As long as you have a reasonable grasp on basic mathamatics that will see you through most areas. Complex computer science problems are always brocken down into small parts to solve and therefore analysis skills are much more relevent than higher level maths. I never used anything I'd learnt in A level maths during my degree and after 25 years in IT I still havent! pick another more intersting A level !
Most good CS courses will simply not take you without A Level maths, and you'd be mad to not take Further Maths on top. Neither course is particularly difficult - Maths + Further Maths together don't even total the content of the "old" (pre-AS/A2) Maths A level. If you don't take both you're going to have to spend a lot of time on your own playing catch up to learn the what/why/how of almost all the mathematical concepts you'll be using throughout the degree, particularly vectors and matrices. It's the difference between your first year Mathematics For Computer Science module being absolutely hard as nails and the easiest 90% you'll ever get.
Or put in better terms, it's the difference between spending 2 hours a week doing matrix manipulation by hand or spending 2 extra hours a week on the piss.
Plus Maths + Further Maths are 2 of only about 10 properly respected A Levels. They're absolute no-brainers for people wanting to go into a technical or scientific career.
I've seen students with nothing more than a GCSE take to discrete mathematics like a duck to water, while those with good A Levels have struggled, so I don't think a maths background guarantees success.
As for languages, I agree about C and C++, but they need to be taught in a very orthodox manner, as if teaching Pascal. Yes, I would expect a graduate job applicant to be able to explain why declaring variables up front is a good thing.
On my degree course, twenty years back, the silly buggers thought Modula 2 was a good idea. I didn't bother to put that one on my CV (at least a prospective employer has actually heard of Pascal).
Far too many people in university IT courses are there because "every job uses computers" or "i want to start the next facebook/apple " (it is always these two) despite having no knowledge or interest in anything to do with how it all works. This leads to a high drop out rate when they find out that building video games is a lot different to playing them or that no matter which way you go there will be math.
The language argument is moot so long as they teach programming methods. Java coders can move to C++ etc. In my final year i had to self lean enough C++ to do my project as the course was .Net based. The primary problem is in the marketing, Comp-Sci is seen as the nerdy degree for the basement dwelling types to argument over star wars whilst coding. Instead uni's are placing "video game design" "ethical hacking" etc. luring people in to then smack them with a big dollop of 3d math's and other technical things.
What you get from uni is not the piece of paper but a skill set to apply to the real world. Too many people see getting a 2:1 as a guarantee of a job (this is no different to the people who think Hollywood will be in touch when they pass film studies with no effort from their end) and put in the minimum hours and do not go outside the stuff handed too them. They then wonder why they are not chosen from the hundreds of other people who have done the exact same thing.
Those that are interested in the area will use the passion and curiosity to learn the subject, go into area's they like and ultimately get a job because they do not come off as some brain dead who coasted through. I have seen this from both sides having been part of a large IT companies grad scheme and then going on to interview for the same scheme. Some of the grad's there could not be any less interested and had all the excitement of someone awaiting a colonoscopy and this was after CV sift, phone interviews etc.
First up, who the hell puts an apostrophe in 'Maths' ?? (see "Alternatively ditch comp sci all together" above)
Second, being good at maths is not necessarily the prerequisite for being good at programming.
I failed maths entirely in high school, and yet have spent the last 15 years developing software for investment banks in London. I am actually fairly good at it despite having no grasp of calculus at all. This is because unlike mathematicians I think visually, and have an innate understanding of flows of logic and the relationships between objects and sets.
Being able to understand things as patterns I am often able to see through the bullshit and find the clean underlying logic - which tends to elude my mathematical colleagues, who seem to prefer trying to derive some nasty solution from the bullshit itself.
I'm currently 26. I started on a Computer Science degree when I was 18, but dropped out after the first year due to many issues - mainly depression, and the fact that I'm a practical learner, and there was precious little practical work on that course. Nevertheless, I taught myself programming and got a job in the industry anyway, working on ERP systems.
Is it worth finishing (or starting a new) degree? Given it'd be part time and so I'd be in my 30s when I finished. I'm conflicted - I feel that I'm good at what I do and that my past work speaks for itself, and so an expensive scrap of paper seems a bit pointless. Then again, so many people have that paper that your CV gets thrown out if you're the only one who doesn't.
I did Computing Science at what was North Staffs Poly. Best thing about the place was that the lecturers knew how things worked - not because they had read them in a book, but because many of them were part of making them happen in the first place. You failed the degree if you failed any programming assignment ... and it's funny how that makes everyone be good at it.
Ultimately, programming without a good view of how things work is like working in a factory, and so you will earn factory wages and should expect to be treated as factory fodder if that is how you are. Programming is not about a language, it is about being able to express abstract ideas in a particular notation ... nothing more, nothing less. I won't hire anyone who tells me that language A is "better" than language B, nor anyone who tells me that the only way to write a programme is to do it "object oriented" and use "scrum". I hire people who are good at understanding the problems that they are trying to solve, can relate those problems to the world around them, and are good at translating that into logical steps in a programme. Some people who are good at programming are good at maths, others are good at classical history. Requiring a maths A level does nothing to indicate that someone actually understands the problems they will need to solve.
Myself ? Not programmed personally (except for personal nerdy reasons) for many years, but have made a few million from building software teams who make great things happen. I'm still (and annoyingly so) good at debugging other people's programmes - and that shows that I'm still sharp enough and capable enough to have a point of view.
Best decision I made ? Going to do my degree at North Staffs instead of waiting a year and doing re-sits to go to Manchester.
In the end, it is not about the institution that anyone went to, more to do with the individual themselves. Normally within about 30 minutes you can spot a good candidates - trouble is that 90% of them are simply factory workers in disguise.
I did my CS degree at Aston Uni (92-96), which was one of the few that didn't require maths A-level. That was handy as I was rubbish at maths. Unfortunately for me, each year of the course had a "modeling and simulation" module, which was... maths. The lecturer for these courses was a relic from w-a-y back when it was a maths dept with some computers. So he'd spend ages on OHP slides on how to open a file on a Mac running MATLAB and then zip through maths stuff on the board missing out a few steps along the way. Fortunately for me the exam question format seemed to repeat every other year...
On more-or-less the first day we were told that the point of the programing module was not to specifically to learn a language, but to learn how to program. And the tool for this was Modula-2 (aka Son of Pascal). Ironically the lecturer said (and I quote) "..we could teach you something that's commercially viable like Ada, but we're not into that...". The next year the language of choice was Ada!
Though somewhere in the first few weeks I realised I wasn't as good a programmer as I thought I was. But I could do just about to enough to get by. By a stroke of luck my placement year job turned out to be being a sys admin, and so that's what I ended up doing.
Studied Pascal in school back in the 1980's, it was good, it was structured, it had procedures and it was compiled, it was better than the multiple dialects of BASIC of the day. I found my productivity increased dramatically doing the school programming projects.
But I have never used Pascal since. I have never come across it being used in my career. I've been coding for around 30 years.
Likewise, I taught myself Borland Turbo-Pascal in the '80's - which came in handy when I studied computer science at University, where different 1st/2nd year courses taught Turbo-Pascal on early PC's and VAX Pascal on the campus VAX minicomputers(*).
I was confused to find that the CompSci department had however ditched C the year I started in favour of this new fangled 'Modula2' language ... which I've not heard of before or since.
I dearly wish that I had got a good grounding in C back then - it would have opened doors which have remained stubbornly shut ever since. My knowledge of Pascal launched me into high level programming, and I remained stuck in PC hell as the VB and VBA jobs kept coming(**)
(*) Which were administered at the time, by Simon Travaglia, the BOFH himself.
(**) This is the price of not getting off your arse and _teaching yourself_ other languages and styles of programming.
If you can design and code in Pascal, moving on to C/C++ should not be too hard.
You will come across many technologies working in IT.
If you can program Windows Forms using its event driven model than you can program QT and Java AWT applets. ASP.Nets component orientated web development is not a huge difference either.
Programming the web with Java servlets or PHP requires a good knowledge of HTML and is a steep learning curve from Windows component orientated Forms development. You have to manually craft the HTML page and deal with Form input post-backs to the server.
As an IT developer learning is continuous, SQL, Netik web framework, Hibernate, the cloud. You will find each company is using some piece of technology that you are not familiar with and have to master quickly.
> If you can design and code in Pascal, moving on to C/C++ should not be too hard.
I'd agree wholeheartedly with that statement, at least where C is concerned. Our Comp Sci course at Exeter (great scrumpy BTW) spent the bulk of the first year programming module teaching us about classic stepwise refinement, top down analysis and illustrating how to code such things in Pascal (I'd previously learnt Pascal at school) with all the strongly typed variables & nicely setup data structures one would expect.
At the end of the first year they then proceeded to teach us C in a week, on the basis that having learnt about such wonders as functions, loops, data structures and I/O, applying that to another language was (in large part) about the differences in syntax and system libraries for doing useful things. It worked surprisingly well and when I graduated, my first development gig (I landed the job a day before graduating) was working on a CASE tool written in C using SQL under Windows.
C++ is quite different with respect to the object orientated approach it takes which did take some time to get my head around. I think it represents quite a different way of looking at things if you've started with something classic such as Pascal and/or C. I will say this, none of the commercial systems I've seen that were implemented in C++, did so to make what I'll call "good" use of the object orientated features.
Maths as already covered elsewhere was v. important. As the department didn't have its own lecturers, we had our Maths lectures with the other engineering & science students.
I viewed the course as a good introduction to a number of topics that were useful to build upon after graduation. I was lucky in so much as a school friend in the year ahead of me went to Exeter and took the same course. I was able to get the lowdown on how good/bad it was from him and also visited for a couple of days to get a better idea of the campus lifestyle etc.
The advice about hanging around the uni to get a feel for the buzz is great but impractical. I hung around my future university for a week in my gap yah and got a feel for the place (where I have now been for 6 years) much better than the open day facade.
If you want to know whats going on in our CS department hang around in the staff club on a friday evening where the sys admins drink!
IT Education in the UK is (for the most part) a joke. My IT "GCSE" as it was back then, consisted of a single hour and a half (I think) paper, that took me all of 20 minutes to finish and included such "in depth" questions as "Name two input devices commonly used with personal computers"......Please.
My university course of "Internet Technologies and Applications" was not that much better. Basically I was learning out of books published in 1971, the University had no budget for IT and much of the teaching staff had no real interest (bar one) and the "advance maths" section of the course was taught by an arrogant twit. His impression of teaching:
Him: "Today we are going to learn how to do this type of equation."
Him: "Here is the answer"
Me: "Sir, how did you get that answer?"
Him: "Weren't you listening? I'm not going through it again!"
Dropped out and got myself a job in IT and worked my way up, much better for my style of learning.
Don't take this the wrong way but I'm a little bit younger than some of you...I'm 28. I know that makes me a complete a child..but anyway..here is my two pence.
Been out of uni five years having studied Comp Sci. I had this pure (replace with academic or ignorant) idea of how things 'should be' done. Like I knew! Wisdom is realising you know a lot less than you think you do. Employment is good way of telling you this....nothing like being enlightened by someone who actually does know and the the character building embarrassment of looking like complete a tit.
My degree was enjoyable, however it never prepared me for dealing with the real world. Take a company's legacy; having to fix/update code that hasn't been written by you..maybe not in a language you've been taught against the backdrop where it was originally intended to solve a problem that was relevant 5 years ago and the business has moved on since then. Oh the ignorance of youth. I wish my letterers had been a bit more this is a pure way of developing, in the real world code it won't be this neat, it won't be fully commented and you'll be lucky if there is any documentation.
Employment - There are lots of references to mediocre programmers both in the comments and article. Honestly I would probably count myself as one of them. A confession, I haven't learnt C or C++, I don't know the ins and outs of a compiler. I have an idea of what it does in principle. To be honest the last time I actually needed to know was for the exam I took about compilers whilst at uni. It hasn't come up in my career once - yet. (Oh he's is one of those..I know my worth has just dropped through the floor...)
Now I'm going to mount bit of a defence... My role is of a developer not a programmer.
In my current role, I'm not working in team - Its just me for the time being. It has been. So my role is wider than just being able to knock out code like a robot on a production line for a supervisor. It would be nice occasionally if I did have someone telling me now just code me a class to do this but I think I'd get bored very quickly of being spoon fed. I do have to engage with end users quite a bit...Its a smallish company..I actually enjoy this.
The enjoyment I get from working in IT/development isn't coding, its problem solving. Now whether the problem involves code, some system issue or taking a user through something is to me of little consequence. Or whether its the creation of something new or the fixing of something existing. I will have a go at it, I won't stop until I've understood it and beaten it into submission.The weirder the problem the better, especially if it forces me out my comfort zone to learn something new.
In my admittedly limited experience, having a knowledge of C or C++ hasn't helped as much as being flexible and adaptive and willing to listen to and appreciate when someone "senior" like an architect speaks.They normally know what they're talking about.
If you can make things work rather than just point out all the things wrong with them then congratulations - start calling yourself an engineer! That doesn't sound mediocre to me. 'Mediocre' is thinking the grounding in the one language your course concentrated on (because they were given the compilers on a bung of free kit) will still put food on the table 10 or 20 years down the line. Or at the other end of Computer Science it's lecturing people on how things should be in the future whilst not delivering anything that works in the present.
And if you're looking for a job and the interviewer is asking esoteric but facile end-of-chapter-one comp.sci questions to test your 'knowledge and experience' then they deserve every mediocre programmer they get. Whereas you deserve better.
I largely agree with this article, but I think Employers needs to recalibrate their expectations. The salaries for software engineers are usually in the 20-30K band, similar to that of police men, taxi drivers, nurses etc.
A good example is the job adverts on this site, C++ programmer, 28k salary. And that is not for a grad, that will be someone with 3+ years experience on top of a 4 year degree.
I would argue the professionalism, skills and depth of knowledge required to be good software engineer are comparable to that of a surgeon or architect and the salaries should reflect that.
Oh and good luck getting a software engineering job once you reach 40.
It would be funny if it wasn't so tragic! I've spent some time coding C++ while working with a very experienced Java programmer who laughed at templates and now cant write a line of Java without generics. I've laughed at some coding techniques and then adopted them later on when I've realised how valuable they are. By the time you work out the fundamentals behind a language like C++ in terms of its use in the enterprise the you will be in your mid 30's. Computing does things for you automatically that mangers writing documents begging for someone else to do it for them can never achieve. When you get to 40 and can perform a complete system analysis and design in your head the chances of anyone letting you work in your chosen career are pretty slim. If you are lucky you may get promoted to management and get paid a fortune to try and explain to, and organise others to do, something you could have done yourself in code in 1/3rd the time you will spend in meetings trying to get agreement on what font to be used in the never to be finished project.
When you have learnt all there is to know about programming you will know almost everything there is about any logical organised system and how to put it together - but your not allowed to shoot your boss so just suck it up and enjoy the holidays.
I started university at the age of 41, gained a 1st and my first full-time computing job 3 years later (having had a 3 month contract in each summer break) and am currently in my 6th computing job where I have been for the last 8 years.
I agree that starting salaries are quite low compared to the holy grail of £500-an-hour contracting, but I Know employers that won't even look at you until you have 10 years industry experience, and I think that's about right.
After 3+ years you might well think that you know it all by now and can show everyone else how it's done. Trust me - you can't. The more you think you can, the more you can't, on the whole, IMHO.
Even after 13 years' industry programming I can still look back at code I wrote 5 years ago and say "What was I thinking??"
So you think its pointless for girls to get into IT for some pathetic and assumed opinions, regardless of whether they are true or not. To actively discourage women (as you appear to be doing) from entering into an IT career is short sighted, encourages falsely held opinions of women and is offensive.
We need to be encouraging more women into IT roles and actively seek out people who think like you do and fight against such sexist comments.
In American English, the more women enter a career, the less the average pay available. This has two phases:
1) when a woman is hired, she is paid less, thus bringing down the average
2) subsequently, the offered wage is reduced because women can be hired for that, so men in phase 2 will have to accept it.
This is entirely against the law, but exactly who is going to bell that cat?
I translate it like this:
"Women in general are piss poor at negotiating salaries and will take far lower offers than men which in turn will force the average wages in that particular field down." *
It may not be what the author meant but this is my experience and I'm starting to see it here in Sweden. Programmer salaries are slowly moving downwards at the same time as more women enter the field and when you ask them about their pay you weep silently, knowing what is happening.
* This was actually tested by a union in Iceland about 10 years ago, they posted an ad for a job and called everyone that applied in for an interview. During the interview everyone was asked what salary they requested and the male that asked the lowest was way above the average for the women. The woman that asked for the highest was slightly above the average male and the male that asked the highest wanted close to three times as much as female that had the lowest request.
I will print it out and frame it to present to my 8 year old son in about 8 or 9 years, by which time it will probably seem rather quaint (or perhaps sagacious, who knows?)... assuming I can convince him to fiddle around with the Raspberry Pi and Python without completely scaring him away from Comp Sci for life. (I've for a second son who's 5 as a backup option, who is scarily bright so I have more hope for that one to be honest!)
Sorry kids if you are reading this in 2024 after googling (do they still exist in 2024?) for daddy's old posts. Take it with a pinch of salt.
Best thing Comp Sci gives you is the ability to optimise your code and software, which Maths, Physics, IT or a BA won't give you.
Generally though, you should do a degree that gets you a job, especially if you are not sure what you want to do. That's why degrees such as Medicine, Dentistry, Radiography, Nursing, Midwifery, are good bets and most have no tuition fees to pay. Some even have a grant on top. Downside with health care is that although money may be good, see Midwife or Doctor starting on £30K+ after graduating, the effort per £ is much higher than Comp Sci jobs. Typically 12 hours shifts dealing with the nasty public.
Generic subjects and arts degrees, which are not from the top Unis, are pointless. Avoid.
At least on the topic of business computing degrees.
What you say is utter cobblers.
I did a business degree at a respected UK university. I am now a senior software engineer in a Tier 1 investment bank.
Our degree was harder than a straight comp science degree. Firstly it was a joint honours degree running across 2 faculties. We worked in C++ - those courses we shared with the computer science department. But in addition we learnt SQL. We had to learn to model a database, and then write a C++ client with embedded SQL. In addition we had to learn accountancy - I have exemptions from the institute of chartered accountants.
We did deep study of comparative development methodologies and we understood how UML was arrived at. But we also had to learn SSADM (OK so this degree was in the 90s).
It was a guy on our course who won a scholarship to go and work for Sun. Not the computer science department.
So your article is pretty inaccurate - youyshould actually go and look at what a cross faculty degree means and why it is much harder than a straight degree. My C++ project was graded under the same scheme as students who had purely focused on computers - they did not have to learn double entry book keeping. Or learn the complex calculus that we had to learn in our business finance course.
So I am sorry - you may be a headhunter but you must be a pretty bad one if you don't find out about what the actual content of business computing degrees is before basing your conjecture on them without actually having your facts straight.
0/10 for one of the poorest articles I've read on the register.
You haven't done badly, well done for you, but you're not in HFT are you ?
You're not in general trading either ,else you'd have said.
So that puts you in the B+ stream, nothing to be ashamed of but hardly a top job is it ?
As for me being a bad headhunter, that may indeed be true, maybe you ought to have googled my name before trying to look like you're first rate.
Boo-hoo for you, however you can't be as bright as you try to make out. If your degree was in the nineties then that's at least 13 years ago (even having exemptions from the institute of chartered accountants.I'm sure you can work that out) and you're only a senior software engineer, not a team leader or project manager?
>It was a guy on our course who won a scholarship to go and work for Sun
Is this how they taught you to write or did you have day release to attend the Ernie Wise school of applied script writing?
A proper OS should be able to take everything you try to throw at it and laugh at you. That's ESPECIALLY true for computer science students. People who are going to be computing professionals should not tolerate unstable crap. The Mac user had a point.
I installed Linux in college for similar reasons.
"... you’re just an arts grad who didn’t get laid"
Haha! And even today, 13 years into what I smilingly call my "career", I still maintain that if you haven't crashed your OS or at least your browser at least once today, you're not really trying.
My "Comp-Sci" degree was actually called "Applied Computing" and was basically computer games and 2D and 3D programming - a subject offered by precisely 2 Uni's at the time - Bradford, 200 miles away and MDX, a 10-minute cycle ride away. So that was a no-brainer. MDX was very much a bums-on-seats affair and I suspect the author of this article wouldn't even consider it to be third-tier, but it served me well in the end.
I learned, among other things, some good basic Java, C++, OO, how to hack example code and even how *not* to. More than one student learned the hard way that if you're going to copy another student's code, don't also copy their distinctive spelling mistakes.
I also learned you could scrape a 2/2 by cut n pasting most of "your work" from Google, and that anybody with even a 2/1 should be regarded with suspicion until proved otherwise.
I went to a middle tier University and learned the basics of Computer Engineering (hardware design) with a large dose of programming languages and computing theory. Also Discrete Math and Coding Theory. Loads of fun.
But, the university education was pretty much a background to what I learned in the jobs I had -- worked at the computing center on campus (which provided me with a mainframe account: unlimited computer time and storage) and at the local DEC plant over the summers, where I learned firsthand what product ion was and what real engineering documents looked like. I have never regretted those jobs. Learning the theory is fine, but go out and get yourself summer/night/weekend work (for free if you must) in the industry. That's where I learned the most.
I never went to uni, I taught myself c++ which I now apply in a finance environment using vb (once you know one language all the others are easy imho, work out limitations, syntax, use interwebs etc...), C++ isn't difficult, the most annoying part was pointers, not because they're difficult to understand but because every textbook told me they were difficult, which they are not... also OOP, why would you program any other way??? I really don't understand why they wouldn't want to teach these things? Am I missing something or is this just dumberer education?
"The question you must ask yourself is will your chosen course teach you the language the smart kids will learn?"
Surely you jest. You only expect the dumb ones to read your ElReg article? This implies, of course, that everyone that has read your drivel is drivel... the dumb kind. Perhaps you should have used a stable computing device (in '84? what was that? That was soooo long ago) to write essays (plural). Well, OK, that presumes that you truly aren't targeting the just the dumb ones; I'd better not look in the mirror in that latter case since my head might wrinkle up while deflating. And that would be embarrassing since the lone smart chick won't even look at me then, being assigned to bovine_herd->mindless_prune_head_guys.me (and that is in .rodata yet! Argh).
With places like Dev Bootcamp turning (highly motivated) high school grads into web developers with a near 90% job placement rate at a fraction of the time and money, a lot of people are beginning to shun a full four-year degree. It'll be interesting to see how universities respond. Hopefully by smartening up their cross-discipline programs for specialties like big data.
No question 4y degrees provide more depth and breadth. OTOH, it's no guarantee of employability. How many ill-prepared noobs have you turned away that just spent 4+ years and a shit-ton of money on a full degree? How many coworkers do you have that don't even have one, but instead busted their ass? I'm seeing more and more.
>I’ve met a valid sample of City University graduates and never met one who wasn’t competent,
Aw shucks, your'e making me blush. Hang on though, you haven't met me yet.
I seem to recall that City University had one of the highest percentages of graduates going into gainful employment, might have changed. I also think they got rid of their physics department so it should make my degree more valuable. It wouldn't surprise me as when I was there in the early eighties there were only 15 students and that was before the surge to take easy artsy degrees.
And as a recent graduate of a Computer Games Technology degree (LJMU, 2:2 with honours, I reckon I could do better), I've managed to get quite conversant with C and C++. Dabbled in C# a bit, but as I didn't take the Console Programming module and go for the Xbox, it wasn't a major part of the degree. I've been playing with scripting languages for years, but C and C++ always seemed a bit scary, at least until I started using it properly and going "holy shit, that's fast." Never looked back since!
I'll say it's not a course for the faint-hearted (or mathematically ill-disposed). The "Advanced Computer Graphics" core module is a good example as it's a long slog through the underlying mathematics that make 3D worlds possible. You'll learn about shaders, be given a good start on the Autodesk Creative Suite, and be expected to write long essays on the difference between fixed and programmable pipelines. Add Computer Vision and AI for a major (filter matrices, recognition and search algorithms, oh joy) and Mainframe Computing (I can do JCL, I can) for a minor and you can't accuse me of picking stuff because it looks easy.
The first year was an "intro to" course on a wide range of computer science-related subjects. One module went into boolean logic and gate-level stuff, and culminated in making a logic simulator spit your student ID digits out in sequence on a 7 segment display, for example. There were sections on computer security and forensics, databases, and of course computer graphics. The idea being you could switch to any of the computer science-related subjects before the end of the first year, because everyone was being taught the same stuff up to that point.
As for drop-outs? Well, one of the first things everyone was told by one of the more droll professors is that he expected to see half the students in the school of mathematics and computer science to not make it to the final year. I'd say he was about right.
My degree is in Electrical Engineering, where things get done. Sure, it has lots of math involved, and I did get to write a program or two to solve some lab work, but the best part was that I was employed at a university "up the street" that I wanted to get into, but didn't have the grades to do so. It yielded an interesting mix of things as I interacted quite a bit with graduate engineers who were actually doing things (and solving problems) using a computer. As an added bonus, they paid me some money to do it. I ended up being the BOFH for a mid-sized 32 bit computer for a few years (I did PFY work before that) and was able to actually diagnose problems with the hardware and develop interfaces for stuff they had lying around, along with the software to make them play.
But that was the late 60's and early 70's when Fortran was king, and to do anything special you used assembler writing subroutines for the other Fortran jockeys you had in the shop. Later on I did learn C and true to form discovered that one can write Fortran in any language.
But... if you really want an understanding of computer languages, try Lisp. While I haven't used it, the assembler I worked with used lists for lots of its processing, and you could do lots of things with it. Another language to try is Forth. Study how it works, and see how it is implemented at the machine level. On an 8 bit micro (which you should design/build yourself) you get to know LOTS of details that will serve you well in later life.
As for C++, I compare the books written by the progenitors of the languages. The book The C language and Bjarne's book about C++ differ by about a ratio of 4 in the thickness of the book. While not a very good metric, go and look at the examples. In K&R the examples are complete and well thought out. Bjarne's book yields examples that often finish up with "// ...". This makes the language more difficult to understand and reveals that C++ is a moving target that is (probably) more complicated than it needs to be (kitchen sink?).
So, while you might not need it, an understanding of low level constructs can prove to be very insightful. Learn some. Make some lights blink, read some buttons, solder a bit, experiment. It will prove useful.
" If you fully understand your specialty you can weather the storms that will hit your career."
Indeed in truth! I am an old fart software engineer, with 30+ years experience (and 65 this past January). I was laid off my position as principal engineer at a major software company at the end of 2005, did some consulting until the end of 2011, and because of my experience, knowledge, and capabilities, was hired 18 months ago as principal performance engineer for a tier-one corporation to design/develop performance gathering and analytic tools to help in the management of our world-wide data centers comprising thousands of servers. FWIW, "consulting" is a euphemism for "gainfully unemployed"... :-)
This post has been deleted by its author
It's definitely worth choosing a more specialised Computing degree rather than just ‘Computer Science’. I studied a Computer Networking degree that had programming modules (Java) as well as networking and general IT theory. But most importantly I based my final decision on the fact the University had Labs with physical rack mounted equipment for us to play with and there was a lot of practical involved, in addition to writing essays.
I also did a sandwich course so when I went to do my work placement in the industry doing IT Support, I was working alongside two other students who were studying Computer Science. They had never done things like using Active Directory, joining workstations to a domain or any basic troubleshooting before, which seemed a bit strange to me. I was told by my manager at the time (about 3 years ago now) that this is not uncommon.
I guess the point I’m trying to make is whatever Computer Science course you do, just make sure there is practical work involved (doing a years work placement is even better) rather than spending 3-4 years reading books and writing essays. It will give you a head start when job hunting after you graduate!
guess I'm not getting any decent programmer jobs after dropping out of the Open University, love to go back, but not got the cash(let alone enough for a full time degree)
And I'll go along with the maths comments, you dont need A level maths to do Comp.Sci O level is quite good enough thank you.
But then I dont rate anyone as a decent comp.sci gradute unless they've mastered "Concurrent systems.: Operating systems, databases and distributed computing" by Jean Bacon (hopefully 2nd edition) a fine tome on howto analyse, design, and test multi-threaded and multi-cpu programming. as well as being the best insomnia cure ever invented.
Anyway.. must dash.. need to be up in the morning to get a robot arm synchronised with a machine tool so it does'nt put the grabber through the window again... ahh real world programming
When I went to university there were very few CS courses available, and those that did exist were really offshoots of the relevant maths department. This was also in the days before the likes of the ZX80 and ZX81 appeared, so there wasn't the tradition of hobby computing. I did use some newly-available TTL logic chips in a design and build of an awesome guitar effects pedal, but that's as far as it went.
Armed with a science degree I started out with COBOL and Assembler on an ICL mainframe. Retired a couple of years ago from being a consultant database specialist on...... IBM mainframe (still using COBOL and Assembler!). All the interesting newer stuff I did as a hobby (and made a few bob out of it).
The moral of this story, if there is one, is that in any area of IT there is a wealth of depth and knowledge that you can learn, and that will make you marketable, and earn more money as you progress. Probably best not to plump for the mainframe if you're starting out now though. However zLinux is promising.
I'll see that and raise you an entire year's worth of requirements in Prolog.
OTOH, this same degree required a course in statistical analysis, because it was being offered by an engineering department and statistics was a blanket requirement. It's been way more useful to me than the year of calculus everyone makes you take.
is to demonstrate one's motivation, persistence, intelligence and ability to learn. To a lesser extent it confers a limited set of skills that may or may not be of transient relevance early in one's career. Requiring the possession of a degree is a handy way of reducing the number of job applicants to a manageable level.
What a degree does not do is obviate the necessity to continually study new developments so as to remain useful and therefore employable.
I majored in Theoretical Physics*, yet spent most of my career designing and coding real time embedded software for data communications devices and things that go bang, using mostly C, C++ and assembly language. The number of times I had to use post High School mathematics? Zero.
*Included brief exposure to Fortran, but no other languages
"The purpose of a degree is to demonstrate one's motivation, persistence, intelligence and ability to learn."
So how do you explain the astonishingly low number of languages graduates hired to be chemical engineers? The requirements for hires straight out of university for chemical engineers always make it clear that they want people with chemistry or chemical engineering degrees.
Replace "chemical engineers" for a bazillion other scientific and technical disciplines. It's not just chemical engineering that seems to demand actual knowledge as well as (and indeed, sometimes instead of) "motivation, persistence, intelligence and ability to learn."
From a Canadian perspective:
1. In CS and IT, university name doesn't matter much, unless it is Waterloo. So pick your university based on its actual performance in the field you are studying.
2. Consider studying engineering. It is typically more difficult, but you'll learn deeper theory. Theory lasts more decades than practical.
3. Consider studying business, and picking up programming at night school after you graduate.
4. If you're female you'll likely earn more than males and be far less likely to be out of work. However if you enter the business world you'll face a lot of pressure to leave IT and go into management. I guess affirmative action is taken more seriously in Canada than the UK.
5. Top management, CIOs, usually come from sales, but sometimes they come from finance or engineering. If you want to be a CIO, go into sales. Sales of equipment and of people is where the money is.
I've been recruiting software engineers on and off for 15 years. During that time the skill sets coming through and what we've heard from university graduates has changed significantly, and detrimentally to the employability of new graduates.
A good core working knowledge of C is absolutely vital for almost every programming job, and an applicant with C or C++ on their résumé will always float to the top over C sharp, java, ruby, python etc.
Programming in C requires serious rigour; and specifically rigour of thought, not just discipline. If you can program in C then you are already writing better code in other languages than those who learned to program using those languages. Note:- you may not have more experience, but a good C engineer is armed with the rigour to produce good quality code even in a language they recognise they are less experienced in.
When I hear that another university is dropping C or C++, my heart sinks and I worry for their students.
To summarise: great C coders are in short supply, and this situation has got much worse in the last five years. If you want to guarantee you'll be employed and command a great salary (and some of my staff earned more than I did), become great at C coding, It will *always be required* and will make you a better coder. Universities who drop it are doing their student a great disservice.
It's been a long time since I've read such a complete pile of out and out twaddle.
It beggars belief that anyone can state "A good core working knowledge of C is absolutely vital for almost every programming job"
Why? What does understanding C/C++ have to do with being able to write good code?
Good code structure is language independent. C/C++ is an overrated fad that is well past its use by date.
To summarise: You're wrong.
"Why? What does understanding C/C++ have to do with being able to write good code?"
It's a strongly-correlated signal. If you understand C and/or C++, you must have a solid understanding of the machine model. If you have a solid understanding of the machine model, you will be a better programmer than those who do not. It's not necessary to be good with C to have that understanding, but it's remarkably tricky to be good with C and not have that understanding.
If you want to be a programmer.
AS an IT employer, I found them all arrogant useless and pedantic, forever arguing about the right elegant way, and the correct language, instead of actually analysing the problem, writing the spec and coding it good enough to work.
Engineering chemistry or physics are where some of the best coders I have known come from. Electronics is the step below machine code, and they are damned good low level coders. Physicists understand models and they make decent enough purveyors of 'technical code'
Quite why chemists are as good as they are, I do not know, but two chemistry GIRLS turned into really good coders. I think chemistry involves a lot of boring tedious attention to detail and documentation, and that's what a lot of coding is all about.
Of course software engineering is the complete discipline: but who offers courses in it?
Too much academic baggage is disguised as the rigour of thinking! When I did my HNC aged 40 I was asked to write essays about the different types of programming languages - furnctional, OO etc. Why - 'for academic rigour' ! Did that teach me to be a better coder - my @rse! But hey, my English and Philosophy degree really helped (as did my A level Maths, Eng & Physics) Flow charts & pseudo code - piece of piss after attending philosophical logic seminars pissed &| stoned. And Eng Lit gave me creative bullshit skills (and wrist ache from writing everything long hand - this was the 80s - nary a PC in sight!)
Doing a 12 hour, one day a week, day release HNC whilst still working full time proved I could still learn, focus and could still work till the wee small hours! My C++ skills are crap - but I'm a sysadmin / network tech - not a coder! I know a little bit about lots - usually just enough just to keep things running.
You've got to learn the theory - so you understand the practice - how else can you diagnose a problem, say with a web site, if you don't know the OSI model? If we don't teach theory properly and then rigourously test its application we are training people to become rapidly obsolete. Maybe that's fine for our commercialised universities - but bad news for society and the student!
I have been fiddling with computers but more accurately with projects that involve computers for 38 years. I’ve made a ton of money and still have a great life. But very early on I recognized the ability to manage those awkward buggers called programmers and technicians was the skill required. And over the years the number of them and the type of Asperger they exhibit has changed, still getting them to work to a business perspective and to achieve business related goals is the way to make the dollar. And if anyone says that isn’t the goal , get to the wrong side of 60 as I am and you want to carry on racing your historic Porsche and maintain you city and country locations, it bloody well is.
My posts on El Reg are tainted with some dislike of freetards, not because Linux is terrible, it’s just the zealots who surround it have been in my direct experience the worst at understanding there is a business imperative in all we do in IT. And mostly they are CompSci degree types.
My response all the years ago when the BBC micro came out and I was cornered at dinner parties – or less salubrious places – by some anxious mom who wanted to know how to ensure little Jonny’s career/degree would be stellar and she asked me, would the BBC be useful, my answer then, as now, is no. Go and send him to do something he is passionate about, let him succeed and then he will discover computing if he needs, any how computing will have changed beyond recognition by the time he leaves drunk, STD’d to the hilt and in debt. I reckon I was Delphic.
Get a good degree in something that has someting in human interaction, first
What I do now is about big projects and any programming is done outside of this country. Sorry I would not bring anything back to these shores, you are all too fucking difficult to control, slow and in the wrong time zone.
" worst at understanding there is a business imperative in all we do in IT."
I figure "better, faster, cheaper" would be a quite large part of that imperative? Careful, them's freetard words, them are.
I think RBS have some quite valuable experience of outsourcing all of their coding skills overseas too. So do their customers.
Of course, you've already decided you'd never hire me, as I'm not Indian enough I guess, and I want more than 50p a day.
That'll me I am bound
But I still contend that business understanding and what I call in a poor generalisation, softskills, is what is required to make a good living.
If you want to do research or write a new complier - thats a different matter.
"Of course, you've already decided you'd never hire me, as I'm not Indian enough I guess, and I want more than 50p a day."
Nothing to do with funding, nor being Indian: neither was mentioned in my post. None is done in India.
I'm the AC from above, who wants more than 50p a day.
You're talking to someone with 3 years of front-line customer service, sales and tech support experience and 18 months (stopped only by a broken ankle) of experience working for a parcel firm in a warehouse so bloody busy that it should serve on its own as credentials as far as my work ethic goes. That's on top of the various other work I've done. The Bsc(hons) came after that.
I could be in your country, or I could be a foreigner to you. Does it matter?
I am one of these weird people who actually likes to write docs. I have an IT degree, and in a forty-hour week, we had one hour of Communicative Aspects. Like any other teacher, the lady teaching it said that this, THIS, was the most important thing you'll learn. And what did we learn? Well, we learnt that documents have structure. We learnt how to cite sources. We learnt how to order our thoughts, and the two most important questions that you ask when putting fingers to keyboard. (1) WHY am I writing this? (2) WHO am I writing this for? These questions apply equally to a network design for a multi-national enterprise and a piece of Harry/Snape slashfic.
If your answer to (1) is "Because someone said I had to", Your document is going to suck, and waste my time. Before you even open up a word processor, THINK. A good answer here is: Make sure that my friends and colleagues can build the thing that I have just dreamt up.
Which brings us to (2). Most documents I see every day, if they are not just there to tick the "Documentation" box, are written for fucking telepaths. No, I do not know what connection there is between box A and box B, because you just thought that up, and I don't WANT to read your sordid little mind, or make assumptions. The biggest sin you can commit in writing is assume that people already something. Yes, your colleagues will know what an IP address is. That's why we hire people with degrees. No, I do not know what brilliant trick you just pulled with the netmasks to make packets go to America.
The art of writing documents is heavily undervalued in IT, and because of this, I regularly see documents in my inbox that are complete drivel, and I would literally be better off without them. I don't even care about the odd spelling mistake, as long as it's not in a command I have to execute. I do care that all the information I need is there, and NOT hidden in some throwaway line in the introduction, but properly labelled, as part of a coherent set of thoughts that I can follow.
So yeah. Essays. Documents. Designs. Learn them. Love them.
I am studying software development with the Open Uni which is pretty much focused on Java and Python. Would anyone say it is worth teaching myself C++ or would employers only be interested if I had academic proof of my ability in this language? I have to admit I am reluctant to take the advice of recruitment consultants on board as many times in my previous career they have spoken of doom and gloom which just didn't represent the truth.
One highlight was being told I would likely never get a job as a Broker in the City and that I should go back and improve my GCSE in maths (despite a 2.1 in economics, granted BA). I received a call a few days later and was employed within a few weeks...
Not always the case I'm sure, but recruiters often speak rubbish.
Python is a great language to learn, it is used all over and has a decent job market exposure. It depends what kind of coding you want to go into, Python is pretty flexible as it is used on the web a lot aswell if that was your area of interest.
The way I see it - if you have time to teach yourself a language and are confident you can do it well - then go ahead - get some code examples of stuff on GitHub and use that as part of your application process.
If you are looking to get involved in Web stuff - PHP is still the best for employability.
There is no such thing as a good Computer Science degree, they're like Philosophy Degrees, they teach nothing of value whatsoever.
You mention that A-Levels math is useful, rubbish, there's nothing useful in that for a Computer Science degree, I did a load of maths before doing mine, and it was all utter useless, can you add, subtract, multiply and divide? Then you're fine. Knowing the mod operation is helpful too. All the batshit crazy stuff you get taught at A-Level, or in the catch up modules I was forced to do is as useless as a chocolate teapot in a volcano.
The A-Level computing course has one advantage over the A-Level maths course, it's a lot more fun, in terms of does either set you up for the 3 years of wasted time that is a Computer Science degree, not even slightly.
Equally does a Computer Science degree teach you to be effective outside of a research position in the university that taught it, god no, I learnt my programming and all my practical skills working before, during and after my degree. My degree gave me a nice piece of paper that let me beat other people to a job, did it help me once I was there, god no.
And yet the number of programmers I run into who need help working out the distance between two points on a screen is astonishing.
You don't need maths in that you often don't need to be able to handle calculus and geometry and so on in order to write code (often you _do_, if you're writing graphics or serious number crunching and that, but there are lots of programs to write that don't need mathematical knowledge).
What you DO need is the ability to think coherently and logically about problems in such a way that the solution you develop lends itself to expression in a given notation. Mathematics is a subject that teaches this skill. It's a strongly-correlated signal. It's possible to be a good programmer with no mathematical ability at all, of course it is; but it's remarkably hard to be a solid mathematician and not be able to think about problems in such a way that you'd make a good programmer.
That's the link. Programming is not bashing on a keyboard. It's thinking about problem solving in a way that lends itself to a given expression, which is also what maths is.
NOTE: this is all based on the state of the IT industry in my neck of the wood. I cannot speak for the rest of the world.
I have been in the industry and here's my view (coloured, I'm sure, by the intervening years and too much alcohol every so often).
(1) Our intake was roughly 200 people in the first semester. A good 3rd were women. By second semester, we were down to 100 students with, maybe, 1/10th women. By second year, there were 20 students in a class, but the men/women ratio still held. From memory, these numbers and ratios seemed to be constant for the rest of the degree.
(2) There were two major institutions in town at the time (there are more now) - one taught you the under-the-hood of computer programming (how computers work, the whys and wherefores of stacks, etc..) as well as such wonderful headache-inducing stuff like formal QA proofs of algorithms ("Z" anyone?). The other institution taught you to program in Java (and a few other languages of the day). Needless to say, when we hit the workforce the percentage of employees from the second institution vastly outnumbered that of the first. Now though, as I have progressed up the ladder, the percentages seem to be reversed at my level. make of that what you will.
I'd like to sing the praises of my Alma Mater, but last time I went back for a refresh course I subscribed to what I *thought* was Introduction to "Programming In Java", fully expecting to be taught the ins-and-outs of Java. What I got was Introduction to Programming (In Java). I have added quotes and brackets to make my point - there were none in the course title. It was being offered as a Masters-level course and it was awful. How bad? The *lecturer* could not answer when asked why Java arrays started at 0 rather than 1 (hint: most people at the time Java was introduced programmed in C). <sigh>
(3) Essays. Oh <deity> by all means YES! You are going to have to write reports and interact with users and business people. LEARN TO COMMUNICATE! When I did my degree, one course each semester had to be picked from outside the Science stream. Made sense to me - it taught us to think beyond our programming tasks (I picked French one semester because, well, I was a native French speaker and the only thing they asked me was if I had done French in high-school). Mind you, I always though it was a damn shame nobody from outside the IT stream was forced to take even minimal computing classes... might have saved me from wanting to strangle many an Arts Major who couldn't operate a mouse without f-ing it up. (YES, you DO need all of these cables plugged in. NO, I don't CARE if they mess up the aesthetics of your desk.)
(4) Languages. I'd have to agree with the article. C, C++ are a good bet (more C than C++, but that's my opinion only). If you aren't doing C++, Java is a good substitute to introduce the concepts of OO programming. COBOL is nice if you want to work for the older banking firms, especially if combined with one or more of the others. But for <deity-of-choice>'s sake, unless you are planning on writing websites for the rest of your days, do *not* specialise in PHP, Python, et al. Learn them, by all means, but be aware that most places with n-tier architecture (quite a lot of medium-to-large businesses) do not use these languages beyond their web presences - the rest of the time, the back-end is written in so-called "legacy" languages.
I'd include dotNET in the languages to learn, but MS seems hell-bent on having you re-write your code in a different language every few years if you want it supported - compared to that, most C/C++ programs written back when I graduated can still compile *and run* on today's compilers/hardware... although some of the UI looks damn awful by now. ^_^
For comparison, the place I work at has a dotNET front-end on Windows, with C back-end and a large-scale SQL database running on a *NIX variant, as well as a web presence for smaller clients and Web Services for larger clients to use.
From my experience, you are not the average head hunter. I could write an even more scathing article about the industry you are working in, given most head hunters don't understand the technology they are placing people for. Pattern matching resumes is just the norm these days, and stacking the right key words is a necessary skill to get past most of the head hunters gate keeping the first round interviews these days.
With the exception of your points around essay writing, which is a skill set that is invaluable for a geek to be able to get rewarded for their work - I loved reading this article. I'm trying to fill 16 positions for Comp Sci grads and just struggle to find anyone who actually understands anything other the surface level syntax of a language.
Interesting stuff. I made pretty much all the mistakes identified. Didn't do A-Level Maths, did Computing instead, because I wasn't planning to go to Uni at the time. Halfway through my A-Levels, decided to go to Uni but found most of them required A-Level Maths. So ended up at Newcastle Uni, which didn't require A-Level Maths, but instead hit me with a deluge of Maths in the first year, which completely overwhelmed me and I dropped out after year 1, back in the mid 90's.
So really to get the best out of this article, you need to be a 16 year old making your A-Level selections. I wonder how many 16 year olds, or indeed 18 year olds will read this article? A handful is my guess.
To support what someone else said above about HNCs, I fortunately landed on my feet and after dropping out did an HNC in Computing. Far more suitable for me and it led to a Software Apprenticeship with a telco, where I did an HND in Software Engineering on day release. Ultimately I've done alright, although I'm not a developer. A degree isn't for everyone, and despite the subtext of the article and the majority of the comments, there are areas of IT other than development, you know. Some may see development in HFT as the pinnacle, but a code monkey in HFT is still just a code monkey. ;)
Although unfortunately the ones that are often used IRL are often the worst to learn fundamentals on. I did Computer Science at Uni and we learnt Ada as the main language - realising then that were very few Ada jobs on the market we asked our professor why we were learning it - his answer - "Because it will force you to code correctly" - He was right.
Ada is a ridiculously strict language - it wasn't fun to code in but as a teaching language it gave us a decent grounding in programming (and distributed and realtime systems) - However from a purely Job oriented point of view - it was somewhat harder to come out of Uni and get a job, all of my friends that are programming now are doing so in Languages they have basically had to teach themselves, we did touch on Java at school but not in any capacity where we would have been useful in the real world - even at Junior level - there was no talk of C++.
I think Python would be a decent language to teach at Uni nowadays (as an interpreted language) and has a lot of scope in the real world and something like C++ for a compiled language.
I can see there's a division of opinion over the maths requirement. It obviously depends on what area of computing you want to specialise in. For most jobbing programmers they won't need an awful lot of complex maths skills.
When I was at Cardiff University they split us up into three bands based on our maths experience: those with no A-level maths, those with lower than a C grade, and those with C and above (IIRC). Being in the top band awarded you a position on the MATLAB course (hooray!).
I also went on to do a Computer Graphics module which was extremely maths intensive. Certain areas of computing, computer graphics/vision being one of them, you will definitely struggle without a really sound foundation of mathematics, in others you'll get by just fine.
"For most jobbing programmers they won't need an awful lot of complex maths skills."
However, the ability to think coherently and logically about values and quantities, and to construct extended solution in a given notation, are needed. Maths is the subject at school that teaches this ability best. You don't need maths to be a good programmer; you need to be able to think in a way that your solution lends itself to a programmable expression. There are, of course, other ways to learn this skill. Maths is the way most accessible to your standard per-university student, and being good at maths (i.e. able to think with it) is strongly correlated with being able to programme.
I also went on to do a Computer Graphics module which was extremely maths intensive.
I'll second that. The graphics module we were on was more about the math and less about the tools used to to it. Case in point, we were asked to sketch out the algorithms in Matlab.
And Matlab can go love a duck. I don't care if it can keep satellites oriented the right way. It's an obtuse piece of shit that makes the Obfuscated C Contest look easy, and probably only holds its niche market (and niche market prices) because nobody has bothered making anything better. My opinion, of course.
Graduated in CS(Games Tech) from NTU in 2010. Can safely say it was a pointless exercise in powerpoint and business speak
C++ was mandatory programming but can only say I learnt to truly program after finishing uni and being chucked into the deep end of the real world. Would certainly class myself as mediocre and only achieve what I have from being a culture fit!
I'm only a couple of years out of my degree - CS at Manchester. Academically it was a fantastic degree, providing a very broad base and the opportunity for specialisation in relevant areas. While the academics were great, the staff were not. You could fit most of them into two categories. Classic neck-bearded FOSS-preaching crusties who hadn't seen the light of day for fifteen years (looking at you, Latham) and absolute dinosaurs who really couldn't care less about the undergraduates and hadn't changed the way their course was taught since the mid 80s.
This made motivation difficult. Unless you were very lucky and got one of the really good staff, you were stuck with someone more concerned about preaching why your way of doing things was Wrong, or someone who just delivered their material then disappeared for six weeks. Throw in Manchester's legendarily poor pastoral support and the result is a prodigious attrition rate.
So the best advice you can give a prospective student of today is investigate the staff and the support systems. Really press that "how many people drop out" question, ask for the statistics - every university has them and chase things up online. If I were doing it all over again I'd have picked a less rigorous uni in return for a more pleasant atmosphere every day of the week.
Actually, If I were doing it all again, I'd probably go the higher apprenticeship route. Sure you don't get the name of a prestigious university on your piece of paper, but you get 4-5 years paid work at a pseudo-graduate level with a good company instead. And no debt. And a shedload of certs.