Thursday, October 13, 2016

GOTO 2013 Software Development in the 21st Century by Martin Fowler

look better because if you fall of sequel databases
one thing's comment and pretty much all the notes basis is that they talk about
their wonderfully skinless and all the fantastic things you have data when a
lot of people talk about people's out a lot of subtleties that you need to
understand to really stand whether it's a good idea to be stimulus also have
used effectively so that's what this my first tuple is going to talk about a
little bit of that and dividing to our first little about what Melissa disease
and then in the second part about waking life and i'm going to move around stage
and I total market normally do that because it really makes my camera so
he's gonna spend a lot of so begin thinking about what to think about
typically imagine in a relational
XP so typically expect create we define the Colorado Plateau you say what they
are how we give some indication light and then we have to follow about speed
and if we try to insert defined in the scheme and they're actually be prevented
from putting the data now we are demons later Nazi base of course we can school
store in there we can now records of people with different fields different
capabilities and that most people talk about they talk about the great scheme
business it's really good because you don't have to pick yourself a rigid
structure of the relational later instead what you can do is store
whatever it is you need to have whatever but disabilities being imagine just want
to restore its banks
to find a nice simple query and we find records unless water records is
effectively what the risks of difference scheme so in this great American city
code but I mean when you pull up those how do you imagine and what this leads
your thing to think about saying that the data may not have explicit scheme
says have to store it but there's always with speed you will make assumptions
whether we use words if you use or do we use but what that is in there in the
data but it's only listen it's not an explicit and implicit scheme where is
effectively defined are all accesses of all global reads from it with rights to
it that's where is there and just because you're using the dispute Alice
database doesn't truly your skills
it just means that you'll see
these people in now talk about the context of databases because backs
webchat disciplines at the moment scandalous but if i say not quite in
memory programming as well let's look at example in a couple of well-known
programming languages and what you see is we can define certain classes and
find one resident parts that is effectively scheming and it doesn't have
to be just an object or intersecting old-fashioned seen the same thing maybe
time we find sites for the line
Stephen and similarly in in their language and also feel skinless and you
know schema typically by using some online dictionary Act associate write
something back in most languages have this ability or is easily available and
that allows
that's only bility store ever values in the map half the predefined redefining
the field structure but the question is what's the advantage to be one or the
other is it really about a difference between saying Donald something as
opposed to putting something whatever the problem campuses where is a chair if
you're gonna use the field explicitly you really want to have a defined feel
in this explicitly you've got if you're using a dictionary and you're putting
daydreams when speed ain't what i meant database ok so here on out you know what
I'm going to use the night I decided my keys are
I'm going into that nature and we're gonna roll around and find whatever i'm
using those Christian name
where do I find the surrounding the code implements even but if I gotta find
class with clearly defined fields and it's easy to see what are now we're
really promising useful is playing you're not actually explicitly typing in
the middle name of little value but you're pulling it in from some of the
souls may be displayed
interface where you are creating numerous security dynamically you've got
property name of our something about that situation the that's where having
the kind of implicitly spot years on the whole my view is that if you're using
something quite magical addiction great and you're talking literal values the
that's a bad smell that's an indication instead of having defined fields because
it's easier to see what's going on now this because you're using lots of
properties this is necessarily use particular you can most likely
reflection capability which you can use to get all the battles well so this is
definitely a choice between two and sometimes I find the right back the
other various trade off now this is actually trade back many years ago
Best Actress happens and he pulling this is a different one all comments state
which is when you have to define fields and they're a state where you some
what important that the very useful with different instances have different
things that need to restore themselves in this very respectful but waiting on
most of the instances having the same things that is defined clearly fields
and this is a choice you can combine the other techniques in the same class so in
this example here I can have defined fields for the first time last time but
also in class or any other those together so this allows effectively to
use both sides now just because i'm using the plans I could don't actually
have to use explicit fields storage with this example here what I'm doing the
same single plus the class it's got an engine lights explicit fields but
actually stores always in an underlying passion and this could be quite useful
technique particularly
these days where seen a lot of people scored eight things like single
databases and save Jason format and then pulling out to use interface services
basic Jason or through simple make applications and Jason you're going to
do that I'll store the data in your objects but we might want to manipulate
its Jackson deserialized of it into a dictionary because that's kind of stuff
is easily building the crucial thing to remember that object is that the
internet implementation two different things . encapsulation is too high
expectations and as a result of using addiction internally but exposing
something that looks like five fields from the outside is a perfectly
reasonable way to go that way you're not an explicit scheme of your Divine fields
but at the same time you don't have to be always having more would pop into
different days was flowing so here we see that in in memory programming
we can combine the notion of explicit but you can do the same thing even in
traditional relational labor any bad we do we see this all the time
there are three common pattern is done first to use effectively custom color
but don't really have a name
by convention program
another technique is likely have a custom length filled with you been
filled with some kind of structure that allows variables right there so maybe
case better than a string field back this second technique is closest in
memory of your honor and I have some kind of associated look at the table
allows them custom fields
you've probably all seen this technique done any large relational database
application because there's always a need something club all real robber
this is where you find yourself a lot begin to feel that leave some emails
appropriate step for this is really just layer and a hacking
business into the relatively flexible and very rigid relational instructors so
everyone we can reduce fevers and people's spoken databases and never ate
and it's not necessarily choose between one will be able to combine scheme and
very the well-being of their upset so r is that we see the steam and I think
storage scheme what I mean is my storage skin says if I want to store data in my
store Britney members they like the scheme will prevent from storing
something that doesn't fit
that's how a relational schema of Rights and it's effectively providing classes
of meals in a record structure or glass box of memories whether you can't fit
something in there but that's not the only way that we can use a scheming and
less common way of using but also very useful white is why credits team
practice what you're doing use your allowance anything to be stored in
whatever your storage mechanism is but the steamer is gonna be used to detect
what shape of things it is so why you can detect have I love anything that
doesn't fit the definite divine Council running in place
I might still something that says load even though my skin was so sick man has
a separate step all go inside
not even or perhaps when i read the date first
see it's scheme and make it does make certain assumptions about how to deal
with update now parents usually is something I get you got supply the xml
data it's just text you can store whatever you want but there are various
ways to test xml against the best know it's against excuse because it's got ski
but it's not terribly good even language and the one option here is something
called relax computation which is a much nicer scheme taking it easy to read and
understand and this is why we have been tested external dr. Steven this brings
up an interesting point but when you've got things like radicals schemers you
don't have to limit yourself to only one the demolition language for the kinds of
schemes right now you can use different languages depending on the context of
things what all you can actually separate the Rose arranged in order to
be able to have different schemers different circumstances
so here are the basic appointments keep up but I don't have another scheme of it
serves let's take that basic extended because if I wanted to
confirmed appointment I actually define the physicians as well as information
and socialize text data what happened multiple schemas not contesting that
depending on where i am process the dark looking this is actually a very valuable
thing because it introduces the notion text validation now what I mean by bad
when people talk about whether they want to validate think they often looking at
is a beauty behind everything some class record piece of data is valid or not but
that looks a lot of it isn't really a very complete way of looking at things
usually what you want to validate something with the validation change .
the particular context world and the context is usually of something you want
to do some action to take
and so validation you may well have multiple different sects of validations
a particular thing so if I've got an appointment I might have one validation
says okay at work with this setup and ready to go and different today
he says no campuses and something was actually going to go ahead and
evaluation will certainly get that one way it's looking bad for its surrounding
context the context of validation is a normal in the database and this is like
where a lot of people go that route because of maple bigger stronger rules
on this validation storing something in the data banks often it's useful to have
relatively weeks rules for storing it and then they are all of validation
checks right around to say is actually of my store fits but is there some not
going to do something with and what is that thing i want to do i'm storing a
tall order information is it enough information that i can actually ship the
order information that can demand payment calculator price for it or am I
still sure people are often reluctant store partial information things that
time and that's because we can use the rules of the validation storing with
validation steps the actual actions so that I hope that your sex a lot of water
schemas than just the notion of
what a relational schema might be they're actually quite interesting and
we could arguably used available widely in a programming anyways i have tried to
describe the evaluation things that there are all having some of total
schemers to wait . want to use this approach has hosted musings actually
define the schema so to solve my fingers up when what is of consequence of this
going with something statement saying we got a customer and we're just going to
make a hashmap not gonna be fine glass making scheme or anything back
the question then comes in and I alluded to this one a few times already
what are pleased by which i can access that have one act well
the place where I access that customer and a lot of around trying to find your
spot so much generalize first approximation download and listen
because if you've gotta listen scheme that you've gotta work around a lot of
guys trying to find legal value have some experts that mainly of divine
scored schemer remaining some way of testing against credit but have some
light people conduct ok one like him going to make that explicit and it is
certainly a comment that I running to where our old projects use stimulants
solutions about so yeah it works really well
while everyone started brightly predict what will be an explicit scheming but
that there are we're having a seamless raj can be down and override general
atlantic explicit scheme and I'm going to boil this down to this month
the third category of cases these cases actually storing is uniform if most of
your day that has the same things very easy to see what do this experiment but
if you get very information from instance instance then having a big
Steve Avery's it's just too hard
you've got to come up with some kind of flexibility mechanism and relational
particularly up there are two main situations where you get this kind of
non-uniform first be our custom fields this is what common products out where
different customers want custom values where you find in all areas of
situations as well whenever you have this kind of custom field that's a
situation where you may use some skills instructor at least equal to $OPERAND
and this is again very loose find a way to combine of six various states the
other situation is where you go different types of our very variant in
their own beds a great example of this is if you'll do
what about where each event type character its own different kind of data
make a very different clients event in that situation again single approach can
be very happy now have my reasons people talk about the benefits of going
stimulus comes to my grave as you want to change your datastore into overtime
if you've got a skinless approach is correct change the description to school
that change its structure and have all versions as well as new versions storage
here actually Oversoul advantage because the problems in the direction is still w
melissa the water changing of the trial now you can manage this degree if you
Prince just rename zip code to see you can actually have a reader but able to
look for I value and then right right so you about so you get some flexibility
but as to get more complicated migration you reached . have to do a full for
migration and when it comes down to it it's not necessarily it
and exercise but we decided problem with fixed even databases such as relational
databases is it is very hard to change the scheme or other time
actually that's not terribly true project leader with more words we change
our schedules all the time but happy and always working and enjoying requires
discipline practices keeping migration boils down to making sure that every
time you change the schema it small tiny version control system you use lots of
small migrations every change make microdata and then you can change from
one version of database by composing migrations together of glossed over the
grossest we can finally trails of various places somebody actually a very
well-known technique and the same technique has used mostly skills &
databases as well
eventually all of those special deal with all versions of the data get too
complicated and it's better just to migrate up and then only have a simple
mapping up tonight structure so you pretty much have to say migration
process with scheming database as you do with 16 you get a bit more flexibility
every time that eventually you're going to have to pay that and so again here
projects use databases we still have to worry about migration doesn't go away
but on the whole use an explicit scheme as much as you can be very clear about
18 expect the story sculptures use the influence he was really only in the
places where you really need that ability to handle but that's all
if you don't want to just in general page website where my notes up actually
have included a version of this tool that you can read through it . reading
stuff they're talking absolute little better deal
so the second shift completely different first one was very programming and
toning and this is going to be much more processes like more about agile stuff
this one is really very much paper appears that a year ago about level
agile fluency it's a paper to people have been involving agile regular time
and I first saw it when I second-round various people just looking for comments
and i asked site where you can publish a paper happened to my eyesight and i was
very happy that something is a very good way of thinking about how teams . and
we're 21 in the agile adoption process and i'm going to talk about before I
talk about that i'm going to
that essence of what Angela software development back and i think it to talk
about the essence because it's something that's easily get in all the Chinese
whistlers and stuff that's gone for ten years plus of of the agile so think
about their job to think about their ideas less agile software development
appeared in the nineteen nineties and the result of the bunch of really doing
there are things in the 90s information projects problems project for problems
their be hoping I'd run into the better but these problems with certain very
apparent that as well but other time
world unexpected I what you wore those problems and that plan driven processes
capability maturity model very much idea of buying process we need to get rid of
the human element we need to be fine steps people who just all over to come
up with plans and designs to advance the program is really just something we can
kind of ship off some minor organization preferably a country
we pay them less and it was really seen that kind of wine and that was sexy
if we wanted to do with the problems of software that direction but the people
working in the actual world now we have a different vision of those put together
in the agile manifesto but said they have a way of thinking and when i came
across a jar methods in the life of one of the things that struck me was how a
related picture but and i ended up writing an article about this chuckles
new methodology broken before the agile manifesto now and it was my attempt to
find synthesized together England LED and the way was really in distinction
between natural approaches waiting thinking and the ones whose main areas
where the first of all a job was adaptivity planning while predictive and
the second was agile is very much
around people from all the land global process explorer things started in the
it was very much of operating bases first you plan your book then you come
up with one and then carried out and the two very much separated steps and this
is what I predicted planet because the idea was people went well everything
goes according to one about the way in which processes typically mission
success was according to plan
whenever you hear someone saying we will multiply and on budget project and
they're very sleepy that addictive morning thinking it says successfully we
follow the plan and this is all very well
probably around people made had a very strong dependence of wine and even the
word you're going to come up with a plan to do something you need to know what
build but the problem is not just this is your plan which why software
development process and the problem is we have actually have State Board ones i
was like to do this
how many of you have been on the project basically what you really want something
very unstable they keep changing the world really important right I'm
actually that's kind of where all the breaks now so 100 people said ok we're
going to stay the logs to get rid of this deployments church and probably
also techniques about getting the battle stopping it
the agile approach shift away from that and say well I software development
common civility and that's causing all these problems maybe what we need to
recompense and instead find a way to get real that so some text subtitle of an
expert on extreme programming was embrace change
let's look at changes some people we can work something to prevent and that shift
in mindset there
through the whole kingdom of a job in fact it even goes beyond to my favorite
very that's actually take that and see the something blue so it gives us
packages because we can response about and so is your agile environment you
can't find success is going to going to black in fact anybody says project
morning but that's really not a little after thinking a job cleaning says
success has to be fine behind something differently you know what which is
beautiful value of the business something about whether it was important
vinyl is kind of irrelevant because the planets change 20 or 30 different times
exactly people version of the black idea a notion of our rather Michaels project
manager considered to be one of planets rocket latex it looks good on the day
you got it after a few days is looking rather or quickly and trim around the
edges and after a couple of weeks until recognize that again
doesn't mean double and but it's a changing thing two very different
attitude so that is adapted it's about understanding consoles change and making
informed control decision to change instead of a predicted this is how
things work out
and those are like too hard to go down their children we would like it if
things go according to plan we like predictive we hated when most people
tend to this white things being unpredictable in this the actual way of
mindset is saying well it would be nice if we could do predictive plans will
love it that way but sadly reality looking at different nodal time but it's
not easy being the side not necessarily need to do anything that distinction is
easy to say hard to do the second the ship too
people process is trouble now he had this world usual line side is this
person who is this person
Tyler the second line and signed by simply saying we passed in the past
before he started operating in the landmark century people will decide how
to work themselves the man but now system and we make benefit system
essentially what it says we want to think about software process mind
process as soon combination of steps and links between steps we down the line
diagrams separately words of course in the box
words really mean that much so I show without and it's a little bunch of steps
and we might a bunch of people classified project managers programmers
test business amex whatever your classification spring and label project
is we get
mentally fit into those Cossacks notion process first the people left with only
have John completely reverses it says want to do a project in agile the first
thing about assembling a team of people who are individually good and work well
every human level get on with each other and there are several 15-foot team
decides long process to follow they come up with a process of suitable for the
problem working up and suitable that different people will choose different
ways of working because different people different and when people work together
they were working with kinds of lights and that's why my completely wrong to
inform to push and commanded to go gradual a team has to choose themselves
if you're pushing the process between that's fundamentally and
natural and so a lot of people saying well Angela stairs I've got to do this
in their property has two are certain steps that's where everything is going
the team has to decide what to try out and if the team chooses not to do a job
but that was because it's not going to work with them that's fine too
it's the ball the team makes that decision number and in the end quality
of the software team is going to depend very much on quality individuals in a
lot of thinking in the plan triple approaches so we actually don't care
about having people that good people accountable so Robert not because they
tend to be documented want to do their own vain and possible so we won't have a
process works pretty much anybody God will say that was terrible and the fact
that you working on to have very effective people you need to have a
you actually need to go out and then there's good in particular why you need
to have them define how the process works and it goes well and the limits of
how we're we're men away should you have processes in the early days
we're family agile appropriate process excuse people might look at the kind of
problem size of team as being the typical battery area's most of those
boundaries across but the one battery is being very very solid realize nature and
culture of an organization if you come any wire very stressful it doesn't
really is interested in being people-oriented that would be a barrier
making actual work it's that cultural element really is development and
certainly we seen that organization we've spent a lot of helping people go
ad that clear whether thing goes wrong if you're in an organization where you
double trust you can't build up with mutual respect but that's a huge barrier
and cultural change organizations is the longest hardest thing to do that but
let's move on to the next part is no model developed sorted and they said
that Lucy's really as they look at the various teams sexy
thanks to find the star of our teams upright very capital voice maturity
levels things back there are trying to use that word
obviously . everything has to pass through these star beings but teams not
always making your way through so the not level one small point is typically a
team that is getting the kind of the basics of the management processes about
Charlie lights broken down into iteration they have a certain degree of
some degree of self-possession talk about strong but the key thing is
choosing work all channels usually with the negative approach and then delivery
knows individual chance and they have the ability to begin to shift direction
that adaptive planning things begin to kicking where they can actually change
their minds and whether they're starting to talk about doing in terms of business
features as opposed to software operating this
is you have this visibility is what the team is doing even if you're not
yourself you can begin to see what features are being built or they get
built-in ability to control that you begin to tell you i push this wall
feature always push this one back and the team reports what it's going to be
doing that in terms of business value with the features described that again
requires as anyways there's a certain degree of investment going to be message
between operates develops and also in basic processes get and it's gonna take
time their observation is to get into this . teams usually take a few months .
but a large reach this level and taxpayers like Vera was just on the team
you can also look at this this is typical of a team that has taken on
scrubbing and just villa struggles doing the various things described by strung
along more extra means building in particular protect practices the team
like as the management
grunts but not even 10 people think this is disgusting and development things
about to go to that level that is their second star and this is the step less
teams get this far and also takes a good model for him perhaps invest that much
fire because you've got to develop technical skills to figure out what is
introduced integration continuous delivery get those you gotta get me
factors test-driven development you may want to school things like you're going
to listen to have solutions available moderate but the bag is I get a little
productive team will notice a lot less wrinkles this is one of the angles and
certainly strikes me very much when I talked to a general teams often what I
hear from reasonably well going to the technical level is how they go into
production rsd effects in typical their organization that's kind of interesting
thing because something that people often so our jobs agency not very you
would expect you get problems we have qualitative and actually
the following are Delta much of striking level
analysis of the impact on testing and development about technical practices
the ship leaves from visible sex is that you get to the point where routine can
effectively shipping they're delivering not on whether the software day but when
business wants those shipments to make this is one that phrase and that uses
the market cadence it's basically saying we can go live
whenever you want to it's really no business is not technical limitation and
this is where you sleeping shipping maybe every couple weeks going into even
more ring while running two teams where they will commit production every day
something about a magazine because the technical practices the quality is
allowed . they can describe these two levels
obviously the second one . to the first level but not as you have indicated not
everything gets perhaps my team wants to try again there is significant
investment in getting to that second level and you are typically past
before you get to the second ball but you were thinking when you begin to I
want to try and second because you've got my bells kinds of investments on
technical practices of this is which is more into the way we need to get into
the lead not terrible but says this point up to the second level you very
detective of water business business people say this is what we should be
building we have a good conversations but very much older is of ideas once you
get to the means and much more
the team is actually taking which one active role in sight
this is what we do
and they're using techniques and formatting startups main test things
back to try this thing to do but this point is a lot more open amount of time
several years and their teens actually get this far and there's a lot of ball
because in order to do this people within the team must be much more we're
going on business and I have to take a much more visible role in organization
the company the first to the whole kind of do we've been a relatively small but
it's really have to go somewhere development ng is really want that
second level set this means taking a bigger impact ionization a lot of
organizations is not ready to go
this pattern and often or when working outside
are you an organization really tolerably the blue is the level are they ready
most organizations
yes i'm going to say no i'm not . but the advantage better is if you get much
much more focus on building things because the team is making as much more
engaged process of making these compositions that all is really a much
more role of organizational this is a test to this level is this is a team
that would spontaneously back the project they're working on because they
realize the entire program with what they're doing is the most valuable thing
for business and they should expand themselves it's questionable whether
this video do you mean that they really seen this at this point the comments in
the paper is where we've seen this scene is in school organizations we're really
in the verbal level so this is a comer speculative idea of whether that's why
not expand but that model thinking about agile fluency easy you still want to
think about
it's worth something
think that seems to match of people's experience and practice as I've talked
to people not said yes model makes sense to me it's something that I seen
residence in my experience and it also gives you an idea of where the way we
want to be going within the organization part of what is a realistic level pain
what they want to be your expectations about how long it takes to get there and
I think it grabs from this is not a rapid grossest in order to get even to a
two-star level you're taking typically comment years to get that kind . it's
not unusual to get spent a long time and I think about useful . for dental people
to love field going a job is really very respectful usually isn't because that
shit from saying we want our planning process not to be predicted that much
more that we really are going to work
those are the very tips of organizations don't like things so that's nestled rest
it's not the best left to an outside