Mort, Elvis, Einstein, and You

the very act of commenting on an article about software development automatically means you’re not a vocational eighty-percenter.

Then why was ‘commenting on software blogs’ not part of your original definition. Now you’re just making shit up to cover your arse.

I definitely agree with that.

I got good grades at uni, but I’ve never been happy with my production code since entering the workplace. Over 4 years after I graduated I’ve finally started reading the GoF’s Desgin Patterns. I haven’t even finished the second chapter and I already wish the guys who originally developed the software I’m currently maintaining had read as much. I plan to read Refactoring next year after I finish my Youth Ministry evening classes. That’s actually a coincidence. I’ve been wanting to improve as a youth worker in my church and I’ve been wanting to improve my code for the last couple of years and I’ve finally got round to doing something about it. Perhaps someone should write ‘Purpose Driven Software Development’.

As for Mort, Elvis and Einstein, I like to think I’m an Elvis (and I wish I could do Winamp AVS presets like El-vis), but I want to be able to work more like Mort, but in a good way. e.g. I know HTML and I know how to ftp from the command line, but I’d rather use blogger. Plus, fogbugz isn’t completely for Morts, but it was one of Joel Spolsky’s design goals to make it easier to use than Notepad.

I’ve found that differences between the two groups is as minor as differences between human and monkeys. Actually less because a good mentor can coach/mentor/brainwash/whip the rest into over-performing. Main problem seems to be that most engineers just don’t understand that human brain is too dumb to use as-is. Training the mind to make up for shortcomings (mold) then cutting up the problems to manageable sizes (fold) is what engineering all about IMHO. Emotional problems are much harder to fix though. So far, I’ve had zero success in pulling one out of his/her own world of misery.

The majority of programmers are just rats on a wheel waiting for the next piece of cheese. I’ve spent quite of few years in the industry and it still amazes me how quickly things change day by day.

You spend all this time constantly keeping up and what has it brought you? Just another new technology, object model, new syntax to learn. That’s why young people are the best programmers, because they haven’t gone through the cycle. Once you have taken a few spins on the technology wheel, you are not so ambitious anymore, just wiser.

So, the ability to adapt is a great strength of any programmer.

It is difficult to classify programmers because anyone can become a programmer. You don’t need any formal training. A few books and a compiler and you are on your way. Should those people be looked down upon because they do not have any formal training? They need a paycheck too.

So, in the end whether your writing a compiler or writing HTML, you are just a programmer. Stop looking for the perfect code, because there is no such thing as perfect code. Code is code, humans judge, machine don’t. Compile and unit test, and fix those bugs and hopefully everything works out in the end.

I think you need an entirely new classification for Wesner Moise.

Here’s light years ahead of any developer I’ve ever seen.

Simon.

If design is bad, designer failed.

A programmer is not a developer. He is just a programmer. The people who mastermind the requirements and the purpose of the software are the developers. So we should never ask a programmer to develop our software. We should only ask him to program it.

Software engineering should not be a craft but an industry. Industry is more efficient than crafting. If you like crafting more than industry, welcome to year 1700.

People are not encouraged to be Morts though they should be. Instead you are left alone to cope with things, because of the lack of good organizational structure. Therefore you need your best einsteinical skills to survive in an environment of half chaos. But instead of that, people should be encouraged to be Morts, even helped to be Morts. Not weak Morts, but powerful Morts. When you have streamlined processes, your Mort is more efficient than 10 Einsteins in a crap company.

Software engineering tools should support all the aspects of software engineering. But the tools should also divide the aspects so, that it is easy to distinguish what functions belong to which aspect.

A programmer should not have all the functions of software engineering tool in front of him - only the functions that are required to program the software. Likewise, a designer should see only the functions that are needed to design the software. And what comes to creating a good architecture for software, the software engineering tools should again display only the aspect of software architecture.

If I am a programmer and start a SET, I don’t want to see myriad possibilities from all of the fields of the industry. I just want to do my job as a programmer. But if I am an architect, I want to really see what goes into that aspect. If I am an architect, I don’t want to just open an plain old IDE an start coding.

