Computer Science degree

1) Is your code commented (yes including all the 'amazingly simple' buts) and does it apply to inter-company and industry wide standards?
2) Do you use all the functions of the language, or not bother with ones you don't understand because you can program around them and it kinda works so who cares what the 'xxxx' function does you don't need it?!
3) Do you use variables/routines/filenames called things like 'Banana' and 'Rhubarb' or do you follow a pre-defined naming convention (hopefully corporate wide convention)?
4) Do you modularise (or library) your code as much as possible, so other people can use bits of it later on if they need to, called from THEIR code?
5) Do you document what you do especially if you wander off spec for some crazy reason (because you think you've thought of a better way than the analyst thought up!!!! Aargh bane of my life when developers do this!)
6) Can you decisively ask a business analyst what exactly he wants when he's written a vague spec. Can you stop assuming things (Don't ever assume anything! God this has cost my client a lot of money!)
7) Can you take criticism of your code OK, or take it as a personal insult so defend yourself loudly and be in a snotty mood with the tester for 2 days?
8) Does your code 'compile with warnings, but who cares about warnings?'. Does it god forbid have memory leaks? Does it use compiler functions that are due to be phased out on the next release of the compiler?
9) Does your code work on multiple platforms, or 'who knows, but it works on my platform' - 'Oh , they're still using Windows '95 up in Grimsby branch and you've spent £4000 rolling it out to there? Oh god no it won't work I didn't think of that)
10) Do you have good change control systems? Do you use pre-existing libraries to do stuff or 'can't be bothered to find them, I'll just program it again'.
11) Can other people take on your half finished project easily, knowing where all the stuff is etc. if you get hit by a bus? Don't tell me they're starting from scratch because it's all in wierd places on your C-drive?
12) In 16 years when the spec has been lost, can someone easily reverse engineer your code and figure out easily what it does and why?
13) Can you happily use an old cruddy version of compiler/interpreter/PC because your client is too ***** to get you bleeding edge tools?
14) Can you NEVER exclusively lock tables, and always think that other programs may be after the same resource you are (normally table) so make your program work 'nicely' with whatever else may be running (even stuff that hasn't been programmed yet)
15) Can you call other modules easily even if they are programmed in a different language?



That was a brainstorm by the way!
 
Last edited:
So.... how do I work out if I'm a "good" programmer rather than a standard programmer ? How would you define "good" code ?

You've got me wondering!

I personally think the difference is your level of understanding, any monkey can learn parrot fashion, it's down to whether you trully understand exactly what you are doing.
 
Well OK, if you HAVE to lock one, make it for less than 2 seconds ..

Is that 2 seconds on a 100MB table or a 100GB table, running on an Atom or a Xeon?

I think you mean lock only when necessary and for as little time as absolutely needed.

An example may be locking when you open a screen for editing a schema and unlocking when you close it. Really bad practise but easier than checking nothing has changed since you opened it when you do finally come to make any changes.
 
My litmus test of a decent programmer is if they use a revision control system, even for their own, small projects.

After that, things like making sure any systems they design are as loosly coupled as possible - tight coupling kills projects if you need to refactor and/or add new features.

As for locking tables, certain algorithms require it - MPTT being one (a somewhat efficient way of storing a tree structure in a relational database), many people when implementing it think they can get away with simply using transactions but you run into all sorts of race conditions and before long you have a corrupt tree. By locking the table on an operation that modifies the tree you can guarantee that this corruption cannot happen.

edit: Also a great programmer is constantly learning, not content with using the knowledge they have, they strive for new knowledge that will enable them to solve problems in better ways.
 
Last edited:
edit: Also a great programmer is constantly learning, not content with using the knowledge they have, they strive for new knowledge that will enable them to solve problems in better ways.

Got to say this is a key one for me.
Ask someone about the last programming book/article/blog they read and see what they come up with.

Also, in the words of Martin Fowler:
Any fool can write code that a computer can understand. Good programmers write code that humans can understand.
 

None of those are signs of a good programmer. None.

What I look for:

1. Unit tests, proper BDD style unit tests (given, when, then) which describe the behaviour expected. There's no need for an external specification/use case/user story to rely on when the unit test describes the expected behaviour of the code.
2. Minimal comments, if I can't understand the code without comments, then it's badly written code.
3. Most if not all of the SOLID principles adhered to.
4. Use of design patterns where appropriate.
5. some knowledge of agile programming techniques, pair programming, etc.
6. some knowledge of agile/lean/kanban/scrum project management techniques.
7. some elegance to the code. Hard to define, you know it when you see it.

The majority of your list is the utter basics and mechanics that any idiot with a "learn to code c# in 24 hours" should be able to do.

You're paid that much and that's what you think makes a decent programmer?

: boggle :

I'm in the wrong industry/company...

...well I would be if I was earning less than you - which I'm not.

:)
 
But C++ is very quickly losing its mojo. Yes job market is still thriving for it and it always will be because of the sheer number of lines of code that need to be maintained. UNIX lost it a couple decades ago. The only sectors that still use UNIX are defense and banking, pretty much.

