Merken

What comes after SOLID? Seeking Holistic Software Quality

Zitierlink des Filmsegments
Embed Code

Automatisierte Medienanalyse

Beta
Erkannte Entitäten
Sprachtranskript
this is the end of the and what he found by observing the ways some I wanna start out today by doing a little exercise the exercise is lifted from a book called Nonviolent Communication and it's
called by translating have to to
choose to the idea is that we all have things in our lives which we do not because we inherently enjoy them but just added some kind of sense of obligation we feel that we have to do that and the idea of the exercises is to acknowledge it as a choice there and once we realize that it's a choice figure out what we do about it and think about maybe have agreed to make that decision so you take all these things in your life that you don't really enjoy doing make a big list of of and you have to FIL in 1 by 1 this sentence with each thing so you say I choose to x because I want why you figure out what's the reason that make the choice to want to do that thing and what you basically find is 1 of the few things will happen maybe the thing that you want is actually important in defining meaning in thing that you were doing it'll feel more like an active choice that you wanna make maybe he'll say will that I want was delayed unimportant so I don't really have to do it or you'll say will the thing that I was important but maybe this isn't quite the right way to get to get to that point or maybe there's just different kind of a broader set of strategies that I need to really get the thing that I wanted some kind of the way so Aaron ask the question why do we choose to write good code and that's a little bit of a scary question right now would mean we we have to write good code right it's no written green into us you because talks at conferences re books we watch podcast it wasn't much I guess we watch watch the online we read blog posts all about good code we have to do it that's just the the you right some here tell you 1st of all today you don't have to write the code you choose write good code hopefully on and part of today will be figure out why we choose to write good code that 2nd line because I what what what we still that in way of maybe we fill it in with well if I don't write good code by some kind of arbitrary standard then I'll get fired starts a sad reasons you but but that might be at hand but ideally we find something meaningful important in terms of why were choosing to write the
so why do we care about writing good code and because this is a talk about supper quality and that's really the ultimate goal here we have to ask is good code actually the same as quality software so that back to that but 1st I want to talk about something by someone entirely different Dave Thomas Bob Martin others as well but I I mention this because they were signatories on the original act on FSO have said that agile is broke it didn't accomplish revolution that was supposed to accomplish here's a quote from Bob more
including can back was also there he said that 1 of the goals of the Agile Manifesto was to heal the divide between development and business there was a gap that had that had been created a chasm between the 2 sides and a lot of tension and the goal was to relieve some of that tension and and find ways to work at synergetically harmoniously
reality check I don't think it really works but they don't think that either so we have some people who were involved in agile right in the top saying a great situation but what the king was the basically I some kind of business person product manager whatever it is would take a course gets refined something and basically tell developers OK paying to agile because of that rule lead to better software it's something that developers due to get the business people happy if you could even do includes agile and usually a former this takes a scram as and I frame number
60 % of like that of organizations that claim to doing agile are using scrummager implementation of fun fact as far as I can tell because I read through the use of the Scrum Guide migratory Agile manifesto and appeared to it addresses maybe 50 % of agile is an economist at all values so I'm nothing that's that i don't wanna give an impression of my things from has a lot of really good ideas is just not implication of agile a framework in which you can choose to be agile not makes it easier in some ways but it's not actually agility we don't need more
processes sometimes processes can be helpful but they're tool to work on the more important and I think that we need and so I'm coming kind the conduct of arms from the more trust scrum focuses a lot on transparency as far as I understand transparency is basically we have 2 sides each side says the other I need to know what you're doing at all times and you be transparent about it so that when I see something go wrong I can jump in and then complain I micromanage you trust on the other hand but is use let's let's have a conversation let's understand the 2 sides the situation here and let's talk about the needs of each side each side will express their needs in a way that makes sense to the other side and once were confident that the other side has heard on it and understands the we can rely on the other side to think about our needs an account for them in their decisions that trust is to me at least and that's what allows us to build effective organizations I think we
can solve this problem I don't think it's it's even to complex it's difficult but I think it's complex it sort of communication if you learn to communicate between developers and business people in a way that it makes sense to both sides then we can start building the trust that we need to have highly effective organizations so we have an ambitious goal
today the recreate a common language for developers and business people to be able to express their needs in a way that makes sense to both sides and the way that we're going to achieve it is by going right for the job you're taking taking the thing that causes a lot of the tension between the 2 sides and trying to to understand again figure out while you write in code a lot of times we push for good code in whatever way we define it and and good could takes time takes investment and it's it's hard to explain that to the other side and it causes a lot of tension so we're going figure out why you write good code but 1st let's figure out why did the right thing and I really mean that while we write code ever see like a strange question right you know where were developers that's what you that about right arm while newsflash contours of statement OK but I think
it's I think it's it's really pretty clear to me jobs not to write code your job is to solve problems I wanna give an anecdote from specifically of another field that will help us look at things will the word objective so there's a a and man once came to a plastic surgeon and he said using in surgery for me and my years a very large and I want you to make my ears smaller interesting so the surgeon decided to probe further OK why do you want the surgery what problem are trying to solve and this guy said well but it's it's not a problem from your actually at this stage of my life at all but you get along fine role adults right but when I was a kid I got he's a lot of bleed a lot over the size of my years and I don't want to pass on upon my kids I'm about to start a family and I don't want them to get my ears so patently fix my ears so that I will pass around the so he really so had working in understanding of evolution certainly less than we get the so um and basically what the doctor did was say hey let's talk about modern genetics with understand how these things actually work and why I can't solve your problem and the solution suggested through it doesn't help if the doctor and then OK that's nice let's let's schedule of surgery we would call that malpractice but it's funny that's very clear to all of us at but what happens when someone approaches a development as I want to build a mobile app for me and the developer says OK without understanding the problem that we're trying to solve that understanding whether this is the right solution media marketing director you need to just now have an e-mail campaign may be a lot of things use thousands of apps out there in the App Store that reflect this problem the deal do anything for anybody feel that matter I I have a hard time high quality because they don't solve a problem if you not solving a problem there's never a reason to write it now this doesn't sound very busy somebody will translation your job is to create value and that's kind of a loaded term means a lot of things to different people so I'm going to give a working definition of any use the rest the talk it
value creation in the context of this talk means 1 of 3 things or or more of those 3 things generating revenue lowering costs for reducing risk those are the main things that matter in business in this specific case of a nonprofit instead of generating revenue you can substitute doing whatever the nonprofit supposed to do I and the but beyond all the same the same pattern so those are the 3 things that we may care about and where you come involved generally the way that you do these 3 things by meaning that the users so we're gonna use a mean business needs and meaning user needs kind interchangeably talk hopefully they go together when they don't is a whole discussion I'm not getting to today so to recap wiring code to create value that's it that's the only reason we should ever be writing code if that's the case what we hear about writing good of I think the answer is simple usually helps to create value does that mean that because it's seen as quality software according to this definition something so but so
here's the 2nd of 2 controversial statements I'll defines offer quality as just the amount of value that it creates writing code to create value if it creates that value it's that for purpose is the high quality and if it doesn't meet the needs then it can be you know really well written under the hood the does really help because it's not actually solving the problem so rather than to have you write the code will you to really be asking is having to form your efforts in coding to
maximize value creation and happens to speed code fit within that whole broad picture the so unwanted going to commit a major programming sense now i which is solving a problem by writing framework such script just just just the human people framework but it's only 3 words so hopefully itself you know not not to that and I think that there are 3
factors that if we if we think about the stream can pretty much do anything about suffered quality as we define it into 1 of these 3 factors are for 2 or 3 of them I call usefulness sustainability and accuracy were talk that we should use means but was there's an acronym there I didn't I didn't choose to these words over the acronym like that that that happens and I just want black I'm at the it happens be the act that came out but if thinking about the USA helps you in terms of remembering the words all the better right so what's our usefulness each of these is going to have a question and target the question in terms of usefulness is doesn't solve a problem effectively forward but but a lot of details of the target here is our users began using users and business needs a little bit interchangeably the question is what is it a problem that affects users 1st of all sometimes we spent a lot of money to go up a solution that doesn't actually address the need we have to make sure where where we can we verify the problem actually exists and affect the users that would be addressing then even if we correctly iden identified a problem it's important to think about well this actually solution to the problem what were we missing something and it can to solve a problem has to solve the problem in a way that works for the users the works but doesn't work for them you have wait on that awful lot I wanna outside the story from the territory of 1 day who gave a keynote at risk of last year which I think a actually also at this point really nicely she was working with the user of 1 of their applications discussing what they were experiencing and what it was to upload a spreadsheet with a whole bunch rows and anything the application could figure out great if not and then you have to kind of fill in so some of the 1 the columns there was a was a column dates and you know most of what I think like a date the bigger great but in the case of this application we decided to allow into concerning dates gates by a drop-down menu the without storing dates so there were just hundreds of these it completely unsorted list they had to look through somehow manage to find the right date and repeated again and again and again and again and again until the whole spreadsheet was done and if there was an error by the way that the back to beginning and wouldn't save cleared on so far but that meets the needs technically you eventually get on a guess but it's not in a way that works for the user it's really hard to call that a high-quality product the OK that's useless sustainability what about the question is can we keep building without unnecessary obstacles and I thought that this slide but I do want the without obstacles for they're always going to be obstacles there the question is are we identify the most important obstacles in trying to account for them trying to limit things artist in Norway as we continue to build the the targets in ceases to target I think are really 1 the 1st of our software is a software resistance change that breaks and into 2 sub-questions 1 is initial understanding is a software written in a way that we just 1 as and when it does it could be hard to make changes the other piece of it is will even if it's very clearly written me understand what it does but the Oct Sulzer architecture choice aluminum make it hard to change things later on so just take longer it's a lot more effort to do the no target is a development we so often forget that the development team is going received as much a part of our software as the code itself it's more of a part of our sovereign the code itself think about how how we just carefree warming like reading code putting in new stuff that you do that with your team right that that the rate of turn is ideally at a lot of a lot lower and you crash development and you basically don't product anymore so it's important to be aware of when a team is unstable and some kind of way that you if things our article that is that going to prevent future progress is a team of collapse or just become less effective in some way that's billiard sort that accuracy this is the 1 that we thing about the most the question that we're asking is pretty simple there's this offer work the way that we think that's the target here missing code right the targeted ourselves that for tests so have we developed our understanding of the problem sometimes we just disorders and the problem correctly every do everything right in the coding step but we haven't taken the time where the effort to figure out 1st is actually the problem as it does it doesn't solve the problem is that the older usefulness stuff leading to an accuracy problems have we developed understanding of the code is something about the code that makes it hard for us to to get the next that done and what is going the wrong thing as amended to be issued of cognitive overload that even if the code is relatively clear but there's so much going on too many integrated systems like a service and whatever but that that you just use donors in the full impact of your actions and finally or understanding of a problem changes over time sometimes the problem itself changes over time if we're not at the encoding to reflect that that all appears as an accuracy problem you seem like things that are maybe a little bit like mashed together that shouldn't be together but if you think about it from the perspective of the user if any of these are failing is offers broken that's about report any those questions so to me that means that they're all issues of accuracy I can't speak for anybody else but when I think about why I write good code I choose to actively choose to write good code it's because I want software that's useful sustainable and
accurate and good code is a significant tool to help me get here's the traditional model
with the business development chasm pictures and in the right corner of the room we have accuracy sustainability those are seen as the domain of the developers to write you good actor code and on the left side we have usefulness which is the domain of designers UX people Proc people etc. on and never the twain shall meet really subdivided responsibilities and not surprising at each site advocates for for for the things that it cares about well this and never the twain shall meet but today the twain shall meet but we actually
need is to think about quality as all those factors together you need to have we can't leave out any element of that and we have the part of their usefulness circle as well so this is all in pretty abstract I realize and I don't wanna leave you with just kind of abstract floating in the air ideas I wanna this down to a very practical level so what we're gonna do you get the diagram we ask the question is a quality software were actually fill in some the things that we do on a on a much more granular level to address each of these 3 points useless accuracy sigh sustainability and accuracy now this is event diagram here is going to be some overlap on occasion practices might contribute to more than 1 of these circles on works to something that we might think of as maybe the confluence between those 2 circles so obstacle more definition of in the middle we have between accuracy and usefulness of the question of how does it work as the in the way that the users expect right less thinking about ourselves soaring think more in direction of our users between accuracy and sustainability we're asking the question Can we keep building our system without breaking our system it's it's future focused accuracy have top between sustainability and usefulness we have the question of what are the obstacles to future usefulness essentially things that are threatening usefulness right now but we were were aware that the choices that we make now might have an impact in the future on how useful are part of this alright so what I tell this talk will come back a solid I thought was a uh you know nice juicy title but I don't think it makes sense to start by talking about solid because it's just as
traditional metric of of sulfur quality and but you know we we we think a lot about it talk a lot about it and I matching up a lot about it but run through it really really fast so you optimally with all the details of solid that's OK but I could spend the whole the whole 40 minutes is talking about that and so you might be were about a minute but will be find that there's tons of stuff that you will understand finds a solid stands for 5 different principles that are related to creating whether we might define as as well crafted software the single responsibility principle the idea that every element in your system to do 1 thing and do well the open closed principle which is short for open for expansion closer modification that mean that you should be able to add new features without modifying existing code are how you do that is again a long story so into it all discuss social principle basically use inheritance properly I don't inherit from a superclass because new like a method inherits because it's actually a specialized instance but should fully implement the super class and all of its functionality every segregation so this is not that relevant for real because you don't really have interfaces in in the traditional sense and I think of it as you ultimately it's about a limiting the surface area of how objects and the objects and you can do that without their faces by picking the reality it it matters a hurdle that's close enough and finally the dependency inversion depend on abstractions are concretions you basically pushing dependencies to the outside the system and then the core elements the units are depending on the sort of theoretical idea of what the the dependencies doing without relying too too many of the implantation accounts so let's run through this very quickly and as API it I think is a big 1 but if every item your system does 1 thing and does it well it's easy to tell if it's if it's doing the thing that's close deal it's much easier change later because you know exactly what to go back to and modify and this is sort of a personal thing as India lot of personal opinions here so I apologize but I'm sorry not sorry I had the maybe here is is not said to learn the details it's to see the way of thinking and also you can apply themselves but back to right here so usefulness and I think it's an responsibility means that each partner system has a very clear responsibility and that lets you start thinking about is this the right responsibility is it something that she creates value for people is is a is something that shouldn't should should or should not exist our system it opens up a pathway to those conversations so I think of it as a very central practice open closed is really just about the future so I put all real word sustainability list of substitution is about avoiding certain classes of errors so I think about that as when errors now and when he was leader accuracy inability up every segregation dependency inversion again are really about the future so those Goldman mindset sustainability camp so that's where some of falls out in
the way that we've expressed it's almost it's sustainability camp there are a few that again to other places and again as our key to means a precentral practice let's so that sort metal other stuff in has her 4 principles
which get the acronym true I mean that in in in the 1st chapter we're 4 principal there are meant to create systems that are that that are much more and much more robust in terms of their ability to accept change we much use change in the future a transparent meaning that the consequences of changing code to be obvious reasonable the causal chain should be proportional to the benefits a small change then that shouldn't be that the word sorry it's a not a not not that beneficial change no versus if it's a it's a very very beneficial change the the cause a change in the portal elated on usable basically is the code reusable in other contexts and exemplary your code to tell a good example for coders to come because of course we all have a look at the system the that L is the way it is evident like let's just Atticus those qualities in the future because obviously whoever was here before the data right those are all
to see that the future so I put them right into that sustainability can as well so we're pretty happy on sustainability and but let's try to diversify our strategy for quality just a little bit on the somewhat testing the 1st thing that very
often our community we forget what it is is even a choice is testing all you could not test there's a lot a lot of places that and in teams that don't test also choosing the has all is a practice and code coverage of the of the attempt to make sure that every piece of your system is exercising in a test different types of tests that we talk about the unit tests which has a small piece of your system integration tests which are testing help he seduces them interact with each other a much broader perspective and manual Q way which is even further out you have a person who probably hasn't worked on a system of themselves thinking of about a user perspective trying to use as a user try to break etc. they don't have to immediately and I I'm I'm not going to offer my own definition of another thing to try to give my understanding of how the speckled defines them either way you write as 1st but with the you start out with very small unit to build will do we have out to the book out toward the edge of your system with mediate the opposite you start out with that with the VA perspective of what you're trying to do for your whole system and work your way down so how those fall out
well not surprisingly the on accuracy can because they all help you buy more accurate code and coverage helps out future as well it expressly designed that if anything about your code changes in a way that's a that's a break it you out as the learning that fact and you have the the national jew QA integration tests I think actually do little its usefulness for the making you think about your system not in terms of is a code right but what what is the purpose of writing this and has to happen the middle cause I think that all these active provide a pretty strong signal by a bunch different directions so I think the testing as essential practices while right so that was a little drive it's 1100 buzzwords but it was on a punctual
programming and DGH seems to be a lot of reasons we're not should be based on the begin this morning but it runs Automatic type systems it will talk now that rattled source typing typescript high-tech type inability creating objects that should not change after created and scalability results in this format now how yes the days study of the Twitter scale you have to be of no fear of so most of these are actually
really in the accuracy can you could make an argument to push over some them into sustainability just a little bit of but also in about writing code that's accurate doesn't that doesn't have unexpected side effects of so that's that's most of them scalability is is a little different it's about future usefulness and the reason I say that is because if you actually scalability right now that that's not hold scalability anymore that's called or academic production that that's different problem and poor 1 but not the same scalability is about well 1 day we might need to you know deal with a lot lot more load so what think about that now which I these letters but offered for some apps the user can be alright complexity
metrics those funds SeqMact complexity how many of assignments branching conditionals there's you could have and make it more difficult to understand that you use slay uh it's it's looking at that look since this was introduced to me by the patenting of wonder Jim mark I talk that he gave a a few years back of basically different places of your code that have to change in tandem so are what create connaissance and 1 of law that we want minimize how much you have to get a change together to Patterson operate so I put
that basically the more complex something is the harder it is to to write correctly the 1st time in the harder it is right correctly the next time also so that's that's right I see those fallen out OK now get something that's after me a lot of fun for me I care about a lot which is team-oriented
practices organization conventions but if you have something like you know we all use the same we use Rails we all of you know use a certain vertex a certain process tools or anything that that is consistent cross-organization that makes it easy to and to move across scenes if need be the that's that's 1 more it in practice a style guide and ideally fortunate found I from programmatically with the group of JSON whatever the appropriate tool something that teacher your code consistent are so it's much easier to navigate and understand both factor so this is the measurement of how we want him we have to be hit by a bus in order to destroy your application have fun fact most indelible factor of 1 and which is bad because of I occasionally aside from dying of people also quit get fired on take vacations get sick we want ideally have have organizations for people to do normal people things and have perhaps not destroyed so meaning knowledge sharing also level really everybody on the team rather than kind of hoarding knowledge work or scale that good review OK uh stuff gets review before its 2nd source control pair programming or not programming of the sort of like a review on steroids and taking uh taking model bellbirds however many it is and having them work on code the same time the triangle perspectives the interlocking tations reading stuff like that thing that help you out both on board the developers and also remind you of that of things that you might have forgotten or we might run to share with other people debugging tools stuff so that helps a lot a lot when things break and the more insight into your system and last thing is mentorship of that which I'm choosing to define it as a choice on that by choosing to fine as taking the 2 people on a team who have different skill sets carry them together in a in a formal context over a long period of time and having them share their skills with each other
so most of these sports into sustainability could the practices that help you build up team IT works better together you can more stable but the mentorship on across a word accuracy because it turns out that people who are more skilled in operating their code and so for the 1st time as well as keeping interview Genovian future code review I put in the crossover between accuracy and usefulness because I could review for soul is just a good check on whether your code is doing this was to do but it also creates opportunities for conversation about should we be writing this code is this the right who to right right now is the right solution to the problem that we're facing and and Paramount unless they're like a review on steroids the cool thing about it is that it does all those things while also FIL the the legal relationships I want something a Quaranta by can back worry where he was asked you know the sort such as honest as the world of the can that believes that paragraph proper programming programming always the idea of so can back it is found that answered and he basically said that when I was the problem space is big the solution space is big were you need to build relations of on leave . remember that pair programming or my programming also have an effect right of miscellaneous items continues
integration making sure that your code pass the bill before you actually apply it frequent releases frequent releases because of explanatory of refactoring not as a thing that you once but as a thing that you constantly always looking to improve the health of your code base the commissioner API as but basically using things like Rails rest were on or or TCP IP of were just you the normal ways of of of doing stuff in language of choice you things like area at a writer rather than you get added and get you set out in Ruby where the opposite I guess the other I'm just you can using the things people expect
but so both laughter all over CI is mainly accuracy thing 1 of your code works refactoring on that were between accuracy and sustainability of because it helps you write code correctly is usually refactoring in the context of writing new code helps to make sure that you got it right we also helps you Ikeda hobbies healthy in the long run and eventually the eyes I put on up top because I think that the are usually will design in the room to grow in the future i and free releases so and I did not think everybody's as as a social practice for a long time it was kind of a recent revelation for me all but the truth is when you release things frequently 1st of all you figure out that into broken really fast as legacy of the accuracy of help to sustainability because you're not building castles on top of the foundations which you we later find out when deploy or actually broken and also useless because until you've actually shipped any change that you made the because inventory right you haven't actually create value until you just and the Federation even a small the functionality of the facet create value OK cover could cover a lot of ground we ever strategy but we're missing something what was that red
area what what's going on on usefulness section that we can use to balance out this pictures offer quality to me it's practices that that's on user-oriented thinking the main 1 which colleagues all the others is a focus on delivering value rather than thinking about like what's you know what a cool thing that we could you know about were were thinking about it from a very technical like appeals pull up here from the ground up just focus on what the next thing that I can you help create value for for users to understand that there you have to add to talk to you have to research the needs to have and you have to know if you can collaborate with them of the closer collaboration you can do the better you'll be able to add to solve the problems because you understand what the problems are prioritization it's too easy get caught up in like what's what's according to build but you focus on delivering value the prioritize the the actual most important things for delivering value discoverability but if you create a really cool feature but nobody can find it then you might as well have not done any that coding this useless and that you I was not term until about 3 seconds ago as far as I know and I'm sure there's a real term but I mean as a you either thinks about what are the needs of my users forecasts regions are going to be in the using the R software and then how do we anticipate those needing given what the need in the way it on time depends on your in your organization and on users and their needs but during tax software really try not to be year late but performance we always think of performance as a computer science thing and bend for allegedly I can't figure out why by happy particles yes like so much of computer science curricula is about performance but but it is that it doesn't matter for some reason a technical accuracy any matters because you can't wait forever for us to offer for your you have to get to work it's just need and when you do before its optimization that actually focus on meaning that need and what are the things we actually need to optimize so that's pretty good red area which can add a
couple more things for technical products
documentation is the face of your products to the users if they are at the CEO of a distinction between documentation and when you saw for actually does the only the documentation is running his offers broke so I think about writing client code may or not be relevant in terms of what you're doing but sometimes if you write client library that will help your clients that use the code that you're creating the technical private you're creating on valid to be of more value to them and then just passing under a making more robust but but they have to figure out how to integrate right so that's the whole picture in my
mind more practice that I care about but we have limited time but this is this is my brain right here on this slide I did when my brain and that but part of my brain on but ultimately the question is a
quality software I can't tell you you have to decide so used best a blank slate
so I put it for I'm about to put on my side I
tried to watch for it in the appears aware try again right after all but brings back to teams thing about these issues think about the prices that you do that you care about as individuals and as teams and whether there's areas they're missing their will patchy in terms of of yourself or quality right wrap up a couple pouring thoughts number 1 is different projects require different
bounds the factors and actually can back has 3 extra work you talk about recently
but which points out that even within 1 project will change over time which of these things matter number 2 I'll think it's bad to focus on the code 1st into the career development
of why because it's more straightforward and this is understanding takes a really long time to develop it's really important but takes a long time good code you can get really really much good code in a scale of months maybe a small number of years and once that happens by the way becomes more automatic like you you'll find yourself like let's able to write bad code if that's if that's the way that I can put it this understanding you can automate is something you have to constantly refreshed because you're costly new business realities so the implication as soft really focus on good code and then move on to this this is understanding into your focus as you move on so you Kirch directory might look like this but that no 1 looking down the strap focusing along encode the goes down and this understanding is coming coming in in its place those lines might cross those lines may cross really far afield management of war or project uh pragmatic or stuff like that they might see far apart the architect but those ones should change over time that's OK that's expected to be the main thing is light on top is how much value are you are you creating so what can I do to build this is understanding it's
basically a matter of learning if learning that uses the industry the organization of your organization looking to solve dysfunction within your organization ideas of business ideas of organizations and processes so that is all that learning we also have to become better empathy skills and that's my last point is
that empathy is going become ever more important what
mutable under the skills the was read learn a finite out new ideas Next I'll talk about that but the other part of practice meaning cultivating curiosity about others especially if they're different from you which is really hard on but you have to listen to that we have to understand the needs and the feelings and see humanity alternately in everyone that will make you better person and also make you a much more effective developer and and person your business but so I started club
and warm starting club is launching efficient rails Conf really reading books on on and the and in this offer context in a general context and thinking about how we apply our personal lives you can check out the site and the book
that club if you're interested I really like your more discussion about these things in our community so you check it out the bottom line is make
yourself a valuable high-quality create value for users and make yourself valuable I wanna
think of a few people and model name them there on the slide and that these what what I've said today is not my ideas per say they're just my analysis and integration of ideas that I've learned from and through these people social of Westbrook who was my mentor for my 1st year of idols and that he's in the room today and so so I think you've heard her being there for me and and the last thing to say is that I a lot of time on airplanes to get here 18 hours near year 3 flights some a little like I had the airline thing still like holding my frames of so I'm going to say I have a lot of options as to where you can spend time the rules of the you very much for spending a year and a
few this
if you are
Telekommunikation
Bit
Punkt
Web log
Güte der Anpassung
Schreiben <Datenverarbeitung>
Maschinensprache
Term
Computeranimation
Entscheidungstheorie
Arithmetisches Mittel
Software
Computerspiel
Menge
Rechter Winkel
Primzahlzwillinge
Mereologie
Strategisches Spiel
Figurierte Zahl
Auswahlaxiom
Gerade
Dualitätstheorie
Software
Subtraktion
Software
Maschinencode
Rotationsfläche
Maschinensprache
Softwareentwickler
Teilbarkeit
Computeranimation
Softwareentwickler
Selbst organisierendes System
Rechter Winkel
Software
Migration <Informatik>
Digital Rights Management
Implementierung
Zahlenbereich
Schlussregel
Elektronischer Programmführer
Softwareentwickler
Biprodukt
Framework <Informatik>
Computeranimation
Telekommunikation
Umsetzung <Informatik>
Prozess <Physik>
Prozess <Informatik>
Selbst organisierendes System
Softwareentwickler
Quick-Sort
Wärmeleitfähigkeit
Computeranimation
Entscheidungstheorie
Formale Sprache
Snake <Bildverarbeitung>
Familie <Mathematik>
Befehl <Informatik>
Maschinensprache
Term
Computeranimation
Computerspiel
Prozess <Informatik>
Maschinencode
Translation <Mathematik>
Softwareentwickler
Speicher <Informatik>
Figurierte Zahl
Hilfesystem
Metropolitan area network
NP-hartes Problem
App <Programm>
Befehl <Informatik>
Natürliche Sprache
Objekt <Kategorie>
Scheduling
Chirurgie <Mathematik>
Datenfeld
Formale Sprache
Rechter Winkel
Hypermedia
Evolute
Würfel
Translation <Mathematik>
Wort <Informatik>
Innerer Punkt
Arithmetisches Mittel
Software
Mustersprache
Würfel
Maschinensprache
Kontextbezogenes System
Computeranimation
Software
Befehl <Informatik>
Extrempunkt
Würfel
Programm
Skript <Programm>
Befehl <Informatik>
Wort <Informatik>
Maschinensprache
Framework <Informatik>
Computeranimation
Fitnessfunktion
SCI <Informatik>
Bit
Overloading <Informatik>
Sortierverfahren
Punkt
Adressraum
Gruppenoperation
Mathematisierung
Schreiben <Datenverarbeitung>
Kartesische Koordinaten
Maschinensprache
Term
Computeranimation
Streaming <Kommunikationstechnik>
Informationsmodellierung
Datensatz
Arithmetische Folge
Software
Perspektive
Maschinensprache
Inverser Limes
Biprodukt
Oktaeder
Softwareentwickler
Auswahlaxiom
Softwaretest
Schreiben <Datenverarbeitung>
Gebäude <Mathematik>
Güte der Anpassung
Befreundete Zahl
Physikalisches System
Bitrate
Biprodukt
Billard <Mathematik>
Teilbarkeit
Quick-Sort
Arithmetisches Mittel
Rechenschieber
Software
Dienst <Informatik>
Verknüpfungsglied
Tabellenkalkulation
Rechter Winkel
Mereologie
Würfel
Wort <Informatik>
Computerarchitektur
Entropie
Innerer Punkt
Verkehrsinformation
Fehlermeldung
Web Site
Punkt
Element <Mathematik>
Maschinensprache
Analysis
Computeranimation
Übergang
Richtung
Domain-Name
Konfluenz <Informatik>
Software
Endogene Variable
Biprodukt
Softwareentwickler
Auswahlaxiom
Softwareentwickler
Kreisfläche
Güte der Anpassung
Datenmodell
Physikalisches System
Teilbarkeit
Ereignishorizont
Diagramm
Software
Emulation
Mereologie
Benutzerführung
Zentralisator
Stereometrie
Dualitätstheorie
Umsetzung <Informatik>
Mathematisierung
Klasse <Mathematik>
Abgeschlossene Menge
Maschinensprache
Element <Mathematik>
Physikalische Theorie
Computeranimation
Physikalisches System
Einheit <Mathematik>
Flächentheorie
Software
Reelle Zahl
Endogene Variable
Vererbungshierarchie
Umkehrung <Mathematik>
Substitution
Data Encryption Standard
Lineares Funktional
Linienelement
Abstraktionsebene
Einfache Genauigkeit
Mailing-Liste
Physikalisches System
Quick-Sort
Objekt <Kategorie>
Software
Flächeninhalt
Offene Menge
Stereometrie
Wort <Informatik>
Speicherabzug
Wärmeausdehnung
Schlüsselverwaltung
Benutzerführung
Fehlermeldung
Instantiierung
Bit
Physikalischer Effekt
Güte der Anpassung
Mathematisierung
Gebäude <Mathematik>
Benutzerfreundlichkeit
Physikalisches System
Maschinensprache
Kontextbezogenes System
Term
Computeranimation
Arithmetisches Mittel
Software
Verkettung <Informatik>
Hauptideal
Rechter Winkel
Maschinensprache
Strategisches Spiel
Wort <Informatik>
Evolutionsstabile Strategie
Benutzerführung
Softwaretest
Dualitätstheorie
Subtraktion
Physikalischer Effekt
Mathematisierung
Systemintegration
Physikalisches System
Maschinensprache
Term
Menge
Computeranimation
Richtung
Integral
Softwaretest
Einheit <Mathematik>
Perspektive
Rechter Winkel
Maschinencode
Datentyp
Kontrollstruktur
Hilfesystem
Auswahlaxiom
Hilfesystem
Manufacturing Execution System
Soundverarbeitung
Resultante
Beobachtungsstudie
App <Programm>
Parametersystem
Zentrische Streckung
Dualitätstheorie
Subtraktion
Programm
Maschinensprache
Physikalisches System
Quellcode
Biprodukt
Optimierung
Komplex <Algebra>
Computeranimation
Objekt <Kategorie>
Skalierbarkeit
Twitter <Softwareplattform>
Last
Datentyp
Dateiformat
Benutzerführung
Software Engineering
Data Encryption Standard
Dualitätstheorie
Software
Softwaretest
Linienelement
Konditionszahl
Mathematisierung
Hilfesystem
Maschinensprache
Komplex <Algebra>
Gesetz <Physik>
Benutzerführung
Computeranimation
Umsetzung <Informatik>
Subtraktion
Prozess <Physik>
Gemeinsamer Speicher
Selbst organisierendes System
Versionsverwaltung
Programm
Gruppenkeim
Kartesische Koordinaten
Maschinensprache
Raum-Zeit
Whiteboard
Computeranimation
Übergang
Demoszene <Programmierung>
Selbst organisierendes System
Knotenmenge
Informationsmodellierung
Maschinencode
Elektronischer Programmführer
Softwareentwickler
Auswahlaxiom
Einflussgröße
Programm
Soundverarbeitung
Zentrische Streckung
Gebäude <Mathematik>
Relativitätstheorie
Physikalisches System
Cross over <Kritisches Phänomen>
Kontextbezogenes System
Frequenz
Dreieck
Teilbarkeit
Software
Menge
Rechter Winkel
Bus <Informatik>
Wort <Informatik>
Eigentliche Abbildung
Normalvektor
Ordnung <Mathematik>
Lineares Funktional
Dualitätstheorie
Formale Sprache
Mathematisierung
Maschinensprache
Extrempunkt
Kontextbezogenes System
Migration <Informatik>
Computeranimation
Integral
Überlagerung <Mathematik>
Software
Flächeninhalt
Rechter Winkel
Hilfesystem
Auswahlaxiom
Hilfesystem
Selbst organisierendes System
Minimierung
Zwei
Gewichtete Summe
Biprodukt
Biegung
Fokalpunkt
Term
Dialekt
Computeranimation
Arithmetisches Mittel
Software
Kollaboration <Informatik>
Flächeninhalt
Software
Garbentheorie
Partikelsystem
Figurierte Zahl
Informatik
Benutzerführung
Hilfesystem
Rechenschieber
Software
Dualitätstheorie
Client
Rechter Winkel
Mereologie
Programmbibliothek
Maschinensprache
Biprodukt
Term
Computeranimation
Data Encryption Standard
Dualitätstheorie
Software
Flächeninhalt
Rechter Winkel
Software
Tablet PC
Zahlenbereich
Projektive Ebene
Computeranimation
Zentrische Streckung
Collatz-Problem
Güte der Anpassung
Digital Rights Management
Zahlenbereich
Schreiben <Datenverarbeitung>
Maschinensprache
Fokalpunkt
Teilbarkeit
Computeranimation
Gebundener Zustand
Eins
Framework <Informatik>
Maschinencode
Fokalpunkt
Kommunalität
Projektive Ebene
Decodierung
Softwareentwickler
Verzeichnisdienst
Gerade
Soundverarbeitung
Arithmetisches Mittel
Abstand
Selbst organisierendes System
Punkt
Selbst organisierendes System
Mereologie
Lesen <Datenverarbeitung>
Gebäude <Mathematik>
Softwareentwickler
Bitrate
Computeranimation
Informationsmodellierung
Web Site
Rahmenproblem
Schlussregel
Fastring
Kontextbezogenes System
Gerade
Computeranimation
Analysis
Integral
Konfiguration <Informatik>
Mehrrechnersystem
Computeranimation

