Pragmatic 34: My Code's Nicer Than Your Code

24 August, 2014


Everyone thinks they know the best way to write code. Irrespective of the platform there’s some common concepts that every programmer should try to follow. Guy English joins John to discuss everything from comments to object structures and more.

Transcript available
Welcome to pragmatic pragmatic as a weekly discussions are concertina practical application technology explain the real-world trade-offs with great ideas of transponder products and services that can change our lives and nothing is as simple as it seems this episode is sponsored by a quality and specifically their great products sold solvent is an amazing calculation that works the way your mind is when you're working at a maths problem paper more more powerful than a calculator simpler and quicker than a spreadsheet solder can help you solve your maths problem please visit the URL the show notes formation is episode is also sponsored by space nation and specifically thereat Hugh party if you have life X or Philips Hugh Bowles Hugh party can control them and absently defects to it's a free app for up to 2 bulbs they can check it out at Turner with no for more information on John GG and today I'm joined by my guest host going wish a longer drink beer later agreed to come back on our before we get stuck into the topic today arm which are oddly go given no you're my ghettos is related to software arm are I just wanted to quickly cover a few things so firstly are a quick thank you to our and I love the name the username yo crystal bowl in the US for the lovely Tribune and iTunes thank you very much arm but more poignant as of today I'm going to be live streaming are each of pragmatic so we used to do this with upon episodes 10 to 14 but then episode 15 satin technical problems with a decided it was best to stop that was back when I was at Dar Felix and Dar it's been a bit better while between drinks so it's been exactly 20 episodes since the last one was alive out but now going live again so this time however doing it are the more I say traditional but have at the more current weight which is our there is an IRC chat room on free arm the chat room is hash pragmatic show all one word and if you go to the URL take you can listen to the streaming and access a stream there are or you can use the embedded IRC chat box in that window to join in during one shows life of course are if you're if you have an icy client likely some colloquia locally is a pronounce that guy agree you Yamamoto snuff yeah I raised it yet because it's not bad after that so I never had so feel free to join in and Dar what will would opportunity to run our festival as some but another Shabbat up and running it are working on it it will eventually are improper in the next week or two on a lesser deadline because that's crazy talk so yet at some point Shabbat running Maceo take case… Robot for a well arm I had a look at the five I know I'm not that a work out well come on it's not so bad at getting down the road so I want only about a given that you've ever shot anyway so one will hopefully will see the result that the next next few weeks in the meantime I was go back over streams that have some suggestions for free to make them are any contributions honestly chime at any time up but because it's a very focused our show I tend not to govern too many tendons I try not to anyway so were the over there will be a balance but what I want to do differently is if you have a question specific question either for me or are my guest host then please ask it in the chat room but prefixed it with an' Q or' QA the idea is that after the shows rats that I will have a question-and-answer session for people so will try and do a separate arm that the the actual questions and any interruption of the show and will have a separate Q&A session at the end which is hardly a new idea but it is in our tribal see how it goes okay arm now just one more quick word about some sponsors I've been really fortunate to have some great sponsors the last few months and honestly if if you would like to sponsor the show just go take again touch is the first and only time I'm going to our dispute sponsoring the show on itself by deciding it's a bit strange that I have done before so is the first but I won't do it again anyway at the very arm basically that might the writer got a very aggressive that there targeted at indie developers I think that we are about one third of the are the cost of relative to total downloads are of some of the other podcasts out there so I'm trying to be as good value as possible are and is to give you an idea I saw of it absolutely blown my mind that our most popular episode is recently cracked 20,000 downloads so I'm I'm over the moon and stoke the same time and a big thank you to everyone who's given the show chance and are especially those are still listening and of course an even more special thank you to those in the chat room right now hello right that's my preshow preamble blurb at our and now I can get stuck in so arm I have always wanted to go into this one will be more depth which is my code is nicer than your code everyone likes to think you know that that they know the best way to write their software infrastructure at the best way to name things the best way to put together essentially and honestly I guess back in the early days and so the early days when programming was first thing there really wasn't much choice W had machine language assembly language and there really wasn't much latitude it was like no move this there now opcode and so on there was no artistic license because there was no art there was just that was just it so I guess you could structure your program slightly differently but you know it was an object-oriented it wasn't yet it was just you had a deal with you to speak in in machine speaking what actually do anything so when there is no choice there is no problem right messages that having a choice of starting a problem that we evolved out abstractions and so increased that distance between a programmer and the and the machine level of of of code we have the opportunity to make the code potentially more readable and potentially more maintainable and the biggest leap I think is there in the idea of object-oriented programming and that makes that the software potentially easier to separate and improve independent components of an distributor much larger teams by say potentially what once I potentially mean it up a lot is about how you go about that implementation solicitors have the opportunity to make it more readable more maintainable and someone doesn't mean you are surely well just by virtue of the fact that you can make sense being so arm yet and arm when it comes to to writing better code before we dive in just you draw a diskette is clear right now it's not all about other people you know several people say okay on the right disco to be more maintainable for the next programmer comes long to look at okay great that's nice but seriously you're gonna come back to it in six months time and a lot of this code and it's given be a total stranger it will be I get and I often I get the same kind of BS from younger programmers all the time that I'm done working with it's safe I'm always gonna be maintaining my own codes I can do whatever the heck I want no structure doesn't matter comments are optional, live variables count one count 1970 accounting account count if I want because I can write then they give you a look that they pout Nicole Solon cough for their arms and sovereign have you ever witnessed a phenomenon ye yes arm in longtime Sabina professional program through the 20 years in Salthouse lost monologue doing engineering or thereabouts so Yates long enough so you when you begin working with professionals align our FAQ and stuffed up to where you are silly when you're starting out arm I think especially of you when you when you staring out any learning that we did things at think individually you get to a level where you feel really accomplished and you you are you can WR can severely fancy stuff and you understand with computer were exempted your code works arm translating that into professional space is totally different because my sister was working with other people everything changes straight leg you no longer the smartest person in the room now hopefully with with ending with any likely sufficiently arm you I am still here you need to learn to appeal to work with each other and that that suited necessitates a common culture or culture of the code lately get a common way of doing things are a common way of rating of available land or function formatting B cannot answer you_-line graphical and seeks next daily that whatever the various different styles are an degree an indentation of your code's Yahweh saddles that you Are horrible and extensive spaces but do not know is I'm detailed I'll tell you a wealthy one embedded okay all right talk help your BA as you need to go to agree with this canister in order to become like an actual professional program that gives you no longer just dealing with the machine you doing the machine and a bunch of fuzzy humans are hoping to find that no overwhelming everybody's got their own different perspective are separate so exactly it's okay it's an extra order of magnitude against a straight arm so you can keep in mind the way your program works if so hacked up and crazy with guilty statements and jumping around then that's fine but you need to be understand that not everybody is can be held to have been the same subset of knowledge of the code bases you are suggesting creating the order of difficulty if you don't arm profit organising and document you can exactly it's sort of you start out and your create something and it looks really awesome to your eyes and its cycle is the most this is really cool and then arm with time as time passes and you start working with other people any such owing to them and if it's not standardised code they no longer see it as of that's great that it is that horrible and you start to appreciate when other people actually follow all of those you all those little details on all the rules and making sure the code is consistent suddenly that becomes your measure of G that great code because you know you're part of your doing whatever else is doing well and you are actually working together as opposed to on your own you should see that another Stargate Nazi in that arm well some people are excellent bewildered if you pled legacy Reading see any put the you put it stemming and you put the opening actually dress understand that C- if statement you need to put in the same line or 1/3 little indent at the same level as the airfreight GPU & yes I can again so we can join one of the other of those are some people would insist on one of the other happening you know included a simile that I'm responsible for a number care with minor stuff like that that that someone is starting tomorrow when you know of historic Deming Objective-C method means that they can disclose in their guests are getting all these_a_method that that's Horton did you fingernail and innovative chalkboard of exactly fill in a leg minor stuff from spacing I prefer a lot of blank space against yeah yet your identity and cicadas and is more difficult to read I try and space outs are logical blocks so there's there's a section of code has a particular function on trine separated with a line above the before and after it tried and in fact sometimes we do that and especially back in the day see didn't let you declare variables that weren't within a pair of collaborators okay because of killing beasts would define the scope you give you could particularly bases in the middle of the function so someone in the middle of the function and may particularly raise radical like declaring would wish new variables any related medical enclosure kill it best to those variables were only visible within that small scalp and put a comment just on top of that satisfaction at that school if describing exactly what it did and now would have donors of catalytic exactly what this little sections can do and the overall function is just getting to beg will avoid company sections and are mapped out second know which ones to pull out our academic development functions with understand I'm done discovering as we try to chat about this how hard it is described usual codes to a radio veneer gate as it is and sometimes I'm on on the show I I'd give anything for a whiteboard but arm are its is not in a work setting out Oracle and we made a sweep made of a start but I guests are there's a few things want to quickly sort of this I feel like a stunning the basics is really with with comments that forget that actually there is an essay that I found are when I would buy a high note how long ago it was months ago and it's called how to write an maintainable code and by a guy called Roti Green is a link to the show notes it's a joke right is a joke SA Bellamy Jesus long but it is so funny and the funny thing is if you if you got time to read it it's actually got some really great advice in a minute is framed as a joke right his dress if you want to make you make yourself indispensable because none of the understand your code and he read through it and is so much really good advices like while at every now and then and there I would now and in and out like fringe alike are I used to do that you know anyway so arbour I recommend reading now is really quite is really quite some quite funny and dumb you can learn some lessons about what not to do and buy you obviously through inversion what therefore you should do and the other thing that's if you do any kind of research on the specific topic is the Internet is absolutely swimming with advice on how to write good code Jesus resist similar hot coffee thing you know everyone thinks another Best wave anyway there's lots of tips and tricks but note that let's face the property that is that the Internet was put together by programmers for the most part so obviously that's why the summit of it out there but anyway so we'll just focus on our opinion and frame it that way I guess the psycho common encouragement Sukkot comments for me are meant to augment the code such that they improve its overall readability by mentioning details that you can't you can't really capture in the code itself and if we think of that Connor definition a ague arm had seen example some industry touch of commerce is comments that did point out something to particularly checking that can go on and then is comments that they used it to tell a story right arm and so when I said tell a story I said C function and auditors to collect something it swords and spits out a fixed up list are so in the first have the first third of the function of output a commencing Malaga neglect all the objects that match blah and will do the full loop and in our modern magnetism credit was administered to stick with everything before Lucan will collect all of the objects at mattress and predicate into into the new array arm and so the first comment was that Gilligan neglect all the items in inland within… Link… And afterward and that when we get to the next section of code up a new comment in Australia within… Say after having done that we will now sought to long… And then into the code for sort of a mile and then in the final thing to believe and now we'd be packaged into actual so it would end with stable… And then the package on the objects into format why. So you can immediately give you if you look at the function you could read the comments with… Joining them together and it tells you the story of what can happen arm and now hopefully to blocks of code that you describing our atomic enough and basic enough that one should be given the rough description you can see how they can see how they work reasonably that connect story kind of commenting is that arm even if you change the particulars of the way any block of code is gonna work arm the top-level comment will still be valid you still can be collected and whether you do with the four in loop are you you everywhere the numerator it is something else the purpose of what you can accomplish is at least levelled at the top our lives you don't do that through every method of function is basically most method should just be that in the first place if you do have a complicated series of operations it can happen one method that is generally deprecated core that I absolutely agree on it and I trying to something are very relatively similar to that and I guess I suppose disturbed to extend that the things that I am the things I don't like seeing in comments are things such as a co-comment I don't think co-comment should be the English version of the code verbatim in another time and I know you and I seen this I seen this you know programmers will say I got was the ones likely not always about a couple of elements of the soap count plus plus and then the comment after it is in English literature variable count is incremented by one might thank you that's so help and a couple more sarcasm into that mess winless on pretty much every level because the audience regarding forming programmers down by the end of can't they want wine can't say whatever whatever language close the first when you do it if you can recognise naked account to being incremented you've got problems here you've got major problem so not to tell a story to me it comes in very handy arm arm when doing graphics processing to take image I'll invert the image are translated and remap it with a different colour and transformed into something else click scale it up something arm outages read that out with pure graphics good it's kind of inscrutable discussion Scott is a very tourist related unit heavily gentle bitmapped investor flip a coin in my transponders so you don't have a story lack of basic premise of what the courts was to do it becomes hard to understand yes yes it's a bit is very analogous to the plc code I write sometimes as if you've got a vibrator block that securing function for example than are right that most likely in the arm structured text are STL and when you doing that at obviously you want obviously that you're having a load address what light address register one low dress to Mayo arm tack I'm talking in Siemens talk at the moment but you all this to commands and unless you've got in your head exactly what data is in what register going where and multiplying dividing by what you'll lose complete track of what the hell you're doing and that that comment that story is absolutely crucial otherwise you look at that code in six months time and think what the heck is that therefore so cool so you and SOA are all of them from my point of view I buy finally, is the most useful at the beginning are disturbed to lay out the basic function and and that's it and out the obvious yarns are I also am a great believer in embedding author and revision history arm in the header I know that that's a contentious one actually what are your thoughts on the Indian heading you personally I am allocated and a lot of language studies and media people sedative anachronism in modern languages shouldn't happen find headers to be compiler check documentation shows a contractual arm the other in the D deed at the tarp is fine and it gets pretty low massive epidemiology also that's fine are used to be invaluable densities with gets tougher think people concede start a big deal yet this is that you head exactly my problem though is that if you've got an external tool this managing this that's fine so long as you using that external tool exactly soon as you stop using that saw you lost all that revision data you've lost all of that information so then what it's kind of analogous to I want to use arm rich text and markdown versus I'm gonna use Microsoft Word in it is because once you one interview you get to my security for whatever reason you have to check you move from get to simply get sick and it's not compatible sinner whatever the next thing is to have employee repository and for whatever reason it doesn't count import on the changes you just lifestyle the daily rate that you have no idea who initially got the father whenever even under what circumstances you are exactly so are there and for exactly that reason that's why I I will embed author and revision history are the eight when you cuddle revision and what comments you make is another discussion but you know what Martin it is Dickie dwelling is alive and it up and added PCP to come back practice I'd okay I tend to keep it rolling between major revisions so if I've got some of its release is 1.0 and I'm doing iteration on that you know in the simulator than whole Oliver I will keep 11.1.010 to and all that revision history but as soon as I go to point out a clean slate that might give you because otherwise you can sometimes be iterating on these things CO a dozen times just to so and if I did that for every revision than I have an enormous lot like comments and yet it is also backed up so will do it every day is a zip backup that's a manual thing and the other private dwellings that I hate about plc software is that it is not it doesn't supports our version control tools like gets subversion very much if at all it's all like a continuous block is a psyche working a Word document you know you can't just save a paragraph or a sentence which you really sucks and it makes working on large-scale projects difficult to litigate reason to do what you doing just like and had me even even in the art even in our code that I've written I still do it maybe this is force of habit I still think it's the right thing to do but one can hurt you exactly is could be useful Sunday night why would I change in between the senescence I okay go straight to the point the code and figured out RK right I screwed up usually why go back a citywide go back anyway so why am there are there is something though I I hear that's are the expression and I actually sort of expounded this there for a few years is the concept that well written code doesn't need any comments or hardly any comments by coach to be self documenting to a certain extent I think you I said I I think it's idealistic view point you know yes yes but you can be the goal but it's okay if you don't get that okay to still have some comments in CRM index way that's that wire leg the cook of Hinrichsen and Objective-C yes it is very specific it reads like a sentence you have enough to target of the action demented message and any parameter coming gets did you take an English sentence you so and so do this with that got what will tolerate you III secret quite like it to when I first arm when I first got it I got into my my brain into the apple way of thinking arm with all the frameworks you don't even after a while you don't even look up the the name you just start typing away what you think it's gonna be and nine times out of 10 it is not a complete UI yet manually something like you know you can just get it anywhere yet et cetera that's that's beautiful is beautifully consistent. Gushing about just selling that it is not viewed the need for comments of course are not it does mean that I think you get to do more of the storyteller comments than the lower-level particular comment straight absolutely especially with this letter with mammograms and Objective-C and now I guess Swift and Emily will be an underserved in an intransitive delight in terms of helping to die can you go get it article look them up on the exactly right so okay arm I also had this other thing years ago and was working in the reliability group at Nortel when we were looking at software reliability and one of the metrics that was thrown around for a while and I think it still is in some circles which depresses me that still is our comments perk a lock arm thousand and you can think Eli can I show my age but I do no harm anyway look the thing is that's I just from from my point of view adding comments does absolutely nothing to make your code run better you know that said bad codes bad coding and am happy comments you have so I mean because we did agree we should wear silk keyloggers a thousand lines of code yes suddenly anybody doesn't get KLA CEO brokers Rwanda while they're at it when I started throwing around in meetings the era bent in a situation where your much people rendered an organisation for a while there thrown around every acronym under the sun you like what dad there what you say I decided just had a client that is in the big collaboration holding only still have a lot of acting Nortel was so bad that they had the little book of acronyms I kid you not it was literally this little thing is ardently have a Clinton wiki today to look at holding the acronyms and that's of course you are and honestly yes that's the modern equivalent back then it was only half the cup got so the what one would do more things about, code comments and I think we probably done that to death that is some the other problem I have with too many code comments that are specific as the specific code comments is that you tend to get a divergences that have alluded to this earlier on is that you doesn't matter how you choose to iterate your torment enumeration versus a video loops and blah blah that point there is that while finally really specific about what this this code does and Alana replicates a later my comments then as you develop the code what tends to happen is your yield you'll be told arm there is a bug in this object go fix it and unite right look at the clock it's like 4:55 in the afternoon notice if you got a JB job right not to allocate let let's say at 5 o'clock going gotta go and watch your daughter playing hockey or whatever rate I don't know and try to come up with a homeworking equivalent point is your deadline see get in there you check out the new you go through new check fix the code to DAA a good grey check back in go did you remember that your comments no and this is what happens right so then it is divergences of what's in the code what's in the comments and in a poor bug that is reading the code is an you just doubled the difficulty because they'll read the comment thinking us and help them understand it but it's not it is confusing get delay you a psychologist you just tell immensely thankfully me that inaccurate comment really anyway so those small, kind to really good for when you do something insane you leg and dealing with aquatic engines has a lot of weird metrics that have to do with the way integers work on the computer and you can divide by a certain magic number and an chef whining it will do some dental figure the square root of something like this I was only a trick arm explaining what you do with that very get because at completely nonobvious but explaining what you doing in in miniature when the implantation can change drastically as I think not only is it a waste of time I think it's it's just west of it activated its awareness of everybody else's time becomes invented and is just let Gallagher that exactly right exactly so the last thing about commenting I will talk about is dead code and yeah you hear he not only wants about the current rate down better this year I'll hate some mice that were okay so I'm iterating my code I tend to do is I will take a block of code that sorta does what I want to do and then I will copy paste comments out and is my way of sort of like I was parked at one side and then I'll iterate iterate and now it's working that's great and then I'll delete out that dead code that I commented out at least that is why tried to arm often when I'm going to want done like I'm totally done was only unhappy as I go through not do a cleansing of purification purify my code and discuss and strip out anything it's the dead code because the dead code so creates a confusion for progress in your even for yourself going back over it was this commented out for why was at left in them was that part of an experiment was at a branch that your client were chiselling away at you come back to war or what why the hell is it there so still with the Commonwealth's kind of like going out often into testing something can kill exhibitors drunk and see what happens if I am getting much better is better used to be pretty bad because envisioning systems when the deed there today so I comment a chunky killer than anyone to come back to me have a collision and limitation of a function were two sections of function and generally what a tragedy when I do that is put comment on top of the kind that out could sing exactly what's going to do so when I can come back to the future Edna what's going on and then having an annotated eclampsia that it is in the limelight once was controlling spring up to go back in time and find you like it and what happens is a do have something that is working on an MITI contract is different cultures can be trusted or whatever more efficient whatever we have seen particular to optimise and then dig a bunch of old cord and then find out that the new one is catalogued in some way have to reintroduce something from the old one and not have to hand to and version control or puff control that is a huge P&S and actually just end up with a bunch of dead code and this is easy to go back and see what revisions were made in just pull the stuff forward again you are saying you the tools of come along way and I guess some of some of the wide-eyed programmers force of habit and that's an honour not moving with the with the times and using some the tools are available so I acknowledge that that even with those tools dead code is something that I still come across and the other the other form of dead code which is far more subtle is the the objects with a bunch of methods that are never called and you forever wandering do I need this as part of the framework or isn't it what will the OR from because you'll remember there was a two similarly named objects that I was working on and is I even got confused this is a years ago and I got confused I okay so which one was the one I was working on which is the one that I left the dead right so before we go any further I think you are reminded to quick break to talk about our first sponsor which is Solver and that's a calculation at by a quale for both Mac and iOS Louise it everyday ear is fantastic and that once you start using it it's layout I'm not happy I've just given up by their homage things easily through Google search and I just didn't resolve it at the summit quicker was out and jealous of Ms McGarr manner we have that unless you know so okay alright so I'm careful call costs over a calculation at because it's more than a calculator and it's quicker and easier to use a spreadsheet you start typing away in real time the answers will show up in the right-hand pane so say you want as they add two numbers were ones in hexadecimal and one decimal welding at time 0X FF +10 and there's your answer and you can have it in whichever you like say it's this is that easy converting currencies I guess I got €10 plus US$10 in AUD four Australian dollars boom yet the answer in Australian dollars it does all the currency conversion gets the rates and so on it's just magic so are crazy things that they do it if you want to crazy things you can yell it if you're having minutes even alive McKay categories one try 38 years to 2 weeks as minutes and it turns out I been alive 20,006,229 minutes or so something like that anyway you are sometime sometimes what summaries are for further pragmatic is the convergence between Celsius and Fahrenheit so if you type in 120 F in C it'll give you that in Celsius boom done it since it is that easy and it is a handful of examples you you type them in as you would think them and Indian instant result you can link different results together easily to create more complicated calculations ensure you working on your results list goes on and on it is awesome so. If you're not convinced then once you go to the URL machine notes and check outs the Mac version has attend a smart trial meaning you only pay for the days that you actively use it for such 10 days of total usage time so for me I use the trial for three days and I love the summit of the border there is that good so Solver is available through the Mac App Store and the iOS App Store and there are links to the apps from a quale's website if you use the URL in the show notes it'll help our shows are please use that you're wrong show notes are to learn more about this helpful and so thank you to a quale with their great app Solver for sponsoring pragmatic highly recommended and are now packages really is a yes like a set of auras is one of those ones are once you start using it you're like how did I not how do I not use this for forever because this is that good okay so arm it is related to commenting but it's not commenting its variable naming so we can talk about this and in my parlance for example in plc land data referred to as symbols or symbolics but you nature same deaf, right so I think that the overarching rule with with naming is verbosity is good within reason I think that if you variables and are being hundred and 50+ characters long you're really writing a sentence you probably need to work on that short note about that you chef for NetSuite at the new first the new metres measuring stick is it is to be used to be that there had to be less than like a characters now seek year variable names over tree-lined than that variable names method intermingled me in Objective-C even at severely pushing and why I think it's the able-bodied put in the same bucket one of methods variable CO why not on it's just part of is a good guideline right here you will level it is a variable name she is gonna be describing one thing while the method names can be describing a process and processes by its nature more complicated than one thing at a psychosocial it's a got a plum you method that so no ad number you know with number from number you whatever you allocated through the night seek can a disconnected network acts using radio why frequency the make you get lucky tree-lined (fair enough so definitely whatsoever verbosity but the it's okay to be verbose because of the tools therefore there is no there is no prize for having a short our variable name and one of the things that I five so I've been frustrated with the years is knowing how good is the development tools are for example our work with Xcode and then going into plc land in dealing with the fact that you're still restricted to stupid things like our 2432 characters you for a simple name and what century is this really guys and is the thing that really annoys me is that go the state-of-the-art of software development in plc land is abysmal so compared to what else is out there so I live in hope that someday they will step up and realise that you would be handy to have more than 24 characters for a series of linkages to invest in the compound technology is just don't honest is no pressure to I honestly don't know I know I can speak to one product because I know the answer for one product and one product is quartzite act and I was a small affectionately known shy tact arm it's so anyway it's built on D before and every time you change the column width in our indie before you have to do change the way it's compiled because everything is all based on fixed width columns and it's just ridiculously old no there is no link listed as none of that stuff so when they change and add more characters than increase the size the database file for the variable list and you know that then causes a backwards compatibility problem so every five so many years like every for five years they said okay well we've extended it now to 32 characters thumbs up in the morning really only 32 and goodness me and I guess it is difficult to hundred and 28 and Evelyn with the lunate you could very little limited ramps are yet while the promises symbolics for examiner Siemens plc aren't stored in the plc's memory and yet it stored an off-line file so you just download the raw code and what you see in the front end is that it overlays symbolics over the top so that its human readable soap in that case there is no there is no there is no advantage disadvantage and was sighted at Scala again yet sitting on the computer and the I've got a 5 yard terabyte hardly at its its BMV symbolics never get onto the device know one not not all PLCs are like some PLCs do they do they actually download the entire project to the memory and some PLCs are segregated so you'll have like a program memory and you'll have data memory so you download you literally doing a split download your downline compiled code to the run to the to the actual live program memory and downloading a copy the project for archival purposes and retrieval ladder has everything in so depends on the plc but went to school so you could you could pull out the entire source code for the program will bill you are your at school while was aligned with the physical object only getting better one of things that deducts those of you not all PLCs do it but you example are some PLCs arm I think are the quantums of the premiums and ignition eyes I try to remember it's been a while but if you do if you don't have to have a memory card for some of these is optional and if you don't have a memory card then you don't download the entire project to it arm and then it is download the compiled raw code at which point enviable and upload it you uploaded but your diskette raw memory addresses and raw function calls and you'll have like what the heck is FB 165 doing with Sam 7.3 good yes it's and believe me that's the worst, call out to get your callout and I'm done this for years but I used to get this of the callouts where the machine stop working is still in the morning you are losing thousands of dollars an hour and the like) and you're looking at is machining never seen before you log on your laptop and has no backup of the code you uploaded and you looking at this thing is like right I'm staring at raw machine code now have to figure out why machine isn't running after 20 drinks you had to Australia I'm on about that game and the mobility what is Buzz doing I will admit that some while ago I digress I digress so I need to do another owners need to say just about plc programming and all that stuff some David and okay so I think embedding the variable type into the variable name is sort of a pseudo-common practice would you say you like beef Hungarian adhesion arm not familiar that terminology I had my head up sorry okay so arm I forget the name again because he was a due Microsoft back in the 80s and early 90s and he the pipe utilised this way of naming variables which arm included tape information at the beginning saw if you had logo and window handle your BH_and_hW and D and a capital which registered a few new window and am set out each wind mean Linda do you mean you think I do oil Excel maybe my familiar would be like if you have an applicant & Ent MM AP and like u I and an account of any excesses of the people you that that is exactly what you going to be $knew that I do go cool but knowing that actually had an eye thinking created it which is boat where it could be something else those things that is names been attached to ever since sort of thing you call while the thing is I was looking at this recently on a project that I'm currently working on and I was reviewing someone else's code and what the problem is that they've had as the coding standards available arm you have written a comment what you will but anyhow what they did is if you can do that do not mix your naming schemes please so what they need is a said okay well when you have beef bullion I've integer okay so far so good shrug whatever you say when you have S4 setpoint and P4 process value but they can put in the same character position as in the first character somewhat okay so if I got a setpoint that is an integer which way around it as it ISOs at SI and their like well because not every variables can be a setpoint not aerials can be processed variable present-day so what they done as a essentially blended the two naming schemes together so it should be consistent like the first character if you do this, abbreviation thing which I guess is okay up to a point then you you know we did not begin in order Presidents rain yet exactly and eight they had defined it I'll just go soap you think it through as I guess my advice if you gonna do that sort of thing is I think there's an amount there is a diminishing return after a certain point because some some languages that are most expression heavily title the other sites a language like that in a lot of instances you can read the variable in context and figure out what it is and honestly I find sometimes the abbreviation concept to be a little bit redundant and I try not to do it myself I have done it to be consistent usually with other people's code but it's not really you I wouldn't necessarily recommend that I can I know what they were anyway so I had an honour to yes think about earlier you think in some languages maybe make sense Mednick many more for your stuff and potentially higher-level languages nine of the expense of thanking arm I think variable names describe with the variable it represents whether that is in afloat were double that may change with the question of development financial absolutely liquid safeguarded and location in world in afloat and then you discovered it. Can accurately represent says maps you might see Miller doubles arm unit ongoing afternoon in every single variable everywhere will be really annoying and uncertain replaceable light is the blunt hammer that will wipe out otherwise working code you then again what you do in seal something would be like you take – something to be an CG couldn't float but then when he prefix in front of Oliveira variables that you put coordinate the CEO are the lake exclusively fat and it's just a bunch of line noise and it gets annoying and again until should be doing this for you anyway did the dish be helping out with this canister are the same way with a calm a lot of programmers and this is even inherent in objects in a below program is written in C++ and this would put them in front of the member and variables over the classes yeah went so that whenever being into when they were being operated upon inside methods you can tell if a member variables being messed with or are some defined locally something big differently and Objective-C has this capability now where if you don't specifically synthesise property you are unable to get_property near which is only you know that you're messing with something directly arm are not a fan of that I really do like the and prefixing staff are_little SL because I usually just yourself died is to lessen our PM statues musical Anglos and AA diversely fielded what kind of abusing cognitive ability you get is that if you consider jewels aren't good enough great leg until should be colour a leading ladder telling you exactly what you do minor mistakes made you will exactly so I guess from what I'm what what bugs me about that the practice is that if people do it values like MM for a method like say I fretted to be 4 billion bubbler and it's it sort of that implicit then up then I have the rest of the variable name or method name in in full fully described in text so what is it exactly about the type that needs to be abbreviated that makes that different and special in okay you if you ride brilliant right bullion you know it's a highly which you if you really get on that road want to omit in 6 to 12 months time let's leave, naming convention and that naming convention is yellow whatever it is and that naming convention is arm Q short the qubit I know whatever I really gonna remember in 12 months time what the heck the queue stood for as I bet you not unless it's something you it's all your code and yet again you not working at senior in isolation and become your own naming things because you can an estimate anyway talk to Simon and if they operate in anybody else's could base aid to respect their their style are just my own and and as absurd and philosophical point need I don't like mixing uptake information with them into variable like you sang like a scene fluently with the corn in thing I would rather put it at unit one and then see OOD unit yes in a dead absolutely just rented out yet another absolutely nothing about writing it out to is the separation of names so you please go we said before don't do not use underscores arm that just looks so horribly horrible but I will have a different opinion on the right whistle in Objective-C methods yet under that issue yet okay but what about variable names easily are happy with them with other so follow have variable names again this_is_my_count l use one thing and did years ago and I think it would be well I made when I first differs imaginatively and actually anything that you shouldn't be calling in that he knew exactly what the hell you doing would be beaten insert of all school_star Nicole A lowercase and underscores structure be so instantly accumulated back 30_T canister arm and on top of that would be something that looked a lot more leg weight and what to: graphics and well confrontation there because foundation looking EPI on top of that arm and a confrontation mediocre: to this low-level stuff as needed to get stuff done but if you are just a general programmer you would only be operating at the Tokai foundation level and the reason I did this and envision a think it worked out very well is it was basically impossible to visually thinking that you had a very visual acuity were dropping down to a lower level and union if you're messing with wine at some other level you knew he was screwing up certainly if you win one of these when it is in generating function because it functions back then if you adding a function that cold anything it was THEY go to did look Legere confrontation function was screwing up because you know you were visibly going up to stack in terms of her ash action you genuinely do get silly_wine was visible where this is the lowest level of abstraction if you calling this Montara came if you got a good reason that if you going the other way give anywhere around you is strictly death did you I can go is fair enough so signs are consistent lake and these were functions given my day would never do that with Objective-C could no design is given objects you could publicly keep it its guard its own culture and language so that that's and that's fair enough use of the oven_at that school but I guess what I was one of things I thought of getting at is that it's okay to fill for the want of a better way of saying it sentence defying and that actually I don't precipitating a word that anyway when it's when you may make a new variable name into a sentence of sorts bit to help describe it you just using capital letters to didn't do to break apart the words because is nothing more frustrating to me than looking for a jumble of letters is a variable name irrespective what is_the beginning not to denote its level in the code but I guess more so about a week with it and I'm sorry I think we misunderstand you that pulse receipt yet when I was seeing and_income because he's a capital letter to break apart the words right in the keys unstuck but I would use an_Gavin would be logged his enemies and underscored a big part of the words RK apologising and apologised for gnosis because it's hard for me to communicate a lake you're yeah right it is actually tougher than I thought it would be to talk about arm but you honestly are custom-made ovens they are stored in right lullaby psychosis matters personal preference but as I wouldn't II don't either that's why it was visibly little it's like you did it signals uniquely levelling canister exactly discovery for transfer feel to it being my eye I yes so I guess what I'm railing against is all lowercase or run together like to know that that's the worst please God don't do that is illegible and an owner this is tangentially related and it's the wrong chauffeur that but still arm went with Donna hashtag on Twitter try and do it there to take take take your learnings from prudent from programming and and and breaking it at that up by using capitalisation and apply this to your your hash taking exercises in your spare time are because there is nothing worse than the ring hashtag a new tribe breakout okay that's pasta BNR Alcan a or is it on yes or if investors are worst were ways Michael Johnson and picks ago how to get money in their it was cold in designing and cold assigning units – this seems felt the same way yeah a cooking vaccine would tell you something that's brilliant lover once go find and the other one is definitely definite fund are known as right okay call before we go on arm I dislike take a quick moment to talk about a second sponsor this episode and that is a space nation and are they make a neat Mac and I was out for the iPhone and iPad called Hugh party H UE party antibody can control your life X or your Philips you bolts I thought to be an interesting fit for the show seeing as how life X have been a previous previous sponsor of the show and are still farm followers of this month so it's staff retry and has made the same features of getting you did you get out of a standard life X app such as candle flickers striving colour change based on the music playing three devices microphone are but in addition this to interesting will twist this app has is if you tap and hold the Hugh party iconic shaky device it turns the lights off and also if you tap and hold the icon and turning device in the air using the gyroscope and accelerometer changes the brighter setting of the bulb I can only really tested on a life X Bob since I don't have any Philips you Philips Hugh bulbs arm but you party for my life X within five seconds and the rest was pretty straight forward are the best parties it's a free app to try and on on both of them app stores the Mac App Store and the ice app store so I tried out if it works well for you or if you have more than two lightbulbs you want control are then the other $3.99 US are in a purchase or unlock the unlimited lights to control in your network so please visit this URL Hugh party all one on your Mac and I was device and following links the app store from there to help out show you can search through after the app store but if you use that URL in your browser of choice than that will that will help show out so thank you space nation's you party at the sponsoring pragmatic again arm I want to talk about something that Joel Sapolsky wrote about and he's written so much good stuff that's a rather generic comment decided I would start with lightning you and this was actually an arm and articles written back in 2000 but the thing is, like the mythical man month are its timeless so I kinda knew and I feel is nothing he doesn't write much anymore though is doing. As yet we are so it comes back to Ennis is now getting more into coding practice but it's still still important that is perfecting functions or objects the lease that's I guess the title of Rob's road leading to this because when you write an object or block I'm I'm a firm believer that you should spend as much time on it as you can and then leave alone so perfect as much as you can then leave alone try not to extended too much don't we factor it too much because you use you get buried with it our Bishop and Berryman code for weeks or months or hopefully not months yet your brain is like so connected with that coded all makes sense but if you take a break and you come back again I found that you can never really quite get back to work that the state of your brain was in when you wrote it have you found that yes very much so I think it's when my mentor comes with them C++ actually now is it a think well there's so many tools available to it that I think it think some programmers begin to fetishise the rating of the code and how arm and abstract but how our clever just how concise and smart it feels to written and cold here are a few of the semi-mature swiftly swift as some of the same things arm but mightily once you get into purpose is to build a product yes and think you have to keep that in mind circulate you UAB I objected to do what you needed to deal are in line and then make the next subject and if you have to come back to add some new functionality than than perfect I think what happens when you're starting out is that when you from Greg that object to 1st time it's not good enough it's it's good up in some way shall work with more experience you get to read these things one-off and there they will have a design sensibility that will last throughout the lifetime of the project you will have to go back and change of a bunch of stuff yet exactly and it's one of its this is this to effect is that I see is the whole just do enough to get it working and then move on because I gotta get this thing out and you then there's the effect of well the block it or EA in the functional GE almost does what I need but I just needed a little bit more sinister go inside a metal again six month later or something that I go please don't do that because if you put in all this effort and you've given you dilute your test cases and it is solid as you can make it you move on and then you just leave alone because EA I just I find it that's when things really start batteries that get crazy bugs is when you go in six months later and you just extended just a little bit in and I received a cake this is not only this is not don't mean this to sounds are Jesus the word is on either or choice I'm not saying that you can't extend it under saying that there's other ways of getting around it like you could either you could you could potentially kinda block you could put a wrap around it you could pluck out certain features I do know there's this other ways of dealing with it but you know and honestly I just I'm just a great believer that once code is been written arm and dealt with then it's best to leave it and wallowed while Paul quotes I just from the article of length initialised by Joel Sapolsky from 2000 was our it's hard to read code than it is to write it doesn't matter who you are – just as a reality so what is written you so electorally good that I think that is one of the arguments in favour of test driven development though is it that it gives you better ladder did not go back and actually not screwing anything up true so in theory a big proponent of tactician different driven development in practice are not many of my projects willingly themselves to it or at least have been figured out so now you it's it's one of those sometimes I catch myself arm talking to the junior engineers and saying you need to test you coding it has to code and then I'll quickly run and write some code and I might I really detest that man and he thinks well the meditating and you create weight where you can only obviously in my case there some tests I simply can't do automatically because of the nature of this garden and the plc software that I use is that then I don't lend ourselves to that but you if you have decent development tools sorry that's kind of the bane of my profession really is the status of registered depresses me daily being okay so once you once you coders out there there's this distant terminology I like to use or soak time and I I don't know if accident engineering term is actually comes I think more from our electrical engineering isn't what you the idea is it's it's so if you've got a product so like a suitable business of Nortel so we will were making the macrocell BTS or any of our our Tronics products is you put into an oven and you run my temperature and before that a heat soak and it's designed to accelerate any failure rates she might have if you're really really so inclined you would get a temp to cycling our oven such that it would rent the temperature at a private at attempt profile and that would simulate the effect of the devices being in the field because you know there is core for quite some time and even still now there are lots of places where you don't have temperature and humidity controlled environment so you're putting these cards into a base station and its out the sticks during the winter time it's it's quite cold during sometimes quite hot the 85 manager put something out here in Canada typically range from Lake -30 in the winter and Celsius to lacklustre in the summer of your man I felt it was in Calgary man for you but pigmented temperatures in its yet massive massive variation but in the daily one is just as bad and I'm sort of treading on reliability and inhibit you the idea is that you tend to cycling and what what we are different tetracycline get differential expansion rates and that introduces fractures and love of the point is that heat soak is an soak time is a concept that I sort of ripped off from that but I have heard it used the consensus offer as well and it sort of used interchangeably with the all-time or real-world use or what what term would you use it out there is in use what terminology would you typically used to describe that our well automated unit testing no I mean yours coders out there in the fields and live in use by our customers for 12 months what would you refer to that time as well are pointless why regularly 12 months there is no I don't think there are 1800 ready terms that okay sometimes good to me also rubber so time Lego a modest Dragon in because it works for me and the idea is that it's out there it's been soaked in real-world use but not physically wet and so so was the coders out there in the world has been heavily used and exercise I guess that's the caveat exercised okay I I love it when people say we've had 5000 downloads of our of Ararat of unknowns is that men and I was used at the site or the views of the five seconds and that's crashed and I stopped using it is been out there for six months so it must be solid no no I mean actually exercising and using your code so hopefully that point the more bugs have been fixed because you beginners reports back in a psycho case that's crashing a lot less now in the eight solid and stable my code base is nice and robust so the longer the soak time the longer the stress testing the Betty product is inevitably can a beta but your code is inevitably going to be in the longer that goes the more it has to reinforce in your mind don't mess with the code because it's not yet the temptation is arbiter can be done so much better if while no no no don't do that and another grateful quote from Giles article is when you start from scratch there's actually no reason to believe that you can do a better job than you did the first time and it seems a disabled leg 99% aware there with them yet in fact it's a tendon reality ability to levy an exterior executive or something five years ago and come back to you can be cognitive and still don't think you should fix it could have got affected and inevitable affected as you shop that kinda sums it yet exactly as I find that the idea of people to say I will go tweak this and make it better and thinking a is it broken no okay so arm there is no be well so there's anything that's a matter of what you focusing on that I think that the correcting is to be focusing on the productivity that are the usefulness towards the customer primarily yet found out but I think some people see code and a lake I could do it better if I rejected this algorithm will decide solve one problem one minimal time and it has something for anybody as if the answer is none then don't do it if it's working now are you doing is potentially introducing bugs and certainly not actually solving apartment anybody potentially treating them and holiday time is spent being fancy and then fixing being fancy is timely you haven't spent fixing other real problems that real people are facing site to get into MetLife except for maybe your ego that you need something fancier yet and that the problem is that that's a whole the last bit what you said is there is a belief that you can do it better or fancier the second time around and inevitably I don't think it's necessarily true not all the time I most the time and it isn't so it's just even if you do care cement used to have fixed anyone problems it doesn't matter if it's fancier and make someone once said over I wish I had the exact the person said this but done re-re-factoring is a loss leading exercises something like that so you I don't know what it is re-factoring when it's needed I'll sure sure you just have to identify the need rather than the desire you if you've got a little bigger if you exactly that if you fight fundamentally messed up the structure of your object and you need to add a bunch of functionality and is simply no way to do it any other way than to rewrite it and then re-factor at to include that functionality you okay fine that's fine but honestly that doesn't happen as often as you might as well once you got coders out there I find it doesn't do that doesn't happen some team again so are a few more points are small and so grouping data into structures and this may be over to an object-oriented code I keep saying object-oriented because this sounds cool against whatever our grouping data structures are something that is a choice and a lot of me a plc platforms but it just for me it makes finding daily looking for much quicker and a lot more sensible rather just having the ONS at Harry Perry people written articles about the global variables versus inner and global as evil and the global is okay up to a point are but you shouldn't do anything you can to minimise global and ends and pass around what you need and in group it because otherwise it's really hard to find out how you looking for and I realised I just crossed about three or four different programming styles in the last five sentences so that and others, risky arm their thoughts comments AA think that's honest and arguable and the structures are in terms of global semi in actually being exceedingly rare here in an Objective-C Oliver classes are effectively globals that's one thing shop and the application is available because inner guesswork you did only one process running that just makes sense arm gulping down into structures teams is it is a no-brainer shows a concern been doing that since first year since Pascal for as long as you possibly can arm even before I could wrap my head around what an object was at a date that structures would most obvious way to get around getting things done and even for debate anymore and if you don't think it is and I guess this is whatever problems I had when I put this in the notes to to talk about is that what point is this just given and understood and we been doing this for four long enough now that we just accept it and maybe that's just one of those and we should just move on so plastisol will one day that I want to bring up while we are chatting that this is a good old work are cold called complete which if you have made is delete and to give public fears around how someone arm it is working by our game can blacken his name Charles Petzold and Hannah and I got a good listener With this stigma can't Steve McConnell got a guest and gutter yet yes Stephen, Billy Geoghegan Makassar press 1983 this book is terrific is written in a genetically made use of men keep in mind that it may be a little bit outdated the second edition is 2004 so minute a little bit minor but it is terrific work that Lizard Island is gonna start transacting finishes a chapter about exactly what you just type the arm and highly recommended anybody you say I haven't read it and I am now going to read so you really sure it's still worth your time and you just skimp to the sofa good the Wikipedia page late on the bottom there is an external link cold called complete checklists if it is scanty that it's literally asking the question chatting cool you could you can look at structure and belay and so undertook a checklist format is basically it's a new rating structure have you thought about this this test SNS and if you can check our file of those boxes when having made that decision that set of decisions you can feel confident that you've got a pretty decent design and you'll have to check Oliver boxes his it's just more like a mental lake you know it's a mental model of looking at things and if you do if you can check a box that has many advantages means that you've considered why you can check that box so to get where think most of the Nat covers her inheritance and structures and globals are not kinds of stuff about it even covers commenting which rotunda before call you and I'm a double bubble for that is that this this whole episode talking about no all the different things that we think go into making a better code and an dos and don'ts and so on it this is not new to Sabine while a well covered topic and so on but I hadn't covered specifically on the show and I thought it's definitely worth exploring so from now from the show's point of view so arm is just our I'm glad that's the moment my reading lists and is arm I will I will get that in the old arm and let you know what I think it is actually compellingly quickly your analogous territory yet well written cool okay so are a few more points I had an inner arm leave open for any others that you want to quickly mention and that is that some breaking breaking the code down so breakdown arm is terrible okay so when you're about to write and this is the thing when you're about to write you you you program your code whatever just take a little bit of time up front to map out roughly the objects or blocks structures functions that you use doesn't have to be to the nth level of detail necessarily but as the project gets bigger and you got more and more people on the goodness sake you absolutely have to do this but it's still a very useful exercise if you're one one-person show arm and air and on bigger projects as well just write in a face back so that people know what the hell to expect from your objects from you from your functions and so on because if you're gonna work on the subject they can work on that one yet you gotta know how the hell the messaging is going between them you've got to find you just value had a far sure absolutely busy would you get the point exactly was public and get the kind you absolutely and I'm not saying the format in which it is documented in in my yet in my industry we typically do unfortunately in a Word document the buts on whatever I can't whenever I can stop them from using that that era and is not a word versus pages, this is our I'm a great believer in one was put in the code and distributor framework and so right is a framework of the code and you can't figure it out and that it but never wants find one and a win that argument are nevermind so yet so you deftly breakdown arm like MC Hammer card to bring it up again you know why night second time round the joke is funnier and really anything else to add that one guy 11 PM 89 think is good advice so for me I think if a minimum ascended dismantled and presented further from the truth that are what you had a lot of experience you don't necessarily need to put in at which time up ahead because you know the general structure and that you gonna do you not mean it seek all this kind of problem okay here is is ruminative and its it's a common approach that is not just for me but is what have learned from working on other projects that are similar to arm settle necessarily need to grade 11 object that is specifically certainly you do when you documented for other people is great arm bitterly using common patterns and common approaches then are you doing anything fancy pants then you don't necessarily need to spend that much time up front that said you measure twice, once never hurt anybody yet so absolute doesn't deftly give it some thought there especially if you are unsure of how to approach a subject that the problem don't just go in guns blazing did get will not work if the farming is seen before and used you've seen fear for different solutions and using one of them would do them be particularly successful Oliver to have feelings well know you better you can coal a bunch of possibilities right after beginning eight yet exactly as a snack that becomes more got better with time but if you don't know how you can put something down just start you exactly and a network that energy to do that then we build want 1/3 way because guess what it's not convenient here immediate working but you a must for that expression mainly you build the first one and any third wake is discouraging any good intimate way aria world that's that's that's the way of doing the first part we just can't figure anything out arm but instead the nitty-gritty we have doing it ran like usually die cousins are screwed up in the neck again well this can succeed are taken apart and build up in the new one using anything that you've learnt first time exactly right and something else that occurs to me when we talk about this is that just because you do set out path early on doesn't mean you're stuck with it and if you and you if you feel you are you do not make a rod for your own back in that sense then okay that that they came out wrong it's okay to make the rod for your back but you can modify that rod as you go if necessary and the longer you wait to tweak it the more pain you will feel so if you get in a few weeks into the development let's say and it's gonna take your you to work for three months and a better code on a project and it comes out after a few weeks you realise you need to extend this this in Corkery or change the subject slightly will modify this and so on yet for goodness sake do it sooner rather than later otherwise you is just so much more work and pain the longer you let it go because I've I've noticed that there's a in larger companies there is this this momentum affect whereby it is in the interface back so that's what you gonna get and if you add things are longer ago is the harder it gets in the psycho Hodges was similar to spoken up sooner and you speak to the development by now like I realise this weeks ago why did you say something and I are well because you are political reasons are whenever you policy expression politics was a discussion of solution be dense as the hobgoblin of a small mind that's called something like that year basically just means that if you just give you just being obediently foolishly lectures it is being obedient in this case to the to the plan are you ultimately just being a dummy you need to continuously adapt the plant to what you've been learning through everything out but if you not being responsive and I mean that in the technical terms but if you not responding as an organisation to what you've learned as a building project are you not helping is often anyway/and a lot of that pressure comes from you project managers that all the look at wealth only care that you ship something on this date and anything that requires going back sounds like a bad thing up front but the funny thing is the software is that sometimes exactly be a good thing if you generate early it can save you time in the long run and trying to explain that to someone in project management that doesn't understand software that thinks linearly is an exercise in endless frustration so can I can actually had a few good expenses with an party managers that have been trained to one had a time that we need to make changes sure and then did some of the top prisoners reticent to do while side I do want to just bash on anyone like this canister can I think it's worth pointing out is that this kind of what was the court of article you a foolish consistency is the hobgoblin of little minds cool arm but this kind of foolish consistency can come from anybody organisation you anybody constrictive to fit in the mud refused to change refused to arm realised that things will need to change exactly sell in outside it often has project managers considered less close to the start but it doesn't have to be a can be a programmer who's got a particular beginner's mind about taking a particular approach that is currently not working or a designer at the psyche he will bend or she want band because it's either just so enamoured with the designer when it becomes impossible to actually implement digital the dead they will give it up in NASA as its it's a it's a fair point and I honestly I I Reagan project matters all the time are because you are the bane of my existence but have a government yet are you damn right but the thing is that I say that in a next breath I got my head up and say I've done plenty project management myself and I me and I on a couple of occasions I was accused of yellow not fully comprehending yellow what will what I was adjudicating on and the problem is the level at which your managing social project managing at a code level and just just looking at code that's one thing but if you're the project you take a step up and when I was a in terms of level of what your overall overarching linear project plan you know for example I worked at MK engineering and we built switchboards we did the physical installation we wrote the code all of that but there all very different things are very different animals and also have a lot of experience running the code are I had less experience building switchboards of that change the longer work there and same of the site installation side very little installation experience and then I IQ my those years went by was doing a project management I would often get in strike particularly with the workshop that were building switchboards because they would say well you're you've given us how the longer fit blah blah the switchboard we need double that amount time and site while okay fine semi III acknowledge the fact that yes I been a project manager yes I have messed up as well sometimes but you know I'm also a great believer that that's an unfair position to put me in and the EA because I position what I was told look you've got to do the project mention on the whole thing and on larger projects we can justify the cost codes and say well okay am we can have a representative from the workshop manage their schedule were represented from the install team do their schedule and we can have you the software schedule John migrate that would work perfectly on the really big projects like the $10 million projects that that worked because we had enough cost to love cost codes to go around of money in the budget to do that however when it was just me and the budget was tight there like what we got not make the one-person project manager site or your problem might have yea Gabby don't have the expertise in the various fields not as not to be at that point in my creditors going back 67 years ago before I'd name of even eight years ago time flies and having fun but yah I was still getting that experience and I'm a lot better now owe you to follow switchboard VI 14 to 16 weeks for that one because it's yellow 10 m long and when wise because you get thrown in the deep end shop absolutely so at all project measures out there I don't hate you okay I love you really bite arm just note that sometimes there is frustration over anyway all right the asylum and the last thing that I had to talk about group quickly is testing and that the number one point I want to make about testing that irritates me is that so many people test to make and they don't test a break and a love that expression because it rhymes yet estimate test breaks in other words if you are not a member that arm it means I mean test the functionality such that it functions the way the specification has described the way that you have functionally intended it to work so I'm going to send this message and I'm going to get this response Roman act on this and on to get that blah blah all that is testing to make another was make it work the weights intended one outstanding gibberish centre something is out of bounds so something that is illegal invalid i.e. testing that test a break and try and break this thing and it doesn't just work on a honour code level it got to the user interface level there is user interface you know click on stuff out of sequence do stuff that that no get someone is never seen it before to try and break it because you just think it no matter how long you've been doing this you think this code is readership almost readership can name names but someone recently that we both are acquainted with made this comment recently One of Your Shows regarding Stuff That They Broke Where It Says A Few Weeks Away from Being Shipped Anyway and and Then It Went out Contesting a Psycho Crap so That the Point Is That Getting Other People Involved to Try and Break It You Know Absolutely Invaluable and Is When You Test That You Should Test Both Angles That That's I Guess That's What Drives and As for What He Should Test or Not I Think That's Self-Explanatory Please God Yes Tested so I Think Encounter Guilty Them and Staff Are Little Implement of the German Guy Tested out and We Look to Future Works Eventually after a Couple of Iterations Arm You Compare and Contrast Said to Somebody Lake Daniel Junket Given Business after and He Will Break It within Minutes As Matter What It Is Merely Really Get Breaking Stuff and It Really SM It Is Frustrating To Think It's Good and I Nine Pushback Arm Vote Are Good so Wanting to Learned Early on and Made My Videogame Career Is That the Test Is Worth Their Weight in Gold We Are Especially Videogames It Did. After Young Kids It Dependently Crap Because This Kids Come in Thinking That Lake Unaccountably Lit Again Sunday and Seek You Are Happy to Plan Book and Incident #Arm and You Have Word Incentives That the Number of Bugs Large Enough That Sellers Can Encourage in Terms of the Book Is Pretty Good Testament to Give Me Bookcase Will Sit with You and Exactly Figured out Is Honegger That Second Blessing from God Their Arm and Because A Lot Of Points Do Exactly Say the ED Test to Greg As Wonderful and I Have It in Because Some My Main Loop Is a Get It in an Endorphin Rush from the Credit Process Rachel Leiser Created Fina from Making Something at Work in Australia Yellow, Get That Nothing about a Bench Could Run It Doesn't Work Iterate It Reiterate Our Networks Are That's Amazing How Russia and Sumps Often along the Way I'll Notice That Something Else Could up Cancer Than Article Fix That but a Very Seldomly Just during My Regular Minute Due Just to My Regular Daily Day I Do Not Want to Directly out That in Working out My Own out from Our Company with Two Partners so I Spent Some Time Can Be Done at Visalia and Snyder Needed Anything for Me I Get I Think Wallet Were Things That Occurs to Me Is That We Ourselves the Developers of the Code Specifically That We've Developed Are Perhaps Not the Best People to Be Trying to Break That Which We Created You Really Do What You Don't Even Want to See a Quick yet What I Said If This Is a Part of It Is Part of Our Pride I Think Made to an Extent Once You Noticing Things in Games Where Once Again Pointed out to Me Unlike in a Way I've Been Cuddling at the Aidan New Kind of Maybe in the Back Method That Was Not Gonna Work Your so Just Didn't Do It Again As It Is We Are Dynamic Systems of You Know You Can Avoid We're Educators That You Subconsciously Now and Want to Be Pointed out to Make You Can Back My Mind a Continuous Public School up in Some Way Distressing Beginning Ultimately You Can Get Get Software That Somebody Having Been Absolutely so Are I Guess That That Advice by Extension Is That If You're Working on Your Own You Have To Having a Beta Is Absolutely Essential If You Are Are Working in a Team Having Other People Trying the Team Try and Break Your Code Are Is Is It Is Essential As Far As I'm Concerned and When It Comes to Adding Functionality Is Important to Go Back over the the Tests and Regression Test Those Things That You Already Are Do to Try and Exercise and Try and Break the Code Again Because Every Time You Modify the Code's Potential for You to Mess up What Previously Used to Work on Is Nothing That That Irritates Me Is That People Add Functionality to a Function or an Object and I'll Say I'll I Only Have To Test That the Bit That I Put in That the New Bit Works and What What about All Your Right Regression Testing on All the Other Things to Break the Code and the like Are but Only Change This One Line with Code That Is Running You Know the Equipment but in My Particular Case Specifically the Moment in Oil and Gas If You Get It Wrong I Mean There Are Some Pretty Massive Consequences so You Gotta Do You Even You and Think Even If It Is Pretty Stuff to the App Store and You Put Something out There Artist Fix This Bug Push It out Time and Review Time Is Money Let's Get out There Got Angry Customers Will Guess Where Fix One Problem Is Credit to New Problems That Say by Accident and Then Suddenly like Are Now No You Take That Time Try and Break It Make Sure That It's Solid before You Be Sent out That's That's Been Sober Not Sure Pammy Otherwise I Can Say That I Thought about Maybe Two or Three More but Modestly the Night I Completely Agree Testing Is Invaluable Absolutely so That's the End of My List Did You Have Anything Else That You Wanted to Talk about That You See As Being Critical or Useful Are in Terms of Going to Code Think We Covered Most Everything That They Wanted to Cover Arm Most Exemplar Gut Break That Thing up and Could Complete Yes Which despite Being 20 Years Old I Still Think Has Some Are Tremendous Insights and Is Is Invaluable to Programs Especially New Programs It's It's It's Remarkable Busywork It's Hasn't Just Lasted 20 Years of Little Parlour Lass Another 20 That Instigated It You Call or Write Well Though We Might Wrap It up There and Done We've Had A Few Questions Are, during the Show Are in a Chat Room so Well Please Stick around after the Show and Will Go to a Q&A Are and That Will Be Appear after the after the Outer Music so One so Keep Listening but If You like Talk More about This Are You Can Reach Me on Twitter at John Geagea and I Trigger My Writing Attack If You'd like to Send Any Feedback Please Use the Feedback from the Website and That's We Also Find Shona to the Upside in the Pod Casts Pragmatic in Ossified Pragmatic Show on Twitter to See Show Announcements like Going Live and Other Related Stuff Are Also like to Thank My Guest Host Our Guy English and What's the Best Way to Building Contingency Guy at GTE on Twitter and Made of a Very Occasionally It Can Go to Carmen Added Sugar Debug Fantastic Definite Was the Debug It's Great If You're If You're in the Programming It Is Awesome Are You the Latest One Also the Rebel Arm Revolution 61 Was so Was Really Good to so Jolly Others As Agreed Elegantly That One Coming out Soon with the It's Conversation with Dad Done Mountain and Don't Need Again after All Okay Even Having Been Manly at Scoop through a Lesson Done Deliberately at the Percentages Internet Status That's Right I Go Fine I Am Thank You for Introducing Me to Don Don Melton Was Introduced to Me like Personally That I Had No Idea He Was Fired on Debug and Done These Studies Great Guy so Lots of You so This Is Getting His Getting Present in I'm Excited about That Now Had a Time so Cool Riley Also Thanked out to Sponsors for This Episode so Thank You to Our Solvent by a Quality for Sponsoring Pragmatic You Try to Calculator a Spreadsheet That You Haven't Tried Solve You're Missing out on a Great App That Fits Perfectly with the Way Your Brain Actually Thinks about Doing a Calculation so Was Available through the App Stores without Our Links from Equalities Website That If You Use Your on the Show Notes It'll Help out Pragmatic so Please Use That You're on the Show Notes to Learn More about This Helpful the Lap and Are Also like to Thank a Space Nation and There May You Party for Sponsoring a Show If You Have Life Excellent Philips You Bolts or Both Even You Party Can Control Them and at Some the Defects It's a Free App for up to 2 Bulbs to Check It out A Few Party or for More and Are for a Live Business Please Stick around Our Will Be Doing a Q&A after the Show and Given Us Next Listening and Thinking I Think You Why You X Weighing I'm Sorry for Mispronouncing That Mate Are Okay Don't Really Want to Open That Big Can of Worms but What about Fighting Political Battles When Trying to Get a Technical Direction Arm I Guess My Social Play Self but I Agree with You It Is Our World Is Really Had to Give a Single Answer to a Political Battle Because It's the Nature of Human Interaction the Dance I Was Can Be Different Arm II Think One Thing That You Need to Be Aware of Is That the Best Technical Decisions Aren't Necessarily the Best Decisions for the Product Yes Not Only That Arm and I Think That in All Cases That the Best Decision for the Product at the Best Decisions in Line with What the Company Wants It Cannot Amend Absolutely Are You Could Have a Product That Arm I Don't Know Pushes Some Other Aspect of the Company Amend a Sticker and Take up an Example That Haven't Worked and Secondly to Ballistic at the Twitter near to Client Clearly Make Some Decisions and Added Another Best Product Obviously Take the Depot Being a Big Line and Sponsored Ads and Make a Bunch of Other Stuff and Arm Their Own Best and Lined with the Cause of the Company so Make the Product Were a Spirit of Work with the Hope of Making the Company Better Arm and Selected in Terms of the Technical Design You Needed to Understand That You Find At Least Three Access Metrics You Read John and Janet Figure the Best the Best Solution Filed His Various Girls and They May Be Weighted Differently Depending on What Stage of the Development Aware of the Financial Stress the Company Are at Arm Symptoms of Dealing with the Politics I Think You Really Need to Try to Understand Everybody Else's Perspective and Wider Eternity Were Dead Changer Because While A Lot Of It Sounds Really Stupid Most People Have a Good Reason You I Think That's the List from Their Perspective Rate the You Could Be Wrong but Yeah I Know I I Agree I Think the Biggest Problem That That You Face in a Large Organisation When Developing Software Is That Arm While Honestly Doing Any Kind of Design to Be Honest Is That When You Getting Political Push People Tend to Simplify It and They Tend to Vilify the People Are Pushing That down and Is SII Why Don't Really Understand a Technical Problem so That Really Know This Is Really the Wrong Decision and and so and so Forth and I Think Everyone Sort of Guilty to That of Is at Some Point Being Being the Programmer of the Engineer That Is Trying to Do the Implementation and Steer out Our Initial Reaction Is All Politics Are Stupid and They Just Understand and so and so Forth but the Funny Thing I Found Is That Once You Start Getting into the Higher up in the Business and You Get to Those Business Level Decisions They Start to Make a Little Bit More Sensibly Don't Get Me Wrong Daily Wrong There's Always Gonna Be an Idiot That Says I Want Pink Because It's Spinks My Colour and Whatever and You'll Be Some Kind of Nonsense That Makes No Difference to Anything As No Value and Your Stronger Technical Direction What Colour You Want This Thing to Be and Is Yellow Whereas the Far More Useful Approach Would Be Well Now with We We Know the Blue Is a Nice Colour Because It Relaxes People or Whatever Take Microsoft Looked into What Shade of Blue Was the Most Relaxing for Their Background at Some Point I Forget That ;-) Am in a No Google and AB Tested a Bunch Colours One Point in so You Have a Minute As Is Ridiculous Almost Ridiculous As That Sounds Fun As Reason That Someone Such As Blu-Ray Shop Is Printed out Exactly How Many Really Look like the Skyblue but Anyway Are I Guess What I Mean Is That Once You Get Talking to the People Who Are Making Political Decisions and Understand When Coming from You Might Just Be Surprised That There Really Isn't a Political Will Necessarily It's More about a Arm You Need to Understand the Bigger Picture and It's so Easy to Get Stuck into the Work into the No Get Stuck into the Weeds of the Development That You Just You Vilify the Poplar Politics and Is Stuck in All Worked up and Angry about It When the Reality Is You Know Chillout Man Just Think Big One for Me Coming up Was Arm Game Design Versus Marketing Failure Were Injured As a Easily Screw You with Your Default against Gonna Do a Winemaking Segment Just Cancel a Scan and Elect Our Streak and You Can Convince Them and Is That's Seen Marking Job Is to Convince Them That You Are a Severity Vision Is the Correct Way and Everybody Should Buy It Is Not Appreciating What They Actually Do for a Job You Click the It's It's a Two-Way Street and My Seeing That Marketing Should Dictate All of Your Decisions and Seeing the Pretending That They Don't Have Any Kind of Employer Insight into the outside World Is Is Pure Folly Shall Initially Working Together in Order to Counter Come to a Solution That Did That Hits As Many of the Earthly Arm at the Goals of the Various Points of the Organisation Is As Possible Which Is into Sailing Design Anything by Committee but It Is At Least Be Respectful of What Other People in the Company Trying to Achieve Because Maintains That Attending Going on Just As Frustrated They Were the Projects Going Poorly There Are Still Going on Being Frustrated Project, Poorly so If You Can Just Get Mad at Each Other or You Can Canada Traded Work It out and Are Guaranteed to GoToMeeting without Perspective Are You Will Come up with a Buriers of Yourself You Absolutely It's All about Frame of Mind yet Which Isn't Which Is Just Me That This Is a Selfish Thing but It Will Get Better Results by Understanding Other People's Position Because You Will Know You Can Learn to Understand Where They Can Can Negotiate and When They Really Cant and That Understanding You Can Better Forget How to Fit Your Plans and Your Objectives into That Framework Called Lie I Typed I Do That I Totally Agree and on the Marketing Side Yeah It's It's It's Tough Because Marketing Has This Stigma Almost Exactly Associated with It and Where You Can One Hit Them yet Some Are the Episode of Gilbert's Arm Where Our Daughter Comes in and Says Arm to the Marketing Department of the Nirvana Company and He Sits down to the Marketing Department Is the I Can't Believe You Have Accompanied Our Marketing Department so They Create a Marketing Department for Me Sits down on the Marketing Guy across Tables Is about As Underwater Barbecues Is Okay Just a Couple of Thoughts As the Marking I'm One Doesn't Have To Be Underwater and to Visit Have To Be a Barbecue Psychic So Go and and That's the Perception Is That Marketing Somehow Don't Know What They're Doing but the Reality Is Marketing Know A Lot More about Marketing You Know A Lot More about Programming That's What You're Doing Each of Your Respective Jobs the Two of You Working Together Will Get a Better End Result Will Get Silly Use Anything Lately and in the Framework of the Cartoon and the Person Who Developed the Underwater Barbecue Wasn't Able to Communicate to the Marketing Team Why That Was a Good Thing yet Only to Students to Reactions to That Mark and Kim Blake Had I Understand under What America and That's Because the Development Team Needs a Little Bit of a Patch Gay You Need to Build a Patch in a Certain Way to Be like None of This Is Gallagher's Look at This without You Need to Have a Little of Internet Marketing from Your Own Thing You Need to Be Other Sell You Your Own Perspective and to Do That You Need to Understand Why There One by an Intimate and This Confusing Counterterrorism Ducking Internally and Externally They Can Pick You in Marketing People and Something They Can Patch It out to the outside World I Think That You Need Them to Buy into Your Project As to That You Can Either Be like Our School Is Writing As Is Idiot or You Can Join with the Additive Leg 9 to 11 Convinces Us and Kissed It Really Is Arson You and the Longer I Been Doing This Sort of Thing It Pitching the Idea As You Say It's Not Just Important to the Marketing That Is Thing Picture to Yourself First If You Can't Pitch It to Yourself and Convince Yourself That It's a Good Idea Why You Bothering Pitching at Anybody Else If You Can Do That and Start That and Then Pitted to Marketing or You Know the Hot High-Level Management or Whoever Is It Has the Final Say for a Feature for Your Product Whatever You Then You Gotta Start There and Absolutely It's All about You Hate It Has To Be Something Useful Other Than Just It It Would Be Cool If Insert Feature Here Right Because That's Not Enough Just Isn't the Time Is Money so and I Know Sounds Ruthless but Honestly That's Business and That's Just Reality and Not Thinking like That You Could Be in Business, I Think Is a Businessman and in and of Our Games As Much As Anybody Shall or Even Merely Opinion Insufferably Pinning Itself It Is Not Useful and Doesn't Deserve to Succeed in the Marketplace Designer That It You Still Need to Own That They Could Just Get It Because You You've Got Something Cool Obviously You Are Exactly like You Should Buy This Because It's Cool under the Hood but You Can't See It in As Features but It's Cool under the Hood Man so Yes You Exactly How You Felt Not to Have Are Also Another Question Arm Last One Last One Page of the Study the Question Just for the Listeners from Mac Bertie in the Chat Room Thanks to This One Are Any Tips or Ideas on Applying Behaviour Driven Development to Apps That Are Mostly UI Experience Focused Some Activities Provided a More Arm More Generally Says Provide or He or She Says They Say Are Providing a Kind of Contracts How the App Should Work Instead of Creating Tests for the Apps Algorithms so Care Also Taking the Lead Working from around the Firm Was a Development Process and That the Agile Stories Yes Something like That and NEC Defines in Stories and Then You Keep Developing Rapidly for the Story You Essentially Your Your Testability or Your Your Judgement for the Success of Your Testability Is Done at a Higher Level of the UI Arm for Our UI Experience Level Rather Than Testing the Raw Algorithms Lease That's the Way I'm Reading the Question I Think Is Night in a Wide Think That Some Thing As a Natural Wedding Developed Is Understanding It Correctly Shall I Think It's a Natural Wear Developing Software and Menu You Figure out How You Want Your Software to Be Used and Then You Keep Innovating and Intellect Fits That Use Case Eyesight As I Said As Layers Are You Start out at the Lowest Level and Is Basis Can Just Confirm That Something like Stories Yes so Different from That Agile Development Sort of Angle Than I Think That a Was Certainly It Is Coming from the Game World Yeah and You Develop the Level with a Certain Number of Scenarios and an Hour or Less Little Cool Things One Happen Anyway to Get Him in the Engine and You Develop Early Assets in Order to Make That Happen and until That Happens You Know I Don't and Is Certainly in Games You Don't Really Get to Deliver Unit Testing Just Because I Said Earlier It's It's a Vast Dynamic System and Testing Anyone Unit Is Cute but It Doesn't Really Help the Yarn in Dynamic System so There Is so Much Stead Flying around It's Really Hard to Figure out What What Anything Means End in Isolation Which Is What Unit Testing Is about a Texan in Isolation Any Tested Interchange System That Doesn't Really Help Because the Magic Comes Out Of the System Other Than the Isolation RBA NOAA Certainly When I Develop My Software a Aim to Play at Only 90 Do an Adjunct & That We Have a Use Case We Wanted Achieved and We Did That Our Images Keep Innovating until We Get at the Any Articles yet We Try to Resolve Them Arm If I'm Understanding This BDG Specifically Correctly Is That It's Unit Testing Plus Vendor Story Stuff Are Whereas in the Games and Stuff I Do a Aid Often End up Skipping the D Unit Testing Stuff Johnny Gaona Has Been a and Mostly Testing Is the Title Aeroflot Unit Uses Accident Interacting with Rather Than the Entire Stack Which Is What I Think BDG Is Chanted yet What What Okay so What I'm Doing Testing on on My Code Will Do As I Will Start and I Will Get the Code at a Low Level Assault As Possible and Make Sure This Test May Test Break and Those Will Be Very Very Thorough Testing but Once You Start Assembling the Blocks Together I Practice IIP Will Stop Doing That Unless There Is a Big Issue of Course but Then I Go Back to Tariq to Go Back over That That That That the Lower-Level Testing but When You Get to the Top End Though the End-To-End Functional Testing Perhaps Is the Best Way I Describe It Are Whereby You You've Got This Advice No Calls and a Bunch of Difference Are You Functions to Do What It Could Do and Then You Get a Certain Result Whatever That Might Be and I'll Have a List of Tests and Ensure That Those Tests Job but That They Pass but I Will Seldom Go Back to That Low Level after That Unless There Is a Big Problem so All I'm Doing Mass Modifications and I'm Going to Iraq and Regression Test A Lot Of It That You Know Hopefully That Doesn't Happen Too Often Because It Really Sucks but Any so I'm Not Sure That Is the Question That Arm Thank You for the Questions Guys This Is a Again Is a New Thing and Trying so I Really Do Appreciate That the Questions Hopefully I'm Shovel up and Running in the Next Few Weeks and That Will Be a Bit More Automated and Are As a Show Goes out and People Become Aware That It Is Being Streamed Live Then Hopefully Will Also Gets More People but the Special Thank You Everyone Is Listening Line the Chat Room Run out Your Best Thanks to Come along and Enjoining a Really Depreciated the Symantec Family No Worries Thank Youďż˝
Duration 1 hour, 54 minutes and 12 seconds Direct Download
Episode Sponsors:
Soulver: You’ve tried a calculator and a spreadsheet but if you haven’t tried Soulver yet you’re missing out on a great app that fits perfectly with the way your brain actually thinks about a calculation. Soulver is available through both Mac and iOS App Stores but be sure to follow the link below to help support the show. Visit to learn more.

Hue Party by Space Nation: If you have LIFX or Philips Hue light bulbs, Hue Party can control them and add some neat effects. It’s a free app for up to 2 bulbs. Visit to learn more.

Show Notes

Related Links:

Premium supporters have access to ad-free, early released episodes with a full back-catalogues of previous episodes


Guy English

Guy English

Guy of Aged & Distilled also blogs at Kicking Bear, has an awesome developer podcast called Debug and once helped organise the Çingleton conference that has now sadly ended.

John Chidgey

John Chidgey

John is an Electrical, Instrumentation and Control Systems Engineer, software developer, podcaster, vocal actor and runs TechDistortion and the Engineered Network. John is a Chartered Professional Engineer in both Electrical Engineering and Information, Telecommunications and Electronics Engineering (ITEE) and a semi-regular conference speaker.

John has produced and appeared on many podcasts including Pragmatic and Causality and is available for hire for Vocal Acting or advertising. He has experience and interest in HMI Design, Alarm Management, Cyber-security and Root Cause Analysis.

You can find him on the Fediverse and on Twitter.