so welcome this afternoon to the
curmudgeons guide to building Drupal
websites I will be your collection today
first readings I am the director of
Drupal engineering at bounteous I have
been with bounteous since about 2009 and
working with Drupal 8 long as well I've
been a professional developer since 1994
but I've been whinging for far longer
than that and I like to go to Brewers
fantasy camp so if you need something
for your bike spokes I'll get you a pair
later you know who is funny is we create
big picture digital solutions we were
founded in 2003 and it's really awesome
because there were lots of talented
individuals and we do everything from
strategy to experience design analytics
and insight there's a bunch of us that
have spoken this weekend or it's this
week so we are also looking for a Drupal
architect so if you'd like to work with
me do you track me down so this is my
over hopefully it fits in 30 minutes you
know we'll do some talking about how I
think we can be effective as dribbling
and running projects efficiently and I
have a slide there too I'm growing as a
developer if I get that far so my goal
and every sort of project really is to
by the end of it to have the client be
happy and a lot of the sales folks will
say you know on time on budget that's
all great but project even have a way of
not sticking to the original designs
when you're first talking about these
things so I'm really focused on being
having the client be happy
Ament to do this we need to be efficient
we need to be effective but we also need
clear communication
so let's talk a little bit more
effective drooling if you fail to plan
you're planning to fail I think Ben
Franklin said that and I think it's very
true when we're building Drupal websites
we need a solid foundation for the build
so we need a really good plan to get us
there so instead of thinking about
preparing for the bill I think there are
a few key things for us what is to be
involved as early as we can so back to
the first started doing the drilling
thing the design agency with design
stuff and then they wouldn't live it
over to you and they usually didn't know
a whole lot about Drupal or CMS's in
general so we want to get involved as
soon as we can because we want to help
guide the design right we really want to
take advantage of Drupal and all that it
can do for us it doesn't necessarily
mean when you tell them what to do right
we don't want to skim the design they're
really tempted folks and they know what
they're doing but we want to make sure
when they're making a decision that's
going to you know impact the build make
it take a lot longer cost more money
that they're making it with them
you know they're being mindful about it
when we're preparing and we're involved
early on we also want to determine what
can go wrong
and we want to identify those risks
because we want to you know be prepared
for them we don't want to think that
they're going to happen but if something
does happen to go wrong we want to be
prepared you know to adjust to whatever
happens going wrong and I think a lot
you know about this when it comes to
like scope budget with timeline right if
something does go wrong what are we
going to do about it what can we change
and we work with a variety of customers
and clients and some are like the budget
is the most important thing you know
here is $100,000 and we can't go over it
right and that's that's fine it's it's a
you know something that we should be
mindful of as we're doing the bill but
what that tells me is that it's go and
or Taiwan I have to be able to get right
you know if we run into issues or
something it doesn't work as we expect
it to
and we're really constrained by the
budget then we need to adjust the scope
before it likewise you know Thailand can
be the driver so I think of one of our
clients at Domino's Pizza and they will
have you know television campaigns right
and those let's say are going to be the
first week in the NFL season that all
that work is committed to way in advance
and that's happening from whether or not
you're ready so what needs to you know
the counter to that then is that now we
get to my throne with scope for budget
right maybe I need more developers to be
done on time but regardless we have to
be done with you know when the TV
commercials are ready to go
so another thing I think about when I'm
preparing to build is the tech stack
because often this can give us troubles
especially as we get started early on in
the project one of the first things I
want to know is where's this thing gonna
be hosted where is my website get me
hosted you know if we're lucky and so to
do that in places like actually a
Pantheon
we know the tech stack we know they know
what they're doing they've optimized the
text after Drupal that's great but what
happens if it's not that right you know
is an internal IT department going to be
giving us our text ad do the understand
varnish and how to optimize it do they
understand how to build my sequel server
you know when a patch you serve our
internet server do they know how to
write traffic to the police you know
those types of things and we want to be
you know I'm the ready for it the local
development environment is another thing
that I think a lot about I finally have
all of our projects have local
development environments we largely
depend on Drupal do and using vagrant
but what happens when your client says I
want to be involved and by the way we
run Windows machines right you know that
that you can't do it but you will run
into unexpected problems if you have not
tried this in the past another thing
that seems to me to be important and
often the gadget projects that we want
to be prepared for is how the data is
going to flow through the system
specifically I'm thinking about when
we're trying to integrate with various
other platforms it's really easy to
intake manager rightly install module
early we do our configurations but what
happens if it's an internal system or
it's a third-party system that's fairly
old and doesn't have robust API
we still probably need to do that
integration but we just want to know
migrating content is the you know is a
similar problem is your replant forming
a site you know I have to think about
where I'm getting this content and how
I'm going to migrate it and then I going
to migrate all the content you know what
you know do I really want to migrate the
homepage or do I only want to migrate
the 40,000 blog posts right you know
what you know where is the spend gonna
be best there and how am I going to do
this so we thought a lot about what's
going on with the you know migrations
and all the good stuff and we know the
technic and we've helped the design team
come up with the plan now I want to
document so I always write some sort of
architecture plan in the document this
plan you know provides a fair amount of
detail but I also want to keep it high
enough level so that the project manager
can read it and understand what's
happening the business analyst can do
this a client you know whether the
internal external anybody that comes on
to the project should be able to read
this and understand that you know
basically this is the vision I have for
how we're going to execute the project
some of the things I like to defining
there are things like the development
workflow so how does something go from a
requirement to into production there's
lots of moving parts that are there
there are several people or roles that
have you know responsibilities to do
this but I want to know how I'm going to
do this and and make sure that it's well
documented so everybody's aware of how
we'll do this I also talked about the
theme that we're going to use so the the
sites that we build all have custom
themes but we're always basing those off
of you know some kind of beast thing so
I really need something like classy out
of to procore or are we going to use
something to exert foundations because
we want to take it you know take
advantage of the foundations I also
think about the modules that will
connect back so I don't list every
single module because no one really
cares we're using shield to keep you
know prying eyes away early on but you
know I do care about things like panels
and panelizer or layout builder like
those give us clues and give you know
whoever is reading you stack to me who
is this - how I'm building the site or
how I envision the site should be though
we also want to describe any key points
of the architecture that are there you
know I touched on migrations and
integrations as you might have a pick up
on you know leave class problems and you
know a few of my projects and so I'm
always after those things but what about
other parts of the architecture you know
one of the projects we've done in the
last few years
depends heavily on varnish and edge set
includes and it's not something that
people do on the DVD basis right so I
want to make sure that whoever's coming
into this project can understand that
part of the architecture you know what
I'm on digging you know that it's pretty
clear to them what we're doing and then
you know as you come into the project
you know and you run into issues you
know this gives you a clue so what's
happening at that point
so we have our plan we're ready to
execute and I think you know developers
love writing code we love coming up with
solutions but it's really important to
me to to emphasize the fact that it's
not really about writing line of code
it's about solving a lot of problems and
so you know that's you know especially
in the community like Drupal you know we
have lots of things that we can take
advantage of to help us solve problems
or writing a whole lot of code when the
build is getting ready to be started I
want the developers to have a framework
to make decisions
so as an architect I don't want to make
every little choice and every decision
but I do want the folks on my team to
understand you know how I would go about
making the decision and they do that
with some guiding principles these are
for that you know I think I'm pretty
common in my projects yours might vary
but you know I think they're pretty good
you know the first one is basically used
core and contribute you can you know the
less you know fewer modules that I write
if you're a toad I write the less I'm
responsible for you know keeping it
secure and keeping it bug free touch
each area the application as few as
times as possible you know it's so fun
building blog section for the site you
know try the group that that work all
together every time I have to touch the
blog section on the site I have QA I
have peer reviews you know
if we're having multiple releases to
production there's new 18 testing that
has to happen but we wanted this to be
concise it'll help us be more efficient
and no nobody has korkin trip or plies
patches but you know assuming you do you
know just do it right so when I first
started ruling everyone's like don't
never do this but you know I think we've
advanced to the point where we and the
way to do it is use attach files right
and if you use Composer you can have it
automatically applying patches for you
so it's great and the last one is it fun
with my favorites that left off and
thought about I just don't write any we
will need this major code developers
have this insane habit of being in code
and saying oh wouldn't it be great if it
just did this and they add that code is
that code just slingers can forever
you tend not to use it again you know
tends to be the place where we find bugs
it's you know just stop doing
controls you know are a great way you
know to stand on the shoulders of giants
and really get a lot of you know
efficiencies I think especially when
we're using the same ones over and over
again
we've been lots of you know mixed oxide
that you know and I was at one yesterday
I talked about you know site building
and talked about bricks and stuff you
know in the point there was like hey
like this module is a plane X with this
module and this might you know and
multilingual is a problem right so you
want to use the same modules over and
over again because you want to know
where the Romans are we want to know
what's gonna you know feed I just you
know this is a list of the modules I can
use you know most of my projects your
list might be different but the point is
to have that list of modules that you
know you're gonna go back to over and
over again so what happens if your tool
box is one tool short right and you
might need another module so you know I
think he's pretty easy right we're gonna
suture searching drupal.org and project
modules or Google or you might know a
friend that knows what they're doing
they can help you out but you want to
try to find a module that fits or you
know requirements that meets my
requirements you know I think the
important thing to understand is your
works not done yet you still it's fair
if you want to use that module you know
and when I'm thinking of what we're
going to use a module you know I have a
few questions that I always ask myself
to cover about the security team you
know if it is that's a bonus right we
you know we tend to think that it's ever
you know the best bundles that are out
there the most used modules the
retainers was last time it you know if
it's a well-known person in the
community then the last commit was two
days ago
that's really good well what happens if
there's like seven commits the last ones
two years ago and you don't know the
maintainer is yeah that's saying you
wouldn't use the module right but it
should weigh against using muggle if
you're if you're following my philosophy
you know under lock sites using it is
issue you active you know there's not
it's this isn't a decision tree but when
you answer these questions as if to tell
me you can weave it against you know
what it is you're trying to build and
figure out if it makes sense to use it
another place that developers and folks
working in the project can gain some
efficiencies is with using these other
tools you know composer is weak
dependency management tool I won't think
to it there was a talk I think yesterday
composer 101 that if you're not really
familiar with composure I would highly
suggest checking out but you know we use
it to manage our dependencies brush is
like my favorite tool I use it all the
time I'm a feline guy in brushes my way
to do I would say everything but lots of
things you know I'm sorry I can't
rebuild
I don't remember passwords to sites that
use you alive to get past or you know to
get a one time link you know I don't
remember which aqueous site and how to
SSH into it I just used to rush SSH it
has lots of great tools for you to use
that will make you more efficient it is
the same way for me I use get a lot as
well I think you know two perfect
examples for me are when I'm getting
ready to commit code one of the things
to talk about a little bit there's peer
reviews and how you should be the first
women reviews your own code and I use
get to do this and you get status figure
out what's all changed and I go through
them one by one one line by one line do
and get this and I add them one final
time I don't add you know just
everything that I also use git commands
before I get to find out which commit
broke my website so there's this great
clinical get bisect then if you've never
used it before you might want to look it
up but when you're trying to
what happened your website it's a great
way to figure it out
last time I listened we use triple
console admittedly I don't use triple
console as much as others probably do I
find that there's a lot of overlap
between drush Drupal console but it does
have some really interesting things like
being in pretty dumb nodes dummy text on
these some users things of that nature
you know if you have a change in your
expert on the top three probably worth
checking out another place I think where
we get stuck in the mud is like solving
problems you know during QA and
sometimes folks just struggle with how
to solve those problems you could
probably have debugging itself but a
couple things that I think are really
helpful for me when I try first of all
one is just knowing what you have
available to you
you know Drupal provides a lot of great
things to do debugging logger is one
develop well profile will give you some
good information
dribble Council has a bunch of debug
commands that you can run tweak the
bugger make sure that's turned on so you
can see how you at least locally so you
can see how you're running in the
content and then like just SCR I use
when I have a problem in production and
I don't really have access nor do I want
to have access to like change code and
and add debug code good things and I
don't want to go through the process of
yeah committing code and pushing it
through all my environments sometimes I
can mimic it was just bringing a quick
brush script because it'll bootstrap
Troopa for me and I have all things in
you there
you know don't be embarrassing you
sprint to her Bardo they're great quick
ways to do it but you know anybody's
awesome especially when you integrate it
with your IDE if you work at both yes
and you say Chris I need some help
one of the first questions are going to
ask you is you know let's open up in the
debugger and if the answer is I can't do
it then you go away until you can
because I think it's a great way to
debug um when you're trying to solve a
problem you know I think it's really
important to have strategy now we're
gonna develop a strategy is to assess
the problem so is it only reproducible
production can reproduce in anywhere
does it only happen when you're in an
ominous reason it doesn't happen only on
blog pages like whatever you can
information you can gather I want to use
because I'm gonna form a hypothesis from
what's happened or what is happening now
the key about forming the hypothesis is
that you'll test against it and you're
not married to it I think you're not
trying to prove that it's right in
oftentimes I may try to be proving it's
wrong but it's important have something
that's guiding your your efforts and
then the last thing is you know
eliminating possibilities so what I mean
by that is everything you do should give
you more information that limits the
scope of where the problem is a good
example of this is last weekend was
helping one of the developers with a
local environment problem
we're running docker with Magento and
Drupal and we were trying to call API us
from from a Magento from the
full container and it wasn't working
we're getting a weird air so we
immediately said we think the problem is
Magento and so we went about trying to
prove you know that that was the case
and it was intelligent to say
turns out we proved it wasn't and so we
shift of course and then we quickly
figured out that it was how we were
calling the other container from the
Google container but without you know
following these steps we really would
have been just spinning our wheels
efficient projects so the key so you
know we definitely need technical skills
to do this and I've listed really five
things I think are really important for
project teams to have pretty clearly
defined roles cycle engine to see if
these super important processes are
important but I'm going to focus today
on communication
so communication we do it daily and the
waves act think about it in the project
team are you know in three ways
why aren't the daily stand-ups were
scrum you know where Angela you follow
scrum so we use stand-up but whatever
your daily status report is I also think
about ad hoc communications so as we
were talking before know it's important
for me to understand how everyone uses
the telephone email and slack and like
if I need somebody what's the right
route to go about giving them but peer
reviews of what I really want to talk
about here so you know one of the things
I think is really important about peer
reviews is you know the way I look at
them a lot of people look at them as a
way to find bugs right and there is no
doubt you might find bugs but I think
the real key to peer reviews is you know
communication and dissemination of
information
so at boniest you know a junior
developer can be purely Mike Mike I
would not be pairing other people still
but it's really important that in the
peer review
as people are learning more about other
parts of the system and what we're
trying to create there is the bus sector
of one problem we don't want one person
to be solely responsible for one during
the application and when they think
about peer reviews I also think about
them you know it's is how they go right
so to meet their conversation I asked a
lot of questions in purely oh hey I
notice you did X but I would have you
know I think Y might be better
why did you do X right and it could be
hated right I talked about why it
doesn't work because of yah yah yah
that's what I'm doing next and so again
if we think about it is a way to
disseminate information in you know it's
a conversation that you know I I can
learn you know yeah and I also might
pointed out in a football I didn't
realize we had a function that did that
yes let me fix my coat so I think it's
really important to do that and as I
mentioned before the first person that
peer reviews your coat is you so you
really need to make sure your reviewer
code is though you're reviewing somebody
else's code so you don't you know throw
what you've junket somebody and waste
their time
really good quote let me skip acid
another way to think about this is you
know in six months you're probably gonna
have to be making right and so when I
think about writing the code from the
future you I have these things in life
again this is another topic that you
could spend an hour on but for four key
things
everybody knows the very principle but
it's like super fun and you would I am
often shocked that developers keep doing
this
like literally funny cut copy paste if
things should do one thing so variables
should hold one bit of information
functions should do one thing uh you
know classes should define one thing
everything should do one thing right if
they do it helps me write structured
code to the self document I want to be
able to write a function that's like
let's say checked account balance and I
want you is the person reading my code
to know that that's all it does because
it also sent an email that says hey you
have a little valence right we really
want to make sure folks can look at the
toilet because I can't trust that the
description functions right now I have
to look at that function to figure
what's happening and then assuming
you've done this commenting were
appropriate it becomes really easy lucky
especially when I was first getting
started I thought it was the right thing
to do to say you know checking the
account balance here followed by a
function that's in jeopardy comp balance
right you know as I've grown I've
learned that that's not really the way
to do it
but I still find that people use too
many comments in the code because
they're doing things you know of this
feel kind of like that I love comments
at the beginning of functions and tell
me what it's going to do I love kind of
you know in the inputs and outputs if
you have complex business logic that's
super important as well
but what I find with comments and the
reason I lean towards mean comment is
people often forget
and now if the people the worst thing
you know the thing that's worse than
having no comments is having kindness
little walk right documentation please
so we have to understand this develop
first that not everybody's gonna read
the documented code the person that just
raised his hand in film unite in three
minutes it's a great documentary Andy is
awesome right you know is he understands
it's important to share information with
the PM's in the views of the world
ensure that information you know
step-by-step instructions are important
to have in documentation and it's a
great way to get somebody introduced to
a different part of the system I'm
learning documented and purely the
documentation some good stuff last
couple slides the best way I have found
in my years of doing this to be Detroit
yourself it's really just to be curious
so congratulations you're all curious
watch webinars I went to but to them
every week reading is still really
important there's great group
newsletters but I also subscribe to
newsletters you know from O'Reilly stuff
works there lots of great people doing
great work that isn't just Drupal I get
an email from Drees every time he hits a
new blog post and they read lots of
clothes I think it's still really
important um you know ask yourself what
your friends are doing you know and
that's them right I'll pick down
brownies in the back of the room but
he's been doing a lot of static site
generation stuff and I've learned a ton
about that Scott Weston gave a talk
yesterday but configuration management
and you know I spent the you know 15 20
minutes with him just getting a brain
done so it's really important to know
what your friends are doing
and then lastly stretch your cell phone
project so you don't want me writing a
whole bunch of CSS it's not what I do
you know I can you know I can take a
look at that um you know okay don't go
too far off in the wheat where do you go
from here if you take one thing from
this conversation
make sure your IDP has interacted it's a
great way to learn Drupal especially
with hooks and services and all that
good stuff it's really tough to just
kind of follow but you build this inbox
on your computer shake you experiment
with if I'm looking at a new module all
I have to bring it into the sake that
I'm dealing with because I want to see
what's happening so I'll bring it into
the sandbox and and that's it thank you
any questions
[Applause]
quite often where we work but it's not
always well received trying to be nice
like a I know X Y yeah so the question
is if you have someone that you work
with it is a little bit too sensitive
with the peer reviews you know whose job
is it to fix the problem you know and I
think it's you know sometimes it's
approach you know so you know if you
were in fact to me about that I'd
probably talk to you a little bit about
how you're doing it just to make sure
that I was comfortable with it yeah at
the end of the day you know I think we
all need to be able to be criticized
what are the slides that get cut because
I was sure I was gonna go over with time
was like an affirmation session or you
just say I made a mistake
I find that lots of people can't say
that and it kind of goes back to the
psychological safety thing as well like
the people that work for me know that
they can make a mistake and it's totally
cool and we're gonna figure it out you
know I know it's see if we can solve the
problem so it doesn't happen again you
know but the worst thing for me is like
you're so it makes a mistake and they
bury it because it just multiplies the
problem so you know that thing it's the
case what you're talking about but what
I try to do is the leaders try to create
that psychological safety and hopefully
we have it on on all our project teams
and make that a little bit easier
missionary so I am the only developer at
my job and get how would I go about
puberty also he was your favorite
so two questions one was I am the only
developer can only do peer reviews then
the other question is what's my favorite
ID let's start with the last one and I
use PHP Sora and for a long time I
required it
I think I've gotten away from that but
still most of the people you say you
know you sir so I'm pretty happy with it
that's a good question about how do you
do peer reviews with one person is there
anybody that you can talk through like
talk to them about what you're doing
but
yourself or something
yeah that's the reason I asked to give
anyone else which we talked to also cut
from my slides was a picture of nothing
like you're like the only developer of
that are the University probably the I
mean somewhat big University Games with
other developers and maybe you don't get
together and talk about stuff all the
time but maybe also find some time that
you like get together and talk about
what I know the University of Minnesota
the very big university but they
actually have their own user group
meeting every month you know and well
haven't have stuff like that so I was
actually a similar situation
I was the only developer
in an IT department three point that I
was I reported to marketing and stuff oh
I was sort of like this lone person out
there I'd be willing to wear it wouldn't
work and then I'm gonna wrap it up sure
let's say you get a big project how do
you pick the teens to structure for that
or if you're like a
as a company and how do you pick what
people that you need to complete your
own projects yes the question is if you
have a you know if you have a mid to
large-size project how do you determine
the team you know why I'll always have a
solution architect of the project I tend
not to do any more because other people
are better than me but you know I'll
have some and then I tried to understand
you know the best I can with the work is
so we have a you know if I means we have
lots of really smart back in developers
and front-end developers and then we
also have people that are really good
like they're full staff they're just
really good at the whole set you know
that would if I find there's more front
in the back end they all try to staff it
with more front of those you know if
there's you know in front of them I'll
do that same thing if I'm not really
sure and I try to staff it with full
staff folks and then you give up some
juggling to you know because Drupal
projects a lot of things you're doing
back in work to start we're trying to
give the scaffolding to the folks so
that they can I'm gonna do all the theme
so you might stab that buddy bad as well
like more more back in folks you know in
the front doing more front of folks in
the back
and then just like they use a little bit
of the UI designer project manager QA is
all here yeah we have all those folks on
you know on the project so we you know
we do have a designer to make sure we're
executing their vision for the project
it's going all of our projects and we
have PMS that help us up as well and
then the qyz you know it's our stepped
to along with that the appear users are
done strictly and the dev site so so
this works really well sure yes a visual
cue a I wouldn't trust those developers
right here so yeah it is it's a
consultant in the room the answers
depends but it's you know those are the
types of factors and we also put the
fuse on to establish patterns and then
roll off
the right way
okay last slide contribution day is
tomorrow from 10:00 to 4:00 you know you
don't need to know code to get back so
please help out and thank you
[Applause]