Metadaten

Formale Metadaten

Titel What comes after SOLID? Seeking Holistic Software Quality
Serientitel RailsConf 2017
Teil 68
Anzahl der Teile 86
Autor Caplan, Ariel
Lizenz CC-Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Unported:
Sie dürfen das Werk bzw. den Inhalt zu jedem legalen und nicht-kommerziellen Zweck nutzen, verändern und in unveränderter oder veränderter Form vervielfältigen, verbreiten und öffentlich zugänglich machen, sofern Sie den Namen des Autors/Rechteinhabers in der von ihm festgelegten Weise nennen und das Werk bzw. diesen Inhalt auch in veränderter Form nur unter den Bedingungen dieser Lizenz weitergeben.
DOI 10.5446/31300
Herausgeber Confreaks, LLC
Erscheinungsjahr 2017
Sprache Englisch

Inhaltliche Metadaten

Fachgebiet Informatik
Abstract You care deeply about code quality and constantly strive to learn more. You devour books and blogs, watch conference talks, and practice code katas. That's excellent! But immaculately factored code and clean architecture alone won't guarantee quality software. As a developer, your job isn't to write Good Code. It's to deliver value for people. In that light, we'll examine the effects of a host of popular coding practices. What do they accomplish? Where do they fall short? We'll set meaningful goals for well-rounded, high-quality software that solves important problems for real people.

Ähnliche Filme

Loading...