Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

A Discussion with the Diabolical Developer

DZone's Guide to

A Discussion with the Diabolical Developer

· Java Zone
Free Resource

Bitbucket is for the code that takes us to Mars, decodes the human genome, or drives your next car. What will your code do? Get started with Bitbucket today, it's free.

Get ready for something a little different! If you've been at a Java conference recently, you might have seen "The Diabolical Developer" session, where  Martijn Verburg challenges what developers hold to be true. I caught up with the Diabolical Developer to find out more about his thoughts. Keep an open mind as you read through, and you might be surprised by the common sense in some parts! 

Diabolical Developer Disclaimer:

"Some of what I say is real advice, some of it is 1/2 truth and 1/2 lies, some of it is just plain wrong, it's up to you to figure out which is which. Unfair? That's the point. It's all designed to make you think for yourself and to stop slavishly following the 'best practices' or the extreme dictates of the methodologies. You really want the one methodology you should always follow? It's called common sense."

DZone: Please introduce yourself to our readers

Diabolical Developer: I'm the alter ego of a fairly well-known person in the Java community
(well he likes to think so, *snort*), sometimes when he's not being careful, I escape his lab and try to shake up the industry a little.I'm also the CTO at EvilSoftwareCorp a company full of fine experts such as the BOFH, the Misguided Manager and Waterfall coach to name a few.

DZone: Who's BOFH?

Diabolical Developer: Bas%&!d Operator from Hell

DZone: Got it. So, what are the main problems you see with software development these days?

Diabolical Developer: Frameworks, methodologies and tools are the main problem today.  Developers get so caught up in these things that they lose their way.

All too often a project will start with:

  • The IDE the developers will use ("IntelliJ is the only true IDE")
  • The Frameworks they'll apply ("Yeah Spring/Hibernate/Cache will make development a breeze!")
  • The Methodologies they'll use ("If we're Agile and Lean, we'll iterate, and by iterating we'll succeed!")

What the actual problem domain is, never gets asked and a design based on the domain is never thought about.

Tell you what, NASA software engineers didn't need all of the crap I just mentioned and they still successfully landed a hunk of metal on the Moon and got it back, makes you think doesn't it :-).

DZone: Right - cos they focussed on the problem domain? So where did our industry
lose our way?

Diabolical Developer: When we stopped paying attention to Computer Science and started having the 'Goldfish Brain' syndrome where we seem to forget everything that's gone before
us.  Look at "The Disruptor" which recently won lots of awards for its approach to solving low-latency concurrency problems.  People actually complained that it didn't do anything new!!  The authors of the software quite rightly laughed and said

"That's right, we applied some Computer Science, some from papers written 30 years ago, amazing what that does for you."

In the OO/Java space I blame the GoF patterns book and the rise of the 'ever helpful' Modern IDE ;-).

DZone: What is your opinion on software development processes, in particular Agile?

Diabolical Developer: Agile is a scam designed to sell Scrum certification.
Actually I feel bad for the original Agile guys, the ones who started the manifesto and had some genuinely good ideas (or common sense if you like) on running software development projects.

My favourite question to people who claim to be doing 'Agile' is to ask them if they know what the Agile Manifesto is, and what was meant by it.  95% of the time I get blank stares back.

DZone: So what do people who claim they are 'Agile' actually do?

Diabolical Developer: They tend to do a lot of stand-ups.  And they write tests.... badly, and after the main code has been written. But because their code coverage is 80%+ everything is OK!

They tend to talk a lot a burndown charts but never change the behaviour.

I could go on but I'll stop there. 


DZone: Test Driven Development?

Diabolical Developer: Waste of time, testing is what end users are for.

Fundamentally they've forgotten the principles.  One ofmy most successful projects?  Actually a Waterfall SDLC project in 2005, _but_ we did sit with the customers, testers, BAs, DBAs/Ops all in the same room and showed progress every day.  It was the communication and interaction that made it successful, not a burn down chart or whether we stood up to talk.

No battle plan lasts once it meets the enemy.  The enemy in this case is the end user, and you can never predict how they'll react to your system, trying to TDD
that is just wasting your time.

DZone: So you're a more "throw the code over the wall" kinda guy?

Diabolical Developer: Fire it over with in Burning pitch with a Catapult actually.


DZone: What is your development setup? Do you use Eclipse? Hudson/Jenkins?

Diabolical Developer:  vi - what else would you need?


In terms of Continuous Integration, well I guess adding new code into my God class is continuously integrating code.

DZone: Nice. I guess you put a lot of time into designing code, right?

Diabolical Developer: Absolutely, I have one main class with a couple of big methods in it. Realistically humans are very procedural creatures and find it much easier to understand code that goes from Step A to Step B.  Object Orientation and Functional programming only hide and confuse matters for the human brain, this is why VB6 was so successful!


DZone: Hmmm, I suppose asking if you use patterns is pointless!

Diabolical Developer: I find the best patterns have proven over time and have then been codified into well-established but lean frameworks.  For example, Guice
beautifully captures the DI pattern in just about the leanest way possible.

When I'm ever tempted to implement one of the patterns myself, I think about the  AbstractProxySingletonFactory and stop.

DZone: What other tips do you have for programmers out there?

Diabolical Developer:  Well I won't give away too many, otherwise someone out there might set-up a rival consultancy taking away my valued clients!  But here's a couple.

  1. Knowledge is power, especially in a recession.  Make sure that you and only you can understand the code.
    * Variables should be called x, x1, x2, x3 etc
    * Remember more lines of code == more productivity in the eyes of management, pad it out!
  2. Avoid others, have some rear view mirrors on your monitor so that you can avoid your manager (or that annoying intern) when they come a knocking.
  3. Remember that Conference speakers, trainers and book authors aren't actually spending their time writing code, so don't listen to them.


DZone: What do you think the big technology/framework/process will be in 2012?

Diabolical Developer:  Personally I think the industry will move back to simplicity, so my pick will be a
JOBOL (COBOL on the JVM) or JVB (Java Visual Basic) will take the languages space by storm next year.
 

DZone: OK - last question. What was the last book on software development that you read?

I recently re-read parts of Test-Driven Development by Kent Beck. Just look at the size of the book (very small as far as technical books go), he gets it.

I've been trying make The Well-Grounded Java Developer a little more interesting as well, but the authors are resisting for now.

Are you using Bitbucket to accomplish your company's mission? Share your company’s mission with #Forthecode for a chance to be featured on our homepage, our social media channels, or win a free t-shirt!

Topics:

Opinions expressed by DZone contributors are their own.

THE DZONE NEWSLETTER

Dev Resources & Solutions Straight to Your Inbox

Thanks for subscribing!

Awesome! Check your inbox to verify your email so you can start receiving the latest in tech news and resources.

X

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}