I think as far as banking is concerned, if you want just about any form of IT job close to the money then C++ is still going be essential.
 
What do you do in this role, in order to earn £80k?

You must write some pretty **** hot code, right? Please tell me it's not just Xwindows administration and writing hacky VB6 programs? :(

Thing is being a contractor, 80k is roughly a day rate of what, £350? Plus you've got the tax advantages to milk :)

That's not hard to get contracting, and with the chap being in the city that already commands a premium from the off.

I know about 4 years ago the contractors at our place were on £500 a day, and they were total idiots. But shouldn't complain too much as if it weren't for them messing it all up I probably wouldn't have a job :)
 
I think there's a lot of tosh being spoken.

A good programmer simply:
[1] Writes efficient and effective code.
[2] Understands the needs of their client
[3] Re-uses code where appropriate
[4] Writes code that is reusable by a developer of a similar skill level

Simples
 
None of those are signs of a good programmer. None.

What I look for:

1. Unit tests, proper BDD style unit tests (given, when, then) which describe the behaviour expected. There's no need for an external specification/use case/user story to rely on when the unit test describes the expected behaviour of the code.
2. Minimal comments, if I can't understand the code without comments, then it's badly written code.
3. Most if not all of the SOLID principles adhered to.
4. Use of design patterns where appropriate.
5. some knowledge of agile programming techniques, pair programming, etc.
6. some knowledge of agile/lean/kanban/scrum project management techniques.
7. some elegance to the code. Hard to define, you know it when you see it.

The majority of your list is the utter basics and mechanics that any idiot with a "learn to code c# in 24 hours" should be able to do.

You're paid that much and that's what you think makes a decent programmer?

: boggle :

I'm in the wrong industry/company...

...well I would be if I was earning less than you - which I'm not.

:)

That was a little aggressive there mate. 'Minimal comments in code = good coder'? Well, I can tell you this, when you say that you are exactly, dead against the basic coding principles of

IBM
BT
SCOTTISH POWER
DHL
PWC
ANDERSONS
Others ..

If any coder followed your strategy that worked for any of these clients, they'd be out on their ear, or changing quickly, when the client found out. It would be considered as unacceptable. 'Too many comments in here mate, I just don't like it ...' - you've really had discussions like that? Wow, different world from mine ..

Still, I'm sure you know more than them. I liked your 'Good coders don't need a spec just a unit test doc' line as well, and the 'they better know AGILE techniques' was funny - if the client doesn't use AGILE - honestly - who cares? That lot basically just made me smile a little. I've never, EVER, known any client to care one jot whether a programmer knows about ANYTHING which that client doesn't either use or plan to use. Ever.

Anyway - pipe down on the aggressiveness, it's pointless. Yes I've been professionally testing code for 15 years, have ISEB practitioner, never been out of work, and if I take just 2 weeks holiday a year, am currently on £87,575. At one time I was on 6 figures but that was during the millenium thing when the clients were desperate.

This:

http://www.jobserve.co.uk/Test-Manager-City-Of-London-Temporary-W7AD7E4C665B617B5.jsjob

is the kind of thing I'll be going for next. This is about £135,000 a year if you have few holidays, and I'm not showing off. About 85% of the people on this board could do the work. It's not rocket science it's easy (read the job description .. don't you agree .. 4 weeks teaching yourself what the acronyms mean, and anyone could blag the interview and do it, and do a good job if they know what a hard day's work is). When people say 'You must be the mutts nuts to command £80,000' thats just not true. Learn Computer Science, get into the city, have the guts to become an IT contractor, apply for 135 contracts a day in something quite specialised, and be EXTREMELY CONFIDENT at the interview, and within 3 weeks you'll be on £350 a day unless you're a numpty. All of my mates who tried it, succeeded in it. Half of them then transferred to permy work at their client site after a while for £41,000ish 'because of the security' -- which just baffles me.. a lot of them have been made redundant from their cheapo-but-secure permy job!! :\
 
Last edited:
Spot on with the last paragraph, contractors can be on good cash pretty quickly.

For instance guy I worked with was on £35 an hour for exchange admin, another for SMS admin. The contractors before them were on £450 a day doing the same jobs. That's not exactly specliast/niche areas, every windows server person under the sun seems to know exchange well enough to go on a contract. Well, apart from me, I know nothing of it and actively avoid it :p

You really don't need to be 'the mutts nuts' to get contracts like that if you want it, but things like job security, benefits, location etc do play a part in it.
 
Spot on with the last paragraph, contractors can be on good cash pretty quickly.

For instance guy I worked with was on £35 an hour for exchange admin, another for SMS admin. The contractors before them were on £450 a day doing the same jobs. That's not exactly specliast/niche areas, every windows server person under the sun seems to know exchange well enough to go on a contract. Well, apart from me, I know nothing of it and actively avoid it :p

