Methodologies in Software and Medicine

When a person gets into an emergency room in a hospital, he or she gets treated by regular doctors, not geniuses. I believe, this is the goal of the modern medical science – to makes sure that lots of doctors are available to provide medical help to patients. I’d assume that ER personnel has some well defined and strict procedures as to what to do when a person shows up with specific symptoms.

That’s why, some patients may be wondering, “Why they put me through all these tests and kept me there for 5 hours instead of just giving me a pill to take care of my stomachache?” The answer is simple – there is a written and approved methodology that lists all the steps that must be taken. If something bad happens with the patient after applying all these steps, the medical personal is covered – they can’t get sued becase they were following the methodology.

Any methodology is a set of instructions.

Yesterday, I posted the following tweet, “All programming methodologies have the same goal: allow mediocre developers deliver something. Should we rather hire only good programmers?”  I got some angry replies to this obnoxious statement.  Should a hospital rather hire only medical geniuses to treat patients? Yes, if there would be enough geniuses and  the hospital had enough money to hire them.

Coming back to the enterprise software… The number of projects that need to be developed is large, not all of them should be even started and are doomed to fail anyway, but they have financing. Not all of the patients in the ER should even be there, but half of them are there because insurance pays for these visits. Can someone change this situation? I doubt it. Obamacare will result in the substantial increase of the numbers of mediocre doctors, while the gifted one will  try to find some ways to maintain their standards of livings and will become stock brockers, real estate agents, open the restaurants, etc. They will master new methodologies.

The software developers sticking to certain methodologies (TDD, SCRUM, popular frameworks, design patterns, ORM) have a safe and predictable career. How can you blame Joe if he attended every Friday’s standup meeting, wrote hundreds of unit tests, and all of his communications with the database were done via a de facto standard Hibernate ORM framework? Joe did everything as prescribed. If he got fired, there is an IT  shop across the street that need a person with a certificate of Srum Master.

Talking agile… people over processes… [Screaming…]  Then why people have to stand on their feet for half an hour? To me it looks like processes over people. Let’s do kanban. At least people will spend some time moving these colorful sticky notes on those dirty white boards. Why implementing  agile methodologies? To allow mediocre managers run projects.

Disclaimer. One of our projects pretends to use agile principles – it allocates work to sprints. We’ll implement this feature in sprint 87. Yeah, right. I’ll believe it when I see it.

I’m lucky to work for a small consulting firm, where over the years we were able to  build a team of talented programmers who know how to write code. They write code that works. It may not be easily readable by every programmer in the industry. I know that some luminaries believe that the code should be written for other people, and not computers. I have my reservations. The code should be efficient. I’m not saying that we need to generate a spagetti code and bring back the Go To operator, but the code should work well.

Recently I’ve learned, that in one large outsourcing consultancy to become a Software Engineer of Level 1 you’d have to pass a test that requires  to write a certain amount of code in a given time. What is that? Why not just giving extra bonuses for software developers who can speed type? In Cobol times, one of the first questions head hunters were asking was “How many lines of code have you written?” But I can’t recall a question “How many lines of code can you write in one hour?”

Again, not everyone can have a luxury to build a team of highly skilled software developers.  I’m grateful that I’m one of these lucky people.  Sorry for writing this blog.

The Proper Workplace of a Software Developer

Yesterday, I was visiting my business partner Anatole. For many years he works from home – he’s not a big fan of a corporate environment. Beside being a top notch software developer, he’s always trying to optimize his workplace. I took a picture of his desk and thought you’d be interested to see it.

The room is well lit. A bunch of high quality monitors go easy on Anatole’s eyes. His main three computers run Mac OS, Windows, and Linux.

Sometime he writes code while sitting, sometimes he’s standing. The monitor and keyboard on the right slide up and down easily. Walking on the treadmill (left) at the speed of one mile per hour while programming practically eliminates bugs. The stepper is the right place to be during the Skype meetings with corporate clients.

So are you ready to hire Anatole for your next project?

A young C++ programmer lost his hands

I knew Joe since he was a kid. Today he’s 26, and here’s Joe’s story.

Four years ago Joe’s got his BS degree in Computer Science. He always loved programming games and decided to start his career in a gaming industry. But here, in the East Coast, most of the IT shops are creating anything but games, and Joe moved to Los Angeles, where found his dream job in a small gaming company.

Spending 15 hours a day coding didn’t bother Joe – he’d spent time doing what he really enjoyed and even got paid for this!

Life was good for the short three years. Then he started feeling pain in his arms. Than it got worse. The doctors diagnosed a tough form of carpal tunnel syndrome. He tried regular doctors, chiropractors, acupuncture, even collagen injections into his wrists, but nothing really helped.