But asked more concretely: Who creates for example new graphical user interface widgets? The programmer, designer, architect, Mort, Elvis, or Einstein? The answer is that all of them make their own share of the job. The architect creates the overall frameworks for creating new widgets, the designer designs the widgets, and finally the programmer programs the widget. Then the Mort uses the widget for lots of simple applications, the Elvis uses the Widget for many complex applications, and the Einstein uses the widget for some scientifical applications.

There are Morts, Elvises, and Einsteins at all levels of software engineering. Still the engineering process should be as simple as possible, but not simpler, plus the process should take into account and divide all the aspects of the field. The simplicity draws the process towards Morts while creating new room for all of us to think more like Einstein.

Right on Jeff.

It’s sad that “The Two Types Of Programmers” was seen as a partitioning function, but it highlights that improving our craft requires focus both on technical AND on social aspects.

Find mentors that awe you and keep you passionate. Strive to be the best peers we can be, and perhaps others will see us as mentors.

Whatever percentile you belong to, engage each other as a community. Only collectively can we drag our monkey-brains further into the technologies that will make our lives better.

if your an 80%er, it doesnt mean you a bad programmer, just as if you are a 20% doesn’t mean that you happen to be good.

I consider myself a 20%, and always have been one. From the very day my parents bought me a VIC20 for christmas, I was a 20%er by taking time to read the “intro to basic” book, and then getting the Byte programming magazines (blogs wern’t around in that day!)… Could I code then?..hell no!- I didn’t know my ‘for-loops’ from my subroutines, and could hardly write code to count to 10!..But, though, I wanted to learn. Not because someone would pay me more, or because my job depended on it, but simply…because!.. this, I think, puts me in the 20% category!

So, I guess, if you’re a 20%, you’ve probably been a 20% from day one… Ironically, I can see myself eventually going over to the 80% side, and let younger people with fresher minds dictate the way, when, simply, I CBA to learn anymore, and more important things, like Family, start to take my passions!

“maybe we should roll programming back a thousand years…” - Jeff

I don’t have a budget for training new software developers, but of course someone has to show the newcomer the tools and processes that are in use in the company. If the newcomer keeps asking more advice and help, that is kind of being mentored. The newcomer could also be on lower salary the first few months and that time he should learn from the others and do simpler tasks.

Then software auditing sessions are a good way to check how the newcomer is doing. And auditing sessions don’t cease after the apprentice becomes more skilled. Engineering practises should be so easy, that the newcomers can get into them without starting to farm wierd solo tricks.

It helps if you have skilled friends, but it is not the most efficient way to try find some friends and use work time bribing them to reveal any tricks.

Today people can read stuff from books, web, and earlier pieces of software code, so you don’t need a mentor showing you things all the time. But I would say, that a company needs some kind of expertise management scheme, where people don’t just play hero and do what tricks they find amusing. Everything needs to be under control.

Plain old mentoring is not even good enough, because you cannot trust that expertise flows from person to person - or at least doesn’t flow in a orderly and standard quality fashion.

We can use some mentoring. But we don’t go 1000 years back in time, because then we would loose being an industry.

Very good article.

My view is the 80% group actually can be subdivided further.

Anyone who has experienced working with large development outsource providers on the subcontinent know that the business model is putting cheap resources in large numbers onto projects. The results are at times horrifying.

I’ve worked with traditional “code-monkeys” but who actually have pride in their work and care about the overall impact their quality level will have on the application. They don’t tick any of the Elvis or Einstein boxes, but are a million miles away from the levels of incompetence and inexperience you see in the outsourcing world.

I’ve also dealt with some architects that would categorise themselves as Einsteins - but who can’t actually deliver anything and are guilty of coming up with needlessly convoluted solutions (it’s easy to do this when you’re not the one cleaning up the fall out later!).

I’d agree with an earlier poster who talked about Joe, Jane and Jack.

So you guys are proud to be 20 percenters? Rofl. You’re proud that you devote 99% of your limited lifetime to playing with computers? Isn’t that kind of sad? Shouldn’t we be striving to regulate the software industry in a way that we can all have actual LIVES?

Fucking people, man.

Just commenting… cause apparently it means I’m part of the 20 percenters… (I just wanted to feel included)

2 Likes