DumbDev -- eight rules for dumb development


Formal Metadata

DumbDev -- eight rules for dumb development
Title of Series
Part Number
Number of Parts
Collins, Rob
CC Attribution - NonCommercial - ShareAlike 3.0 Unported:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal and non-commercial purpose as long as the work is attributed to the author in the manner specified by the author or licensor and the work or content is shared also in adapted form only under the conditions of this license.
Release Date
Production Place
Bilbao, Euskadi, Spain

Content Metadata

Subject Area
Rob Collins - DumbDev -- eight rules for dumb development So often, we've been encouraged to be smart in our development. "Work smarter not harder!" say the encouraging posters. But the desire to be smart, and be seen to be smart, is hurting. The design suffers, the code suffers, and it's hard to recruit developers smart enough to cope with the problems caused. In this talk, I'm proposing an alternative to being smart: ** DumbDev **. Let's use our brains for enjoyable, interesting things, rather than wrestling with code written for smart developers. **So what do I mean by dumb ?** Well, I don't mean 'ignorant'. A clever person can be ignorant of some important information, and learn it. With ignorance, there is hope. I'm also not talking about its opposite, 'stupidity'. This occurs when someone is given the information or advice, and chooses to ignore it. Dumb isn't stupid. Nor is it silent, as in someone who can't speak. Instead, the picture I have is of one of the early computers: very small RAM, disk space measured in KB, and a woefully inadequate CPU. In other words, slow, with very little working memory and limited persistent storage. Hey, this describes my brain -- and I realise that's an asset! I will write better software if I take this into account. So, I'm a ** DumbDev **, which means I can't hold in my mind the infamous [Plone Site class hierarchy] (see [Michele Simionato's article]). Rather than beat myself up about this, I can say, "Hold on, maybe deep inheritance is a bad idea..." There is some debate about the number of things we can think about simultaneously: it may be 7, 9, 5, 4 or even only 3. We can learn some tricks to appear to cope with more, but most of us can't easily do 38. Here's the first ** DumbDev ** rule, putting a sensible limit on complexity: 1. All diagrams must fit on a Noughts and Crosses (Tic-tac-toe) board**. There are seven further rules for me to explain in this talk. I will demonstrate the benefits of the ** DumbDev ** approach, with good and bad examples. At the end of the presentation, I hope you will realise that you're a better developer than you thought at the start. The next time it takes you two hours to debug a simple exception, you'll know that it's not you. It's because the system wasn't written using ** DumbDev ** rules.
EuroPython Conference
EP 2015
EuroPython 2015
Computer animation
Computer animation
Computer animation
Computer animation
Computer animation
Computer animation
Computer animation Meeting/Interview
Computer animation
this go against global book Old Europe from topic at sort of 0 that's it it's as he key got up and androsterone cell picture of the at is not a scholar is and there mn editor graph as the Inklings for the Europe I from Bilbao yes generalized celebrated this year old simply no case there until I can see part thank you for coming to Europe Python to Bilbao and this talk on dumb development no need to be small developers here now you may have worked out from the picture there that's what you want to do with your needs paper to start
to fold into 2 down the middle and then into 3 sideways so you end up with 6 roughly equal squares and the number them from 1 to 6 meanwhile and will look at the next slide we talked this week about goods development principles and Don Davis about some good development principles around like you to look at that list the from 12 facts and augment this is what a good software as a service these features it should have a like you to look at that for a minute and try to remember it wants and ask you questions on imagine you're going to get 5 pounds for every 1 you remember OK now and I'm going to take it
away and ask you now to
write down in square 1 as many of those as you can remember and that will the it here and
the so how are we doing trade in advance on 3 or 4 good 6 pretty good and is is right and was put it back that said it just just check which ones you look which ones you miss being is is quite quite a hard task life and and the problem with that answers program this is that we don't do very well on memory for things and when you come across a code base that is the big bowl of muddy anti-pattern design often you have to remember vast amounts about the code base that is not helpful all necessary we aren't good at doing that and it occurred to me that's when I couldn't do the necessary memory tasks and understanding that it wasn't necessarily my problem it was the problem with the the way the code and so let's think how we can simplify things well we've got a nice symbol that we used to um using a lot in many different circumstances group the hash which is also like a normal some trustees table the tic-tac-toe time and so I had the idea let's see what we could do wave and just saying notes
trustees and then the middle there's a hash and as a means of specifying how we can simplify things we say you got a concept and you may not have more than 8 concepts around it it may not branch more than 8 times possibly you might want to fill the top 3 and the Boston 3 money have 6 projects possibly you might want to fill the 4 corners only have 4 branches but the principle there has to be some limitations on it in order that we don't get to the point where we cannot understand remember all the amounts of branching so am what I'd like you to do in the square to of your piece of paper and is to draw all any no across hash symbol to fill out square and immediate put as the title in the middle good thing was from the conference rotten in the x 8 squares around to the list and 8 things you really appreciates is this week at your Python the bottom minutes to to do that to and the
OK and then in square 3 do the same thing with draw a diagram like that and then things that this is no good going to a conference and not changing what you are
doing as as a result of having been the conference so thinking about you run a simple things this week what I things or them up to 8 things you going to do differently when you get out of that's in square 3 in the same arrangements so the title be something like changes to measure 1 of the 8 things learn to change and so on and that and that would be if you
want to think of the things that OK now now the practical part I like you to get together in a pair or 3 as it falls out in the Roman just discuss those things just challenge each other and from both introduce yourselves and find out what your name and place you come from and then I'll preferably if you sitting next to someone you know go and find someone you don't know and them what they've enjoyed it and what changes they're going to make you got 5 minutes talking to you and you get to the if you're on your own and don't find someone else's on the road and have up a payment
OK can you be drawing to a close with him and you know and and you can so than the next idea that
develops from the hash sign so we got an not crosses table I was talking to and hummus Chris last nite and EU was set and the idea of supposing you actually restricts is the complexity of branching in 2 directions this is not just the number of things you what think about at 1 time at 1 level but how deep you go if you look at a cube like that the central yellow square km has 8 uh things around it maximum comfort more that actually makes sense in a loss of our software development if you say why can't actually go more than 2 levels deep so if I'm drawing a diagram here and I want to save I've got my the maximum of the thing here that is too complex on a branch it out into another 8 and then in that 8 things get too complex and in a branch out further and if you go more than 2 levels and this is getting too complex to understand and that if you filled out the squares and branch out to levels yeah over 500 concepts if you want a program with more than 500 concepts anything it's too difficult for people to understand what we want we don't want good the people who have to have worked on a project for a year in order to be useful we want to be able to bring developers on board and say OK here's the code is some documentation within a week that productive without having to have this Council superstar brain and when you look apply that in a number of different areas you realize what actually this might give us some indication in other areas we've looked at of the problems and benefits of micro-services during the conference lots of good things about splitting up our development into different parts of a completely independent of each other but I'm going to suggest here at MIT these are in fashion that the micro-services idea if you take everything down to a very deep level of branching you end up with things that are so small that they had the services of quite a simple but then the handling of them and the interactions you move the complexity at so instead of micro-services you have many services or media services or maxi services billion MIT the group has the right sort of level of in between and sensible getting it right so taking this idea from here what I've done is to make any kind slide where I find some of these this is just a mnemonic Our method of same where it's use this concepts so dumb data fit the definition is in the title goes in the middle and so 1st of all we want decouple things so so this is all what we're talking about in and separating out this is putting things into nice containers and the the end there is for media services now I on come back to this and explain a few more all of those but this let's go back here Cisco has a problem there 30 year anniversary and the company does lots of good networking stuff but there is no need for them acquisitions there 1 of the highest acquiring companies that having acquired more companies the Microsoft or IBM and have a reputation for development by acquisition rather than by innovating and so the current campaign quite sensibly is to connect everything to innovate everywhere and to benefit everyone which you could think it would be quite sensible thing to do that our networking company but if you think about the big ball of mud that isn't how we want to develop our software so that we would rather be saying decouple everything rather than you probably meant the developers who drew had developed as if they were connecting everything and so you can't testing separately you can't easily work so d coupling is a good principle Cisco also wants to innovate everywhere with innovation that that's cool isn't it well so is it was innovation is on hard work and requires lots of brain power and done developers and so whereas maybe years ago I would think what is it that I've got to write to that and I'll be able to tell clients or 1 right so many lines of code then the more right better and nowadays usually but I don't want to write code it's probably been done before far better and is available free of charge I go to the relevant search engines and look for
it what someone else has done don't do I really want to innovate yeah not many areas in software development the actually innovate but you run of the mill basin they program they shouldn't be innovating that they shouldn't also I would argue be acquiring as in all have that code and all users and that's thanks very much it's free and I'm using it rather what we want to encourage as 1 of the principles of dumb development is to borrow everywhere so borrowing has a nice sort of say you requiring it but not permanently your borrowing it and borrowing and you're going to give it back so that we want to be able to use open source software to develop it and improve and give it back to the community so if we could say decompilation rethink borrow everywhere and benefit everyone that would be to make a good idea so I going back to the diagram here good so we got the 4 D couple and so services and be for borrowing the the and what are the right sections around but it's also could be 6 all fall that sick if you could Due to the 2 rows and 3 the corners you could have 2 sets of that have the 4 corners and then in the middle In the sides or you might just but it did that the 2 is the latest so you've got sort of not more than 2 players that gives you 500 options should be enough for anything now the the you are about to explain about the you with any story and there is the group picture of Southeast Asia and in yellow in the middle you can see a Vietnam see what China and my knowledge to the left and in the 19 seventies it was pretty unpleasant place at the beginning and there was the matter as it was in 1967 with South Vietnam and North Vietnam in the demilitarized zone between them good that going into the politics of it obviously you know that the the economies with American help didn't win the war and a lot of the lots of boat people as they were called 19 seventies that came to this country and I was working for Save the Children with and some Vietnamese families and I met 1 Vietnamese lady who had a cleaning job and I got talking to her and she was saying how she used to be in South Vietnam in lawyer good but not much in order to that sort barrister level and he she was between them and this was a surprising to I thought about it and realized the problem was that the knowledge that she had the South Vietnamese legal system had just disappeared overnight the country didn't exist anymore and what she knew has to do am wasn't that the
knowledge should gone knowledge is a sort of fragile thing if we have to learn something another good example but you will have heard in the news the London by taxi cab drivers have to learn the knowledge to get a license takes them for years at least and involves than driving around the streets of London and so that they know at every turn and can pass test 1 so how do you get from here to here that's London exhaustively so they spent 4 years on a mopeds generally going around all the possible routes learning this and it means that they're very good but what they did however there is a problem modern technology comes along and says all and and I can now be a taxi driver and obviously the black-capped taxis get rather upset that they spend 4 or 5 years learning in this knowledge and it's all gone so what can they do instead stable not lot but think of as software developers we've got 2 things we can you know the big the taxi driver so I know how to turn right am I want to get drive safely not run pedestrians over and false accidents but i'm doing that in London but then next week on doing in Paris and the week after on in Bangkok being a taxi driver and 1 leaders of Saturn have and the ability to drive on the right side of the road that's more how software development means to work without this vast and requirement for memory so that's the blue in Buddha so I'd like to know to apply the this with a thing we looked at the style is in your pairs form just 2 or 3 minutes have a look at that and say well it's a 12 sacks of thing but that breaks the rules of thumb that i've let's say how can we break it down and then you might look at sort of development and deployment in any other way you choose to recommend you just see in your little discussions how you would put that into and number 4 on your sheet draw another diagram and put that in there and see if you can put those factors into groupings that you command put more than 1 in the space and that becomes another level so to just do that discusses how you break it down that the you and and and this is
what we call the other and can you and you you you this is due to the reason is that we need to be in the in the in the in the same way and the and the that we so we you have to use OK no what
what you will probably find this if you manage to find a way to breaking down into smaller parts that it becomes more memorable if you can put it into something like that because we can't think about that many things at once it used to be thought you could think about certain things at the time but now the current research reckons between 3 and 4 you think how you you group at telephone numbers you say in batches to avoid having to remember a long number in 1 go brain naturally works that way so just to finish off the lessons here on got the 4 verification in mind simple world of our development we've tests I want to understand what the test a doing and know that there tests for everything so we can so well would have coverage for tests at 100 % that would be a good idea but that doesn't guarantee anything you can have some module through food don't apply and module buyers don't apply both calling you tools don't call and you got an test food or applied and tested don't apply calling through and as methods and functions which happened to call you tools not upon but nothing's explicitly testing this happens everything gets covered are in the process of running the test so you get away with it so for instance we could come up with a rule that says and there is no requirement rather like if you're having a Sphinx documentation for every module you have an RST and document we could say that well for every module if there if you don't apply I wanna see a test food or upon a lot of run the test the test run should instead of just aggregating test to check that all lines covered with this should actually say and here is a test through and it will run only against the upon the only thing that will count at 1 level is is its own test covering everything so it's all there in 1 place these sort of ideas and I don't know whether there was progressing or not need some feedback from talking to you afterwards but what I'd like to think is it may be quite simple to build a few tools that provide a means of visualizing that of writing things in it in a way that stops you going 15 levels deep in a mind map or having 29 branching that runs tests in a way that forces the test to be constructed and simply and the last 1 I have got down there is there is I like to see what the errors you have been in the situation leader of 500 error and you spend the next 2 hours trying to debug what's happening because absolutely nothing tells you what's gone wrong or is there some instrumentation that we could build on code that made it possible to measure how well will you had defined your errors and the D. there want a number of these other thing called but that's an exercise you think what what's the would you put in that corner so it has to finish off with with number 6 just could you make a copy of that in your number 6 square just write that down so you can go and remember it and number 5 exercise you to take home is to think of 1 of your projects and I put that in that format you but the title in the middle of and say involved with a project here was to the up to date but no more main concepts and then divide out those concepts into a maximum of 2 then also further OK so as a smaller so i don't questions if it Mr. the
here I'm sure you've thought about name for the missing 1 with the bomb right did what thoughts of you had on the well that the best 1 I think was don't because then that have sort of brought into another 1 with a things that I would say I shouldn't do that then and that would it got this is just my personal opinion on things some kind of work out what what are our own opinions about how we do development and what are good rules we directly say here is a process that we can actually use to help people right because so I found it to have pretty opposite foot don't differ so your Venn recursive wasn't as part of your approach to be progressive or this yes that's so every self-respecting economic is written regressive and you've lost to opportunities right good good point to so put that collection well imagine that there is a dumb there is never a recursive definition thank we have time for 1 have you managed to apply it to something you've done so sorry I don't know where the screens gone but had just 1 last thing to say before I answer that and down Dave don't I know if you go there and Click on matters Quiteria matter just to keep in touch if you if you're interested in working on this anymore that's a that's and well I've applied it to itself recursively in this talk is written around them but the it's the sort of thing I'm thinking or whatever what are stored in the I don't know if it's worth taking further but I know there is some questions I would like to apply to the problem is how do you applied retrospectively when you're working on something that doesn't follow these sort of principles thank you very much be that without


  620 ms - page object


AV-Portal 3.9.1 (0da88e96ae8dbbf323d1005dc12c7aa41dfc5a31)