Since Joe was a good software developer his employer was nice enough to allow him continuing working. No, he wouldn’t type – he was telling other developers what to type and helped them in resolving issues. This year, because of the economic crisis that gaming company closed the doors.

During the holidays, Joe was visiting his folks here in Jersey, and I’ve seen him yesterday. His handshake is strong. He’s still open, friendly, optimistic… and out of work. Doctors suggests surgery, but don’t guarantee that he’ll be able to type again.

When I asked Joe, what’s next, he said, “I’m considering going back to school to get my Master’s degree and start teaching programming”.

Man, I want to help this guy to return back to software development! This is so unfair seeing all these mediocre quickly baked programmers generating tons of mediocre code for living, while Joe, who dreamed about this job and has all the skills and experience has to stay out of work!

There’s got to be a way out, and here’s what I can think of:

1. Joe should apply for a telecommute job. After getting and accepting an offer, he should hire a school or college student to be his hands. In this scenario, the employer doesn’t even have to know about Joe’s problems as long as the job gets done. Not too kosher, I know, but who said that the process of finding jobs is a kosher business?


2. Joe can apply for a regular job in software, pass all the interviews and at the end honestly tell about his problem. Most of the potential employers won’t like it, but hey, every rejection brings us closer to our goal, right?


3. Experiment with Speech-to-Text programs that would allow Joe to turn the voice into the code. 


4. Write the code manually, on paper, and use some OCR software to turn handwriting into code.

Now I’m asking for your advice – do you have any other than changing career suggestions to Joe? Please leave a comment to this blog or send me an email.

If you need a passionate C++/MFC developer, please write me a note at yfain11 at yahoo.com. Joe can either work in your office or telecommute. He may not be the one who types the code, but trust me, you can rely on this guy! Unfortunately, our firm doesn’t need C++ developers, but if Joe will decide to master Flex and Java, I’ll have better chances to help him out.

Updates.

Kids, do not try to improve your typing speed by enrolling into these special training programs or buying specialized software. One of the commentators stated correctly that software developers spend most of the time thinking, not typing. Speed typing can damage your life!

After publishing this blog I received suggestion below from kind people from around the globe. I didn’t put their names here as I don ‘t know if they would approve this.

1. Start communicating closer with mother nature using the system of living by Porfiry Ivanov http://en.wikipedia.org/wiki/Porfiry_Ivanov.

2. One person contacted me suggesting a specific psychic who can cure Joe’s hands.

3. I’ve just read your post, I’ve recently went through a lot of pages looking for some equipment for my grandma who has lost most of her sight. There are a few ways you can try to work on a pc. Voice recognition is fine, but it usually works better for natural languages. But I ‘m thinking that even even if variable names would need to be typed letter by letter, it could still work. Depending on the exact kind of disability, you can also use big onscreen keyboards – used either by touchscreen or mouse, maybe keyboards with bigger keys. One great thing is http://www.comfortkeyboard.com/foot_pedals.html which shouldn ‘t be missed while taking about inputting code, as you can press shift, alt, ctrl without using you hands. Anyway, apart from looking through sites like http://www.enablemart.com/ it would be probably best to contact people who run them, as they have far more knowledge than programmers.

Hope everything goes well.

4. Google on baoding balls and keep using them constantly for a while:
http://www.baodingballs.com/healing_philosophy_of_chinese_health_balls.html

5. New Input interface from Tokyo:

6. Play table tennis during lunch breaks

7. Voice recognition on iPhone:

http://www.dragonmobileapps.com/apple/dictation.html

8. Use the upcoming tablet from Apple called iSlate:http://www.youtube.com/watch?v=r0MFoW-_y78 amp;feature=fvw

Typing on virtual keyboard may be not as painful as on a regular keyboard.

9. Consider yourself lucky – this was a signal from above that you need to change something in your life. Change your attitude toward yourself and your body and change your career.

10. Go to http://www.xtremesystems.org and ask someone to creat a keyboard with keys of the fish size each so there is no need to use fingers. Type with fists or the bottoms of the palms.

11. Start wearing red wool strings around your wrists: http://en.wikipedia.org/wiki/Red_string_%28Kabbalah%29

12. Type with the other side of the pencils (the eraser hits the keys).

13. Use Algo Guide mouse: http://www.gizmag.com/algo-glide-mouse-z1668/13846/

14. Details and recommendations in Russian (use google.com/translate): http://habrahabr.ru/blogs/i_am_sportsman/40692/

Thank you for caring and keep’em coming!

If any of the above suggestions helped anyone with carpal tunnel, please add a comment here. ‘ ‘

Feedback from Joe:

Mr. Fain,

Reading this blog post was very heartwarming. Thank you very much for your kind words and for reaching out to the programming community for help. I have just read through the page and all the comments and will be reading up on all the suggestions given. I ‘ll let you know what I find out. Thanks again for looking out for me.