You really don't need to be 'the mutts nuts' to get contracts like that if you want it, but things like job security, benefits, location etc do play a part in it.

In fairness, contractors (in my experience) tend to be *very* poor coders, probably the worst I get to deal with.
 
In fairness, contractors (in my experience) tend to be *very* poor coders, probably the worst I get to deal with.

Sometimes when the contractors are bought in it's when for a project the client has started to care less about programming principles and more about 'I just NEED the thing working within 3 weeks GET IT DONE'. This can lead to quick, crummy programming being done.

I still like the old contractor (more project management) saying:

FAST DEVELOPMENT | CHEAP | BUG-FREE

Now Mr client, pick the two you want for this project.
 
Last edited:
In fairness, contractors (in my experience) tend to be *very* poor coders, probably the worst I get to deal with.

On one hand I agree, I've fixed plenty a mess a contractor has left (note I'm not a programmer, but in another area).

However as stated above often the situation of employing them just doesn't give them the time or means to do things 'properly'.
 
That was a little aggressive there mate. 'Minimal comments in code = good coder'? Well, I can tell you this, when you say that you are exactly, dead against the basic coding principles of

IBM
BT
SCOTTISH POWER
DHL
PWC
ANDERSONS
Others ..

If any coder followed your strategy that worked for any of these clients, they'd be out on their ear, or changing quickly, when the client found out. It would be considered as unacceptable. 'Too many comments in here mate, I just don't like it ...' - you've really had discussions like that? Wow, different world from mine ..

Still, I'm sure you know more than them. I liked your 'Good coders don't need a spec just a unit test doc' line as well, and the 'they better know AGILE techniques' was funny - if the client doesn't use AGILE - honestly - who cares? That lot basically just made me smile a little. I've never, EVER, known any client to care one jot whether a programmer knows about ANYTHING which that client doesn't either use or plan to use. Ever.

Anyway - pipe down on the aggressiveness, it's pointless. Yes I've been professionally testing code for 15 years, have ISEB practitioner, never been out of work, and if I take just 2 weeks holiday a year, am currently on £87,575. At one time I was on 6 figures but that was during the millenium thing when the clients were desperate.

This:

http://www.jobserve.co.uk/Test-Manager-City-Of-London-Temporary-W7AD7E4C665B617B5.jsjob

is the kind of thing I'll be going for next. This is about £135,000 a year if you have few holidays, and I'm not showing off. About 85% of the people on this board could do the work. It's not rocket science it's easy (read the job description .. don't you agree .. 4 weeks teaching yourself what the acronyms mean, and anyone could blag the interview and do it, and do a good job if they know what a hard day's work is). When people say 'You must be the mutts nuts to command £80,000' thats just not true. Learn Computer Science, get into the city, have the guts to become an IT contractor, apply for 135 contracts a day in something quite specialised, and be EXTREMELY CONFIDENT at the interview, and within 3 weeks you'll be on £350 a day unless you're a numpty. All of my mates who tried it, succeeded in it. Half of them then transferred to permy work at their client site after a while for £41,000ish 'because of the security' -- which just baffles me.. a lot of them have been made redundant from their cheapo-but-secure permy job!! :\

You asked what makes a good coder, and I'd expect a good coder to have:

"5. some knowledge of agile programming techniques, pair programming, etc.
6. some knowledge of agile/lean/kanban/scrum project management techniques."

I didn't say: "they better know AGILE techniques", because clearly if they aren't required for a job then they aren't required by the developer. BUT a GOOD developer (which is what this conversation is about) I would EXPECT to have SOME KNOWLEDGE of the fact that there are development methods and techniques outside of the 70s waterfall. It shows that they are keen to learn and keep up with the latest techniques.

Apologies for the aggressiveness, it's just something I feel passionate about.

:)
 
I have to agree with Mr^B on this. I just didn't want to write it myself :(

Personally, of all those companies on that list (IBM, BT etc)... I wouldn't want to work for any of them. They're all maintaining legacy systems. All stuck in a rut using, as Mr^B said, the "70's waterfall process". None of them are doing anything more than boring database-oriented systems that any schmock can put together.

This thread has quite well highlighted the extreme differences between the mindset of contractor developers and permanent developers. It's something that never really occurred to me before I must admit.

I don't think I would be want to paid exteme amounts of cash if I all I was doing was twiddling my thumbs all day, not really doing any real meaningful work. Moreover, at the end of the day you're a temporary contractor. If they don't like how many minutes you spend in the bogs per day you might find security won't let you in the next day. And that would be that. Then you're waiting for the next job to come along.
 
I think as far as banking is concerned, if you want just about any form of IT job close to the money then C++ is still going be essential.

Given the prevalence of UNIX in the banking sector, it's not really surprising that C++ is still in demand there.

Hell it's still in plenty of demand elsewhere...

But just because its in demand doesn't mean its necessarily a good language of choice for fresh university material to go and attach themselves to.

Most uni. grads today should be looking for Java or C# roles, really. RoR, Python as well, to a certain extent.
 
Back
Top Bottom