Keynote by Searls

Video in TIB AV-Portal: Keynote by Searls

Formal Metadata

Keynote by Searls
Title of Series
Part Number
Number of Parts
CC Attribution - ShareAlike 3.0 Unported:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal and non-commercial purpose as long as the work is attributed to the author in the manner specified by the author or licensor and the work or content is shared also in adapted form only under the conditions of this license.
Release Date

Content Metadata

Subject Area
Computer animation Software Hypermedia Multiplication sign Video game Software testing Rule of inference Theory
Presentation of a group Group action Building Standard deviation Multiplication sign Mathematical analysis Student's t-test Cryptography Computer programming Formal language Word Computer animation Software framework Data structure Physical system
NP-hard Programmer (hardware) Word Process (computing) Computer animation Software developer Multiplication sign Control flow Software framework Solid geometry Connected space
Word Service (economics) Computer animation Hazard (2005 film) Single-precision floating-point format Shared memory Computer science Computer programming Resultant Product (business)
Computer animation Ring (mathematics) Code Multiplication sign Moment (mathematics) Disk read-and-write head Rule of inference
Programmer (hardware) Dependent and independent variables Computer animation Cartesian coordinate system
Frequency Computer animation Line (geometry)
Point (geometry) Programmer (hardware) Spreadsheet Process (computing) Computer animation Internetworking Computer programming Product (business)
Programmer (hardware) Estimator Process (computing) Integrated development environment Software Constructor (object-oriented programming) Video game Moving average Line (geometry) Computer programming Library (computing) Formal language
Group action State of matter Multiplication sign Software developer Feedback 1 (number) Disk read-and-write head Programmer (hardware) Process (computing) Computer animation Negative number Arithmetic progression Compilation album Position operator
Programmer (hardware) Type theory Computer animation Block (periodic table) 1 (number) Damping Software testing Price index Physical system
Type theory Programmer (hardware) Word Distribution (mathematics) Computer animation Software testing Inclined plane Price index Resultant
Sign (mathematics) Data management Computer animation Self-organization output Virtualization Game theory Spontaneous symmetry breaking
Addition Complex (psychology) Group action Functional (mathematics) Code Expression 3 (number) Function (mathematics) Number Vector potential Computer animation Personal digital assistant Speech synthesis Software testing Physical system
Slide rule Sensitivity analysis Game controller Email Information Code Projective plane Inclined plane Database Line (geometry) Mereology Test-driven development Process (computing) Computer animation Personal digital assistant Core dump Order (biology) Right angle
Point (geometry) Context awareness Game controller Inclined plane Line (geometry) Function (mathematics) Perspective (visual) Computer programming Product (business) Programmer (hardware) Database normalization Computer animation Term (mathematics) Telecommunication Energy level output
Proof theory Group action Randomization Loop (music) Computer animation Inclined plane Code
Radius Computer animation 1 (number) Software testing Mereology Sphere Resultant Element (mathematics)
Hoax Computer file Code Execution unit Bit Shape (magazine) Mereology Sign (mathematics) Computer animation Hypermedia Personal digital assistant Single-precision floating-point format Energy level Software testing Arithmetic progression Library (computing)
Implementation Building Cone penetration test Open source Code Multiplication sign Computer animation Symmetry (physics) Software Right angle Software framework Pressure Symmetric matrix Physical system
Functional (mathematics) Computer animation Consistency Projective plane Execution unit Software testing Mereology
Software developer Constructor (object-oriented programming) Mathematical analysis Computer programming Demoscene Compiler Spring (hydrology) Computer animation Software Well-formed formula Analogy Telecommunication Interpreter (computing) Pattern language
Complex (psychology) Service (economics) Computer file Code Software developer Protein Perspective (visual) Data stream Computer animation Factory (trading post) Software design pattern Videoconferencing Musical ensemble Object (grammar)
Pulse (signal processing) Uniform resource locator Graph (mathematics) Service (economics) Computer animation Software developer Antimatter Graph (mathematics) Execution unit Vertex (graph theory) Computer programming Position operator
Service (economics) Constraint (mathematics) Software developer Execution unit Graph (mathematics) Shared memory Instance (computer science) Line (geometry) Computer programming Wave packet Computer animation Right angle Cycle (graph theory) Buffer overflow
Service (economics) Graph (mathematics) Theory of relativity Computer animation Observational study Computer file Network topology Execution unit Interactive television Right angle Directory service Object (grammar)
Complex (psychology) Pairwise comparison Functional (mathematics) Computer animation Software Configuration space Software framework Computer programming Product (business)
Point (geometry) Complex (psychology) Building Computer animation Multiplication sign Execution unit Object (grammar) Endliche Modelltheorie Parameter (computer programming) Rule of inference Physical system
Trail Complex (psychology) Computer animation Code Consistency Decision theory Quicksort Table (information) Rule of inference Error message Form (programming) Physical system
Computer animation Consistency Multiplication sign Decision theory Projective plane Insertion loss Cartesian coordinate system Oscillation Mathematical optimization
Complex (psychology) Focus (optics) Mathematics Message passing Computer animation Commitment scheme Code Mereology Pressure Metric system
Server (computing) Computer animation Software Personal digital assistant Multiplication sign Analogy Authorization Software testing Pressure Resultant Cognition
Point (geometry) Area Complex (psychology) Process (computing) Computer animation Cone penetration test Electronic visual display Product (business)
Point (geometry) Subject indexing Computer animation Multiplication sign Software developer Plastikkarte Bit Right angle Protein Physical system Product (business)
Addition Computer animation Operator (mathematics) Multiplication sign Blind spot (vehicle) Execution unit Object (grammar) Number Vulnerability (computing)
Complex (psychology) Focus (optics) System call Message passing Data management Sign (mathematics) Computer animation Root Ideal (ethics) Software testing Right angle Cycle (graph theory) Freezing Row (database)
Complex (psychology) Graph (mathematics) Software developer Multiplication sign Execution unit Source code 1 (number) Disk read-and-write head Number Mathematics Computer animation Causality Physical system
State observer Dependent and independent variables Functional (mathematics) Computer animation Inheritance (object-oriented programming) Execution unit Similarity (geometry) Right angle Power (physics)
Functional programming Group action Functional (mathematics) Code 1 (number) Unit testing Cartesian coordinate system Formal language Programmer (hardware) Computer animation Logic Core dump output Software testing Object (grammar) Condition number
Type theory Data mining Mathematics Computer animation Hash function Personal digital assistant Right angle Object (grammar) Abstraction Physical system
Message passing Mathematics Computer animation Code Multiplication sign Execution unit Software testing Endliche Modelltheorie Feature space Computer programming Form (programming)
Functional (mathematics) Data management Mathematics Beta function Computer animation Code Multiplication sign Bit Mass Cartesian coordinate system Rule of inference
Mathematics Arithmetic mean Building Computer animation Network topology Telecommunication Execution unit Online help Endliche Modelltheorie
Mathematics Process (computing) Computer animation Code Multiplication sign Video game Software testing Mereology
Programmierstil Personal digital assistant Code Multiplication sign Software developer Physical law Water vapor Flow separation
Area Game controller Computer animation Open source Cellular automaton Freeware
Category of being Open source Wage labour Internetworking Multiplication sign Expert system Freeware
Graph (mathematics) Computer animation Grand Unified Theory Open source Concentric Multiplication sign Negative number Object (grammar)
Radius Computer animation Open source Wrapper (data mining) Code INTEGRAL Direction (geometry) Software testing Object (grammar) Food energy
Dependent and independent variables Validity (statistics) INTEGRAL Software developer Real number Interactive television Annulus (mathematics) Branch (computer science) Database Unit testing Inequality (mathematics) System call Digital watermarking Mathematics Computer animation Personal digital assistant Hypermedia Software testing Task (computing)
Complex (psychology) Group action Transformation (genetics) Multiplication sign Direction (geometry) Bit Distance Type theory Computer animation Video game Energy level Software testing Object (grammar) Abstraction Physical system Row (database)
Implementation Game controller Sequel Open source Wrapper (data mining) Interface (computing) Parallel port Flow separation Food energy Mathematics Computer animation Row (database) Physical system Library (computing)
Programmer (hardware) Computer animation Code Weight Universe (mathematics) Inclined plane Summierbarkeit
Computer animation Multiplication sign Execution unit Chaos (cosmogony)
Programmer (hardware) Computer animation Average Multiplication sign Decision theory
Group action Process (computing) Computer animation Device driver Line (geometry) Demoscene
Medical imaging Vector space Different (Kate Ryan album) Weight Software developer Physical system Connected space
Addition Email Arithmetic mean Computer animation Multiplication sign Software developer Duality (mathematics) Planning Software testing Arithmetic progression Computer programming
JVD thata-hat and should thank you Mr. rules only non theory was just to feel free to call me either and
this is what life is like in 2001 things the whole social media when they work so I'm not stuck with it forever I work for a political test snowball were celebrating the who's on issue of worldwide software software you can learn more about the offered that your all the time
with presentation is how the program at its original word
workflow to about word word meaning what programs are the structure behavior loading a how we program our thoughts and actions
and when I look back on my experience learning as a pure science students the tiny things like data structures and keywords that he and they go analysis in cryptography and not very much about how are handled work and build schools
nowadays are you actually analogous on the more market practical skills like when standards and system tooling and languages and frameworks are not so much time to think through problems and so also really right of
and you might think that's the job of thought leaders to the word art is right there but really thought leaders really talking a design patent solid principles agile and tested in development or those are nice there's that there framework activities but it's pretty discrete-time mostly about how people interact not so much time to think through friends so it's
reasonable to ask you know when we actually learning well as programmers who teaches us how to think and if you're lucky you have 10 years in your career
you'll stumble upon also will show you know the only connectivity to that any of us talk on the other hand few where you work for 20 minutes and take a minute break it's really awesome but honestly it kind of feels like me put 10 years of hard
services and the to get a you know your dollar plastic and insulting the best the best that we have all so share
somehow we all learn what programs on but I would hazard a guess that most of
us know you really taught us how to program
looking over there Google search out program and terrible results
starting with the traditional way of teaching people program you start with nothing and summary
shows you a completely finished example of finished product what the program should be and then as for connecting and it's good what have fun and every single computer science is saying that I have no words like you really resemble the horror on our comic
refer since rules and then let it it and I spend entire weakens
think that lot and time of the year I know it's serious blank and no idea how to write code and the exact moment that I realize that there is also of philosophical activity that happens mostly in our heads across the ring remounted quite a lot from their education since I was in college I know now we are in the just 1 big finish example really broken up
into 2 or 3 steps over the course of a
book a screencast but very rarely does the pros of the explanation actually explain the thinking economy that thing more really all of its in my interviews before you're able to imitate you know you and example applications from
a book but our intentions stands out because I think the most and also just imitating other programmers we see somebody successful and well known who is trying to do things like they seem to be doing things and that's how we handle learning it by now you
can see that this is endemic in our society as programmers because we're really bad how questions of I as online with the created new method which I break this thing up and the more than 1 thing you know you get really unsophisticated responses like method should be
about 3 lines on it the we have my wife Joyce or she was 1st grade likely as she was told by a teacher that
sentences were 2 lines long and so then dutifully for the next several years until she was corrected he just stamp the period at the end of every it and that's funny because he's not adult and yet here we are with the size of this new ideas like and that it should about 3 lines long noble and you will be on but let's say in
spite of all this somehow you write a really good program 1 then you really can't really happy and I ask you OK so what actions with productive productive that led to that point but what not led you there which was thought processes were successful or unsuccessful would you answer those questions and that most of us would
be able to use these to rampant insecurity from how we educate
programmers to the work that we do in the column that keeping the overall industry now 99 per
cent of the work that i've done as a professional programmer can be boiled down as the business person trying to get a spreadsheet on to the internet the and yet if you can take years or so until we become yearly competent programmer next clearly something is wrong in how we teach people to program and its industry it's 16
or 17 years old but were still searching for silver bullet we always externalizing the problem and hoping the next languages greater library process is there suddenly make programming explicable and it never works out the think about that
situation you know yeah everyone's here making stuff up as they go or pretending they understand who's gonna succeed in that environment it's genuinely rolling people and people with the overconfidence of having been told that the brilliant all life so imagine that you know look like other programmers and you walk into a room and you lack the privilege of having been told that you brilliant by society this is a terrifying line of work to walk into because no can actually explain how the program and I think that if you wanna make programming more diverse and inclusive industry we really need to solve few and it's obvious that the industry has no idea how software works because it constantly analogizing it's literally any other industries like construction or like this and any because of that they control the handle things we do understand like estimates and make people work and where they work instead of like a true none of that which is like how we think isoprenyl person how we solve problems
so on we fix it welfare theoretically yesterday the know DHH offered us 1 solution
it but I'm going to talk about a different 1 time of feedback
because programmers through compilation protesting were used in establishing the back groups made forward progress and making the same things inside our heads improving as developers or a practice
this today by reflecting on the actions taken really successful or not and how to improve our actions you can use the same thing for feelings actually reflect on your emotional state so you can reinforce positive emotions or mitigate negative ones and spoiler alert you can actually think about thinking the introduced better thought processes that turn out to be more productive and this is
really a good programmer enlightened but I realize that was starting from scratch your
readout walk before we can run and ask yourself what we do it seems that our so emotionally mature they struggle even talk about feelings as well so
we have indeed crappy personality tests like the Myers-Briggs Type Indicator idea African-American Myers Briggs just know that it's the worst type system here few and reason we on it could put people in
silly block like unity day and ISO he and the implication is that there's only 16 types of people out there but we know that this is is much much more what we're starting from 0 to 16 start something pretty good on so that's why today I am pleased to announce the
words type indicators and instead
of pontificating to you today about how to program dictating and this is the magical way this is the silver bullet instead I'm a humbly take my own test showing you how I feel and my inclinations in my personality and when I'm done over the course of my career to reflect and improving result in better outcomes of a programmer to do that we need an example
feature so let's make 1 up like I work at a company test double we have always been a
distribution company but we're still learning that that does not mean evenly distributed but also the
flat organization you might think that there's obvious spontaneous relationships that form of course
that's not accurate that we all have our sign pairs and we also known to an account manager our current topics like 1 of those
19 such input ball games but
there's nothing wrong with that we're say say to people on the team was really 1 learning on but there's nothing systemically it's going to get those 2 people talking again necessarily so somebody
crazy idea why don't we have virtual coffee dates on the team and this randomly assign people to talk to people talk to each other and who otherwise wouldn't be
alleging expression from that node so the handshake problem which which is calculates the number of potential relationships of any group of people and there's just tons of and so what the system should do is just sending e-mail every week to pair up people who might not otherwise be talking to 1 another and tone go spend 15 minutes on this will hang on neural and chat about something that happened in our work
and our output my test the testing both the speech and again this morning as a group
and the 1st bucket manner put us in sensitive versus fearless in the 1st
question is I prefer hearing all requirements up front even if I can't talk a little right away I strongly disagree with that I get overwhelmed really easily to add to a long function feels like more code just means that it's absolutely I II and III of additional complexity can imagine adding another case
the reality for of being assigned to new projects and teams no way in new projects the slides or I often feel paralyze was staring at a blank wondrously yeah diarrhea and then influence
so that is sensitive or fearless pretty obvious in this case I'm sensitive information sensors that I'm overwhelmed easily
on so think about the future all about interior create pairs that's not so hard but I do have to go and send the e-mail as a look of all these people from a database right and careful not to but would repeated randomized appearance and I've never I repeat me to be here which you now some process that there's a lot of work so I'll I want think about all that as what books in the core problem so inclination is slowly just do that put it around it being part of the problem and do my little test-driven development bank and you really good about that in the code so order control and it's going to college and I realize that the methods indigenous white line or somebody else
might say hey this is you know you just means is doing all this extra redundant work it's actually handled elsewhere my inclination was overcome
that paralysis that I felt and finds a productivity by just putting the blinders and
electrons that radical often enough and they can
reflect actually in original how I work as a programmer so I just showed you was often called bottom-up programming but now I practice top-down what's better for you you might also call outside where I think from the perspective of the controller at the top level entry point and I started there I asked what do I need lines of the previous pairs your brain is focus that way the caller knows exactly what inputs are available without outputs that along is also way like minimize like waste because it has the broader context in terms of you know like or what not causes median surrender or can be emitted
by the other aspect of being sensitive is that I'm really afraid of failure and we work outside and
this do have to juggle all these different concerns at once which can again be overwhelming and
so what I try to use solution to solving like my inclination just open up an
editor and prove that I can write this codes start with the model and make a method I don't low-dimension users and loop over them I stupidly learning and a handshake analyzed at tuple of like you represent appearing in Ireland slammed through some Mailer and not there really is a group that could do it and so I will remind you remember randomize and you don't need not the 15 15th per cent every week and you know so that it prevents
re teacher happening but weak to weak and I'm terrified because like I think this is a really dense 180 more complicated and
I am very familiar with this part of the as a result try keeping
myself this partner and recall as a sphere of radius failing I'm afraid of being things that I don't how to break down so I solution is on whether you're by breaking things down systematized way give myself somehow and practicing over the
last few years iterating an approach to testament element I call discovery testing has rarely upper in breaking the scary problems into smaller more manageable ones it works with why star which is the
test of the top level thing so I went single test case on book the thing and I ask myself a crucial question what's the code that I wish I that I can differ and this work out too well something defined hand something in German shapes and hand something the mailman and persistent that I use my testable library which in really is unique our signing treaties for fake things and I set up a something sightseeing finds hands the following its you listening to symbolize the hands and the assets and the thing Germans shakes assigned understanding of new media spend 6 is on the test set I need to be able to actually assert that I a lot although sigh handshakes and I persist and that is the unusual looking test you on your answer but what it does is it perfectly specifies the behavior of that top level units and so I get this test the past and I never have to worry about that top level again it back to the must and
all the files that shakeout from just getting access to past now I have to be clear you know it worked out for me I know exactly what I need to do I can start making forward progress so I start off with a bit scary thing but as I got that test identified units and I would need actually part of the
work instead of 1 big scary thing in our warm 1 adjustable problems that I can focus on any of them are scary I'm my back pocket a tool that I can use to like reducing and break things up even further this
2nd but cannot talk about is inventive versus esthetic so chris questions German
my my tie question like mark and build the right thing then to build the thing right and this is another important but I'm more implementation focused pressure to experimenting with new tools frameworks and build systems not at all like I do spend a lot time in open source humans expressly so I don't have to worry about network question 3 I write visually appealing code down the syntax and symmetry absolutely and what I really like treaty symmetrical cone question
Poisson boring all the Laconia project is structured similarly I disagree I really like consistency in so that we
inventor or s that why I think it makes new assess and 1 part means that it is
then refined taste now the problem with taste is that nobody knows what
it's and that the until somebody on your team says you know what I Preparatory
functions all these well little small units that you keep create and then like this looks like
us the and that face it very wide there's and all test was
obvious in history of like and the spring
the infinitely many ways to solving the
problem we knew something to constrain ourselves so some patterns to follow to just not the analysis paralysis from and that's why I think that throws a
much better analogy writing software then construction is In fact I think the program
is just communication to the next developer is
going to pick it up and it's just hard because it has to happen to this filter that's just formula for an interpreter or compiler to understand so right here in
this scene that I reflected right I
take it to me as a protein that meaning writing code that's meant to be run by myself as opposed to another human because
the other developer they're not in the room so I tend to write code that I think that I wanna read this self-centered designed
so if I sort of look at design patterns on the agreements music services factories
repositories and if you're really really having done all this but then somebody
else can list out all the files I just created online data stream from their perspective is that the impenetrably complexes of why some of these objects video idea how things are gonna work and so
now I hear that critique they got a pretty good money and I found this happen
antimatter team whatever I remain realize I gotta start working differently to make Michael Moore discoverable unapproachable for other developers and now the things much differently it
started with realism programs are directed graphs so all of these units are really
kind of nodes in this graph and all of the edges of vertices are either punching holes so the locator pulse of services positive positive outcomes Napa which instantiates hands service also Charles that thing that inherently
you can think of programs where we have some taste share some constraining out principles
at me share like for instance in this repository recalled the service we would always I can't you know that's that's a dependency cycle we realize there is a risk involved in Europe a general idea overflow there and so most
of the programs that we write as developers trying to be acyclic digraphs and remember my
purpose here is to prove that I'm right I want to tell dispersion of small units is better than 300 lines objectively and
to do that I thought in the liberated constraints making it a refinement is further i can solve this problem and anywhere I landed was I want to express all of my features not just general graphs but it's Chinese because of a train is just a special subtype of a
graph you can take this exact same menagerie of units and organize it its relation work your value objects on the left and punching future behavior on the right and now it is true that I have a new interaction it stands out military because can it's just got 1 child so that service located yes I can probably get rid of that and somebody asks you what they're looking for is how to compare 2 hands they can search the tree much more easily and quickly then it just a gigantic directory of files and and find what they're looking for so more discoverable the other aspect of my study design
animals so when you look at our at
UC into car it drives me think about what its function is and why it exists when I look at our and
all I see is that in the next and as a
minimalist my productivity goes up when things are tiny and symmetrical and terse and goes down when things are quite a inconsistent and what the software is supposed to be doing is the social complexity everything it actually does is
incidental complexity all the stuff in comparison with those in writing a program you your writing the poetry African configured dependencies and framework accusing
their courses whatever the act was supposed to do the style rules and use immigration build systems the press unnecessary stuff as a minimalist under personnel the predators always choose away to try and minimize the amount of personal complexity in the system and trying to maximize the time the team spends on whatever is really important that always tweaking my own style
but when you start writing of being future beta inside my model objects but then separated not the separate units but then we make them Paul walls but maybe ultimately landed model methods use offline leading the debate the finer point for the data released 6 of 1 half a dozen the other kinds of arguments
and they represent a sort of track his
earlier isolated style rules there is there is a table is known complexity because subjective and so it changes around arbitrarily and arbitrary decisions breeding consistency and 0 it turns out that inconsistency and other forms and complexity and so groups and
because someone error organized code this way
on Tuesday this way on Wednesday that ran then by Thursday and this is the best way to organize and everyone's going get mad at me because I just linear 36 custom little styles all throughout the system so I temptation to
continuously improving stuff actually brings inconsistencies and creates bigger mess elsewhere so reflected on how
I think what would happen is chased the local optimization at the expense of like in global optimization of what's best for the overall project and I had learned to avoid this oscillation my design a really require mean just realized I spend the entire private spinning my tires and so instead I decided I is lock-in these decisions and say we're going to think this style whether or not it's better worse doesn't matter so we can try to carve out time to be productive this and better at that x flexing their muscle I could recognize worms in my wheels earlier has been 1 my time the productive was away from me and both mean loss but also really consistent my applications in way that human really strongly to arbitrary decisions of things that that really matter and when do especially
with your incidental complexity it brings the essential complexity in a shop releasing you can also change religious focus Mr. more commonly rappelling said you that part
but it is 19 verses leery
of question 1 publishing metrics like code coverage is always a good idea in I think radical transparency often backfire pressure to writing and
commit messages today will pay off in the future art secret I don't actually know messages so during its
authority as it's smarter use of time under pressure disagree I think pressure skills cognition for software is generally
through over time and you're not doomed past so what that
make idea where only realizes the pretty obvious test in my case I'm weary of it all started to my distrust of all of you
it because most genes operate in a
pressure cooker there under pressure to get as much stuff done as fast as possible and as a result of the rains turned all the known results in really really bad outcomes in fact is not very fair a pressure cookers because pressure from the server useful purpose on soft other analogy
few where displays we use for all the remaining jobs that were worth and again not being created not resulting in cone 1 person and things I don't trust
and I don't trust product honors alone but on just and back in the waterfall there is you know product area will specify 300 below point and everything they ever wanted and enforce them upon us and saying this is
awful likely away at least it was once they got
articulate everything they wanted front of users us who did you know how to handle that much complexity
Solomon Adelson stuff can gave us a little bit about what we said no sir you only get 1 index card time and in fact
that's the only 20 points and I made the pointing and so on that's earlier that becomes available I think it's time points in any system can be
gained and really sad product and I know I will slide of of this is not like this is a little protein well you guys can do that right you time I will say only after we can you know and then we realize is much more complex than thought and by then they're out to lunch and we're left holding the bag so just product honors right so I'll just even less than predators as other developers and it's because of their will a
future we neglect to realize a very basic fact operations can only hold so much stuff and then once and so I think in another centers bias for inciting features just whenever number of things they can hold hand in time and naturally the conclusion that we draw about how they are objects in method should be in the same missiles
then a weakness the things in 1 place it seems like a simple solution but then
passes a somebody says pain and a couple additional aspects to this feature you know it has to do this unless as well well so that means that the other stuff like brain is finite we can't you know keep it on our hands at once anymore but units making makefiles as long as we want so we just you know recurring painting cost of unique can slam in those additional activities in the future but it creates a blind spot for us where you know another way of thinking about whether the persistence you know bonds can creep in through that door and you
want this way yeah passes freezing
unions are just gigantic and they look like this in a room with funds and linked data 100 is that in an ideal phone call sign they can help improve our tests of course this is a testing problem right it's like complexity management problem it's hard for me when I see the
cycle repeats over and over again selected distrust handling rowing a cynicism and that's 9 and in fact it but I realize that the root free all of us really struggled to predict how complexity is going to change and guess the complexity of stuff and I do it too and so what I wanna do is is is is change the question and instead focus
on how to prepare myself and other people boarding and will increase of complexity is there
any maintains system almost any number of complexity develop over time it's just a matter of what that graph looks like and so like Pascal I mean up sources wager in my head yeah sure complexity might remain constant work might go up and now we can keep writing these brain size units or a much smaller ones and a complexity doesn't change you know no harm no foul it is really matter how we factor within that we have a lot of evidence that these larger units cause problems and the nice support small ones and they can actually accommodate some additional complexity without too much pain that when they want every
feature I break things up into itty-bitty tiny units the power people criticize me and you know if you think of my answer small don't worry because I trust you're going make bigger right and we can it's a great way to struggle with like
trying to make a follow similar responsibility principle have and we have to do 1 thing this makes it really really easy in fact this is what the
Treaty of functionality cash account as in this example that every single unit served exactly 1 purpose present or follow 1 of 3 roles that kind observer years of practice the parent nodes are delegator
objects they don't really have any logic programme seemingly just like 1 in condition or something they mostly just break up the work and handed out to other and the way that I happened enzyme I use this tester in design where use DB identifying they got ones you know was the code I wish I had that that would actually do the real work the we
want to an action arises these linking
nodes so this is where the core logic of the application it takes inputs and transforms it somehow but you know the the pure functions so you don't need test nobles you just are actually testing real logic these are the kinds in unit tests that everyone likes to right and so like functional programming for people who don't want to think too hard about functional programming I makes it very accessible because you can still do it in your room in your languages
and the latter right values and I objects in this
rapidly in the data mining is hold onto at hash array and that enzyme and are only allowed to elucidate the data and answer questions about the data as opposed to doing feature work they're not they're actually build features instead I think that was the sludge that flows through the plates of my future then the types and those methods intentions and at all this abstraction
doesn't ultimately pay off and even if the feature doesn't change along the future the very worst case and very discoverable system of carefully named things that are on using small incomprehensible those are the worst outcome in the world but at the aspect here is that I
distrust myself so I knew more than all of you I it's because I worry about the
future and you know I'm not supercontinent today these skills I mean worried that my future self will be able to program leader for some reason and
so what I'm writing a feature space of the thing all think about how to build that and out of kind of messenger model for myself in the form of better tests and documentation unit messages things to try and help and my future self who's
wearing sunglasses is told change that
feature is really frustrating because what those testing is now a bunch of other stuff to do every time a change and I changes of would much rather just stop fraction be able to write new code so I kept trying to new myself things by by by writing a lot of extra tennis and adding it all this quality in the beginning but actually try my hands and
reflect way beta quality into my applications without creating an
undue burden for my future self and so I started working a little bit differently because of this is
actually a functionality interim manager comes in and says you acquire a taste of some major
fiasco all handsets have happen to 3 people the traditional way to solve this is
to carefully read the existing code and rule change has changed the code and try to make a smaller mass as possible and I say small of mass because any time the purpose of a piece of code this has been true things on we changing it carries carries with that technical now in confuses the story of and existed because it's changed over time so instead of trying to make my code disposable on what that
means is that when I look at this tree I search for all the affected units by the change in the 2 years serving change and so I find the smallest sub-tree that encapsulates such interactions in various right there and then was something unusual and blow it all up I'm
not going out electron Summary future self as the you will see that top model thing and understand what the contractors onto the is is very dry martinis solution and as opposed to just changing the units that implement geologically the old way and thus lack of technical that sigh trust and dried up a new solutions in fact in future also there had more experience than present-day us that probably have a better understanding of business building or to write better to in the future and we can work that help to you today so as a healthy way work it doesn't mean that I try
not to reuse code too much of my physical because they any code reuse like vehemently that's called in 1 place and it is really hard change them because you have to considering 9 different scholars and wanting something really haven't thrown away replaced so I tried to is too much code but and also of course we let go of this idea that maintainable code has to live for that you know is as opposed to that this incremental rewrite in the smallest part of your processes away OK technical know that you know without stating a read a fun for when you finally get to the factor and in doing that actually myself happier his future leaders does not want his job to be you know fixing all just on Jakey test every time he changes or wants me to write code for a living and so this is this process by making like you know just a part of life while working through features is a great way to keep your team's happen in about the last
market here is economical versus the world on question 1 vanishing code
quickly then wait until everything is tested and I feel like I just bailing out water in the case Due to principles on his father's esteem waste much time on and it's possible to assure that thinking the rest of us during most seems like a sufficient
understanding the dependencies I absolutely no no 90 per cent us have no clue how most of our code works in cations
repair educator everyone a teenager separate coding styles are actually strongly disagree this is silent development is going Conway's Law of style so
is that the economical around well of course
makes me so so area is saying that the cells to I have because we make up the quiz you can make a fella you want it is a surprise accumulated
a confession made control 3 are and then I'm doing this of free
stuff Ausonius assignments free puppies
all I read is extra work and better in our industry makes me think extra work is open source of Enceladus keypad near her
next time know asking for free labor from open source container image's yelling a puppy instead because who knows the puppies and to an open source is going because just like
properties we have to learn how to use a regular house changing and following and and and it's not just this panacea that we can pull off the internet and instead have balls of ourselves end if
that open source has above it you know if the erasure we can't fix it ourselves but in practice when I can understand all that stuff will probably have to rely on a maintain on experts to come and fix them later and finally we
have you know like 1 seen are graph of objects and so on very consistent i everywhere and we slammed and third-party API that's I create a certain amount of and painting is not going to look like all of our other objects in fact what third-party has really nasty habit of making references all over our codebase which makes it really hard to change or replace or upgrade the third-party dependencies over time so I temptation
all these negative things about open source and buttons this is why don't have about the 1st of all again much of my work practice concentration but you I try like boy using open source and that's what my gut tells me you that's increasingly untenable
these days designing reinventing wheels counts so and change I thought about open source instead to mean protecting myself from its blast radius as opposed to avoiding entirely that when I do that as I might wrappers of all the third-party code that I like to invite
Miriam 1 the streets finds hands you on the
left there's a wrapper object starts is just overwhelming delegated to know what doesn't do anything interesting when it comes to encode all of our understanding about that dependency is the carpet under which we sweet all the stuff that we have to do to make that third-party dependency happy and integration testing but only a proportion how suspicious I am of breaking otherwise I trust that itself is tested well know like meaningless in direction but energy and trust me that it's not 1st it this is a recall and find
scenes in in a in a talk will look at I just told
you not to trust other developers you don't trust me I understand that like that is unnecessary let's say that instead of using that call
was inequalities and all the stuff that way much more directly or annulus interaction with need of the hour test on so this is our original test media would at finer and Santamaria real users and create a database of course validation failed so now I have to and 1 of 1st some it's not under arbitrary thing out and make this work but I can also get rid of something here and impasse real users into the understanding of in united in integration test as opposed to a unit test and ask yourself now when we just need because the value of this task is to the crystal clear its purpose was to break the work up in the war clear responsibilities and now what is it it's at this conference the database making sure that the thing works but only 1 3 quarters of the compounds are that doesn't seem right that there seems wrong to me and it's really don't obviously wrong when this becomes more complex as if we add a couple like only search for full-time active employees now and are tested in watermark as a soldier like branches so we need to move to a test cases to cover everything announced abundantly obvious that we slice things wrong and so when I fear change complain
you actually instructions in to objects typically that thing that's it's not right that they're making not and I have to manage actions and no instructions on whether it's a new probably mixing the levels of abstraction in your system because life with
rappers is a much easier if I look in that same
thing died in what that record looks like yes and they want it looks like it was in direction by Monday is more complex there is you know it's easy to write a test for this by this place like complexity go and over time you know it might become a little bit more complicated as distance yourself further here with like a transformer do a type that new owners of a poster you know enacted records
and so let's say i r Boston there's several change of Active Record the sequel Jim traditionally this would really panic everywhere in the world is 11 billion references Active Record all of your system but when you're writing wrappers carefully the third-party dependencies you're actually proved to be preparing for yourself an adapter interface sitting in 1 specifies exactly how you use that dependency gene answer questions like what is it possible to switch to the search energy then you can create an alternate implementation and when both in parallel for a while it so much much better way to working like founders
doorway to maintain that still have all that convenience of open source is sucking induces libraries while maintaining control over how you work out so whereas
introspective about this stuff is I you run the risk of explaining the universe through you yourself in fact you asking them a
worked on product with new will like their way alright codons it's my way and all the 4 so my inclinations doesn't work really hard to convince you all of my weight is best and look the same as altruistic going and what will be better programmers but it's not it's selfish where real users I'm afraid I'm going to have an outer sum may tell me that I can write code my favor way more and
reflect on that unit work come up with the perfect wearing coming hand to you I want to run the risk of having you on that same on time so that would be going so that's why I'm getting out of the silver bullet this it's
so you know I talked a lot today about how I program by cellular now a whole new kinds of useful for what I really mean here is only 1 the idea of pausing intersecting about how you act feel and think while you programming so that it becomes more explicable to you and then you can articulate and other people who will and share you might have resulted we also thought ourselves more than just create chaos our teams and I
think that's actually Eichenbaum concerns let's is talk about that because earlier I said if you like now all those arbitrary decisions upfront you can spend more time being productive that's true individually but it's also true esteems and that's why we have disagreements about the teams mission aggressively polis forward because the earlier you have that discussion and say OK now we will use the summer courses will follow this style you can agree that some early like in know entertaining more productive and in fact if you look at the average you where what I said earlier were just imitating other
programmers so postings actually like the
idea of normalizing in fact some of the like it too much when you create an idea of doing things differently and I don't wanna rock the boat you know I wanna like you do my own thing up here are go off the reservation political so instead we tend to was the lowest-common-denominator 0 on teens and that's not good but as I you anymore right
because after today are you really thinking about how the actions you take out the through your feelings into the your thought processes and and your next to the driver to moline lines you Gecamines some of whom will be sold and some of them will be buying which is literally what the other portraits of here from the sale and some of these faults we look at this scene
yesterday on very strongly held opinions on different ways of doing things with the on and comes with our approach of the new idea have a system were testing it and figuring out whether to adopt or reject it so they're not afraid to try new things and that's why I think that really just vector
developers right there we're acting images just look like they're talking at the weight for all the the connection will look into impact on each other as they were a
natural and real today is that if make it as the industry to normalize the concept of metacognition as sovereign so that we can explain how to program this fall plays might start making a whole lot more sense check and
that this other progress yeah so
I I I I appreciated finally they if you're looking for a company to work with with the support you understand journey have been consider I check in a solid that's our updated plan was like to work with us a testable major company that like is looking for additional developers on team helping consider working with us we join in the eyes of other teams just as additional developers with an interest in helping everyone get better as we go I and you learn more about this on our side by the way I really mean this this is a real thing I actually tracing out like a hundred copies and my dancing special commemorative edition entity come up and say I'm everyone has a lot of testable stickers I if you I don't want him sitting in person you can actually go test that will not come slashed SALT II and philosophical meaning dual formant you of our are yesterday actually did not on minimal fossula calculate you're on your program typing e-mail you right away so you will check that out to can most of our land all I'm really thankful for this opportunity and for your time this 1 thank you have half a quick
biases UN by