📺 Develpreneur YouTube Episode

Video + transcript

The Power of Documentation Transforming Your Development Practices

2024-08-08 •Youtube

Detailed Notes

Welcome back to our series on the developer journey. In this episode, we tackle one of the most crucial yet often neglected aspects of development: the power of documentation. While it might seem tedious, proper documentation is vital to enhancing your workflow and ensuring that your work is accessible and understandable for others.

Read more... https://develpreneur.com/the-power-of-documentation-transforming-your-development-practices

Stay Connected: Join the Developreneur Community

We invite you to join our community and share your coding journey with us. Whether you’re a seasoned developer or just starting, there’s always room to learn and grow together. Contact us at [email protected] with your questions, feedback, or suggestions for future episodes. Together, let’s continue exploring the exciting world of software development.

Additional Resources

* Organizing Business Documentation: A Critical Challenge for Entrepreneurs (https://develpreneur.com/organizing-business-documentation-a-critical-challenge-for-entrepreneurs/)

* Test-Driven Development – A Better Object-Oriented Design Approach (https://develpreneur.com/test-driven-development-a-better-object-oriented-design-approach/)

* SDLC – The software development life cycle is simplified (https://develpreneur.com/sdlc-the-software-development-life-cycle-simplified/)

* Using a Document Repository To Become a Better Developer (https://develpreneur.com/using-a-document-repository-to-become-a-better-developer/)

Transcript Text
[Music]
hey we hit record or something like that
and we are are back and we're talking
about our next
episode and I think we're going to go
with it we'll just
do documentation you know wild wild west
or something like that we'll just sort
of see where we go with that because I
think there's there's a there's a lot of
places we can take it and there's a lot
of places we need to take it so we'll
see how this one goes and just sort of
make that our our primary topic I think
this this episode around well hello and
welcome back we are continuing our
season on the developer Journey we are
here at developing nor building better
developers the developer journey to
becoming a better developer my name is
Rob Broadhead I am one of the founders
of develop rur I'm also a founder of RB
Consulting where we we help Wrangle
technology basically take that sprawl
simplify it automate it integrate it
whatever we need to do to get you to
that big nasty thing that you had and
now it's nice and sleep sleak and helps
you get your job done faster we're like
the iPod of Technology something along
those lines on the other side is Michael
and I'm going to go let ahead and let
you introduce
yourself hello everyone my name is
Michael Mage I am one of the co-founders
of developer Nur and founder of Envision
QA where we help small to midsize
companies and clinicians and Healthcare
companies build software to meet their
business needs as well as help them
identify if the current technology
they're using is what really is
beneficial for their
business this
episode everybody's favorite topic as a
developer documentation we're going to
talk about that because everybody
complains that they get something that
wasn't documented but also nobody likes
to document things and so now we know
why nothing is that's why we complain
all the time is because we don't do it
nobody else does it so hey this is how
you become a better developer is you do
the things that nobody else wants to do
a
documentation is like testing to me a
little bit is that it it has always been
left behind it's one of those things
like yeah it'd be great if we have it we
know we should have it we know we should
do it we a lot of times know how we
should do it we just don't we run out of
time but also in a similar vein is that
the tools to help us document have come
a long long long long way so we really
need to be more cognizant of that at the
very least understand what your
environment language whatever it is what
your tool provides in the way of
documentation for example if you're
writing apis and you don't know what
Swagger is or those those types of tools
then you need to like right now just
pause Google it look it up you know
Swagger with your API however you build
it and they probably got 18,000
tutorials on how to set it
up also if you don't know how to use
Postman in your building apis pause go
learn how to use Postman and actually
Postman will help you do documentation
so that's a side note
there there are so many tools out there
to help you straighten stuff out now
there's going to be some things out
there there's like there's static code
analysis and things like that tools that
are very valuable that will point to
things they'll sort of like warn you
here and there and they're going to be
helpful for writing better code but more
importantly or as importantly I would
say are tools that auto help you
autogenerate
documentation stuff the old you know the
I think it was really the first one that
was out there if you go back to Java do
and the ability to just like throw it
against a a bunch of files and it just
it creates a nice little documentation
website there is the same same thing for
every language out there that I know of
I mean maybe not for like Cobalt or
something but there probably still is
something out there that'll do it and if
not go write it because it's it's not
that complicated to document things to a
level that a tool like that can easily
generate something that then makes it
very very useful for the next person
that comes around and
by that I'm talking about things like
your uh depending on how your your code
is set out it's going to be things like
classes and packages and signatures so
you're going to know what does this
return what does it expect what is the
data types that this expects how does
this thing even work what is it supposed
to work what's the expectations what are
the exceptions what are some of the
error codes those
things documenting those are critical
those are the things that when somebody
comes by two years from now and looking
at your code that's the stuff they need
to know it's like what the heck is this
you got this thing called function ABC I
don't know what that means give me some
comments don't make me go through
thousands of line of code to try to
figure this out and then I miss a couple
of side effects or something like that
document it part of becoming a better
developer is doing the things that
documentation is a uh a sanity check for
it's the kinds of things where you are
if you're documenting your function and
you know I need to document the inputs
the outputs what are the side effects
what are the data types what are the
expectations then you should know what
your stuff does for example if there's
three different types of Errors then you
should have somewhere in your code that
it's going to kick out a different error
code for each of those types of Errors
don't make people find your source code
and crawl through that and go searching
for you know message text or something
like that and try to figure out where
this error is coming from those kinds of
things are going to be invaluable to the
next developer which could be somebody
like you but also they're going to help
you do a better job now it really is a
like a yet another validation yet
another testing form of testing to make
sure that what you're writing is correct
and of high quality now I'm going to sit
back and document what I just said while
Michael provides his own level of high
quality stuff because I know You' got
your your opinions on this as well so I
want to see where's what's your feedback
and where am I where am I right where am
I wrong so without going too far on my
soapbox of user testing and stories let
me add to some of the things you said
because I think you left off a few
things you touched on most of the high
points but one of the things that you
didn't mention are readme files or
markdown files files within the
application that not just tell you how
to test the application what the
application is supposed to do but how
you're supposed to set up the
application in a test environment in a
deployment environment how do you
actually get this code from point A to
point B so the users can actually use it
we need to also think about that within
our
documentation so documentation isn't
just front end it's pretty much all the
way through you have the front end which
is your user stories what is the
application supposed to do
what are the expectations uh what are
some of the uh accepted uh test criteria
what is the accepted test failures you
know there's some things within it a
version of code that might not be fully
implemented yet so certain test Stories
won't be ready to be tested so that
you'll expect those to fail as you're
going through and developing you're
going to be developing with that
expectation in mind that okay these
stories should work this is what I'm
coding to and when you hand it off to
the testers they're going to look at it
and say okay I'm expecting this have to
work maybe this won't work and then
they'll give you feedback and tell you
what happened in
between and then finally when it hands
off to the users if you did it right
you'll have release notes or product
documentation that goes out to the users
so when a the code comes out for the
first time or an update comes out they
can look at this and say
okay how is this supposed to work so
they can read through and it should
match what the application does also if
things change they should be able to
look at the release notes and say okay
this changed so if I go in here that's
why I'm seeing this new feature or why
is this new button here or why did this
button disappear that should all be
documented from the beginning to the end
user you leave that out you're going to
not set the expectation correctly for
the end user and going to get a lot of
negative calls emails or feedback that
things are not working the way they're
supposed to
work so that is in addition to what you
said now on top of what you said some of
the things I like and one of the things
um that in addition of the tools you
mentioned we have things like bugzilla
uh get Hub allows you to use uh a form
of markdown or asky docs to actually
write notation documentation that can be
quickly converted into web uh nice easy
to read web pages so you can actually
publish that with your code some of the
other things you can use are like um
atlassian tools which gives you jira uh
bit bucket Confluence so you cannot just
write wikis but you can combine the
wikis with the tickets the tickets with
the wikis you can even uh take the
bitbucket the your commits which can
percolate all the way up to the tickets
and all the way up to the wiki so if you
do it right by the time you get to do a
release or you publish your code your
document may be self-published for you
so all you have to do is include that
with the release notes when you publish
the code out the door and finally as
you're going through
this going back to our last
discussion you want to include all the
key players so as you're working on the
documentation make sure that all the
players
involved have looked at or at least are
aware of what changes are being done to
the software so that by the end everyone
is on the same page and you can do a
signoff meeting of go no go if
everything has been met or if issues
have come up is it acceptable to let the
code go out the door with changes to the
documentation now that is very key is
that you you will have more than one
type of audience for your documentation
and you will also have more than one
type of documentation so I initially
focused on the the code the developer
but you do have the endusers you may
have user you know online help or a user
manual or something like that you will
probably have depending on what the
application is some sort of an
administrator's guide so if there's
somebody that's administering the system
probably some sort of a build or
deployment or install guide one of the
things
that that Michael like hit on early on
is that you want to
have a way to with your documentation
you have to you want to be able to like
plop this on somebody's desk or in their
their computer and some way and for them
to be able to go figure out how do I
make this run how do I build it how do I
deploy it how do I launch it what do I
need what's required and one of the
things that I've run into a lot when I'm
you know when people haven't done that
is is that there will be all of these
little secondary scripts that or KRON
jobs or things that are out there that
are sometimes critical to the
build but they're not documented
anywhere and they're not in the main
repository
so check those things in keep that stuff
together if you've got some little
oneoff script that you used to migrate
data from version one to version two and
anybody else that's going down that
route is going to need to do it then
make sure that is somewhere documented
whether you've got like a a documents or
utilities or whatever kind of folder
somewhere as part of that or if you have
a second
repository that is basically here's all
of our stuff here's all of our artifacts
for our for our application for our
solution it is critical I mean it's it
those are the things that it feels like
everybody can figure that out like I I
don't know how many times I've seen
a node based app of some sort and
they're just based just do a node run no
there's like there's all kinds of
libraries that maybe are part of that
and maybe your environment isn't quite
like the other so that would even be
part of the testing is take your
documentation take everything pick it up
put it on a new environment Go spin up a
VM do whatever you need to but take that
whole thing put it on the environment
follow the steps test the documentation
does it run does it did you include all
the usernames you need to and passwords
you need to and what are all of these
config all those configuration files
that you probably have somewhere around
there are those documented so people
know what those values are and even more
so what values don't even get used
because we do have that on a regular
basis and if you have something that's
unused comment it out or do something
ideally take it out but if if you for
some reason need it there comment it out
and say you know this I only had set
here for testing or for this special bug
or something like that you know those
make sure that all of those
little magical things that we do as
we're developing to you know set things
up in a certain way or to address a very
specific bug things like that make sure
we've got those documented along the way
because that is the stuff that will
drive the next person baddy if they
don't have it particularly the build and
I I say this having in the last 10 years
I've got at least a half dozen projects
where it was given to me the start was
no idea how to build this no idea what
all the pieces are we sort of think this
is a source code but we don't even know
if this is complete we've got these
other things over here that we think are
valuable but we don't really know it
could be tied to another project that
stuff shouldn't happen I don't care who
you are I don't care where you're at in
your in your career progression you
should have some notes you should have
something even if it's a couple emails
that are just basically here's how this
thing runs so that the next person can
at least have a starting
point I will kick it back over to you
while I take a deep breath after that
little bit so my final thought on that
is regardless of where you're doing the
documentation try to make sure that you
move as much of the documentation to the
code level at read me files add comments
to the code if you're doing apis add
Swagger but if you put it all at the
code level especially if you're doing
unit testing or integration testing in
your code your test should also self
document some of the user stories so if
you do all your comments correctly at a
push of a button you should be able to
generate those documents you need for
the release documents for the user
documents for the deploy documents it's
all at the code level this way as things
change it gets committed and you have
version history of what's going on with
your code that's not to say using things
like the wik and that are bad but at the
end of the day the code is essentially
the law the code is what is the truth
everything else is secondary so if you
put it in your code it should be your
Bible this should be what it is that
your code does so if you do it have a
Wiki page it can get stale but if you do
it all in a readme file you can still
point the readme file to potentially the
Swagger page if you're running locally
QA whatever but you could still do it
all in your code and then commit it and
it's all there it's all at the ready so
the next person that comes in should be
able to easily pick it up it's great for
training and it makes our lives easier
as Developers
yeah I like to think of it as you could
if you've got your you know car and
you've got a user's manual for your car
there's a big difference from that user
manual sitting in your office somewhere
on a desk versus sitting in like the
glove compartment of the car and that's
often what happens we have all these
little extra things sometimes big things
that are external to our application but
are core requirements and those things
need to be documented somewhere it's
things like hey this only runs on
Windows 3.0 okay somebody needs to make
sure that it needs Windows 3.0 those
kinds of things should be you know there
even if you don't include that entire
environment in include those notes say
these are the things you need to do to
set up the environment for
Success one the things you can do to set
up our environment for success is to
give us feedback is to send us emails at
info@ developer.com leave us comments
out on YouTube or out wherever you get
your podcast or on develop andur on any
of our articles anywhere we've got
over a thousand articles out there feel
free to throw stuff out there we will
respond if it's a Spam we obviously
won't we'll like delete it and move on
but if it's something useful and for you
guys I know it's going to be useful so
you know reach out to us offer us any
suggestions comments questions all of
that kind of stuff that is what we look
for because that is what we use to you
know help build future episodes and even
Seasons the season is not done we are
chugging along but we are not done yet
with the developer Journey
so we will come back next time and we
will continue to do that as always go
out there and have yourself a great day
a great week and we will talk to you
next
time all right bonus material so one
addition which I saved for the bonus is
well I talked about moving everything to
the code level the beauty of doing that
if you do it correctly you can actually
write a script that can scan your readme
files that can scan your uh markdown
that can scan your aski docs and
essentially build a user manual or
deployment documentation for you from
the code so once you're done and you're
at the end of the cycle all you have to
do is deploy your code your build script
your continuous integration deployment
whatever could call that script build
all the documentation essentially
self-publish when the code goes out the
door so you could build hey here here's
the signoff document this is everything
that's going in in this
release are we cool with this everyone
signs off on it cool push the button
goes forward it then automatically
builds the release notes and the user
documents at the end of the day so you
can automate pretty much all of this
people and if you do it right it can
even tie to your user stories so if you
create the user stories and your test
cases correctly if you add a new test
story that could apply to the final
documentation of hey business this is
now everything that we cover within our
application yeah it does help a lot from
a the closer you keep the documentation
to code I think is this will be my
little bonus this the better you're
going to be as making sure that when you
make code changes you're updating
documentation particularly the
documentation around the code and if
you've done things right then that ends
up percolating its way up so it may be
things like um and I've seen this many
times where you've got a a a primary
requirements document that everybody put
together but what you now have somewhere
down the road is the requirements
Document Plus you have release notes
that have come out along the way that
says okay we added this feature we added
this fix we did this thing we did that
thing if you can do those sorts of you
know rituals basically when you do a
deployment where it's like this is what
we're going to we're going to run
through this we build this we test this
we verify this we generate that we stamp
everything it gives you that road map to
say where did you start from and how did
you get here and you can track every B
piece of it along the way which makes it
critical then that's like huge for the
next person because they can say hey I
can not only see what you have but I can
go back and see why you did it because
that very often is something that if you
don't have good documentation in a
history of it those are kinds of things
that can get lost and then people are
like well why is this doing it why did
they go this path why did they take that
route and you you know you right there I
know you right there you know that we do
that stuff we have a a path we're going
to take to make a
solution to we're like this is how it's
going to solve the problem and you
realize something doesn't work that that
perfect solution doesn't work for either
because the problem's just a little bit
off or because there's some sort of a an
API version version which is one that's
always good to know it's like hey I was
going to solve this but Java 8 that I
was working on would not allow this to
happen it had a bug so when the next
person comes back and they're now on
Java 20 they can say hey this is why
they didn't do it before so maybe we can
do that now those are some of the things
that are going to be really helpful to
the next person around uh parting
thoughts from you yeah so in addition to
that that made me think of backend
systems like apis so if you don't doent
your apis correctly you could have apis
that get deprecated or removed and if
you don't communicate that to the end
users or other software entities that
integrate with your software you
essentially break everything Downstream
and that's going to make for a very
unhappy user base I mean you don't want
to be like the people we don't want to
name from the news a few weeks ago but
essentially you could end up in a
situation like that so be careful make
sure you document and make sure if
there's a critical change that it does
percolate to some type of documentation
that goes out to the end
user yeah and there because and th
that's the stuff that's probably going
to
be the easiest to maintain because it's
usually at a higher level so you don't
have all those details but it really is
amazing how many times I've walked into
a project and be like I would kill for a
user manual cuz I I don't know I'm not
able to sit down and maybe with the
users enough I'm not able to see what is
this really supposed to do and sometimes
that doesn't translate even from
sometimes a fairly good requirements
document if they don't have some good
user stories and some things like that
it's evolved into something that is used
different from where it was and then it
gets very difficult to understand like
what's what's the why what is the
purpose for this thing because it got
lost in translation somewhere along the
way one final thought on
that typically think of the golden rule
if you touch a piece of code make sure
you leave it in a better place than
where it was when you touched it and
make sure that you leave the
documentation to the whoever in a better
place when you touch the code because
you don't want to be the next person to
come behind someone else who didn't do
that and then you're
lost and that's I say that's like one of
the biggest values that you can bring to
your customer when you when you get to
that situation your customer your
employer the project is okay it's gone
off the rails but finding ways to bring
it back on the rails finding ways to say
okay this is what they had this is what
was done this is how to do it better
even if you can't fix all of it if you
can just make it better than it was when
you started that's at least progress in
the right
direction that being said I am going to
progress to the right direction of
moving on with my evening and Michael I
think we'll do the same so as always
feel free to leave us feedback however
you can we'll be back here again as
always come back next time around same
time you're used to you will see us out
there we'll have a new episode new
podcast new uh new uh YouTube video to
go with it and we're just going to keep
chugging along and we've got we've got
plenty I mean we may come back and just
rant about documentation again but
probably not we've got so many other
things to rant about we'll move on to
those in future episodes you guys go out
there and have a good one and we will
talk to you next time
[Music]
Transcript Segments
1.35

[Music]

27.08

hey we hit record or something like that

29.32

and we are are back and we're talking

31.24

about our next

32.559

episode and I think we're going to go

35.52

with it we'll just

37.84

do documentation you know wild wild west

41.36

or something like that we'll just sort

42.2

of see where we go with that because I

43.399

think there's there's a there's a lot of

46.199

places we can take it and there's a lot

47.84

of places we need to take it so we'll

50.559

see how this one goes and just sort of

52.12

make that our our primary topic I think

54.359

this this episode around well hello and

57.8

welcome back we are continuing our

60.199

season on the developer Journey we are

62.32

here at developing nor building better

63.8

developers the developer journey to

65.84

becoming a better developer my name is

68.36

Rob Broadhead I am one of the founders

69.799

of develop rur I'm also a founder of RB

71.92

Consulting where we we help Wrangle

74.6

technology basically take that sprawl

76.52

simplify it automate it integrate it

79.119

whatever we need to do to get you to

80.52

that big nasty thing that you had and

82.119

now it's nice and sleep sleak and helps

85.68

you get your job done faster we're like

87.24

the iPod of Technology something along

89.64

those lines on the other side is Michael

92.72

and I'm going to go let ahead and let

94.119

you introduce

95.479

yourself hello everyone my name is

97.64

Michael Mage I am one of the co-founders

99.799

of developer Nur and founder of Envision

101.88

QA where we help small to midsize

103.84

companies and clinicians and Healthcare

105.92

companies build software to meet their

109.119

business needs as well as help them

112.159

identify if the current technology

114

they're using is what really is

116.479

beneficial for their

118.439

business this

120.88

episode everybody's favorite topic as a

124.24

developer documentation we're going to

126.84

talk about that because everybody

129.92

complains that they get something that

131.92

wasn't documented but also nobody likes

134.72

to document things and so now we know

137.92

why nothing is that's why we complain

139.56

all the time is because we don't do it

141.319

nobody else does it so hey this is how

145.12

you become a better developer is you do

147.08

the things that nobody else wants to do

149.959

a

151.2

documentation is like testing to me a

153.599

little bit is that it it has always been

157.68

left behind it's one of those things

159.2

like yeah it'd be great if we have it we

160.68

know we should have it we know we should

161.92

do it we a lot of times know how we

164.12

should do it we just don't we run out of

167.36

time but also in a similar vein is that

171.519

the tools to help us document have come

174.92

a long long long long way so we really

179.239

need to be more cognizant of that at the

181.72

very least understand what your

184.72

environment language whatever it is what

186.92

your tool provides in the way of

188.92

documentation for example if you're

191.56

writing apis and you don't know what

193.799

Swagger is or those those types of tools

199.44

then you need to like right now just

202.2

pause Google it look it up you know

205.44

Swagger with your API however you build

207.76

it and they probably got 18,000

209.84

tutorials on how to set it

212.28

up also if you don't know how to use

215.159

Postman in your building apis pause go

218.159

learn how to use Postman and actually

220.239

Postman will help you do documentation

223.64

so that's a side note

226.36

there there are so many tools out there

229.72

to help you straighten stuff out now

233

there's going to be some things out

234.2

there there's like there's static code

235.76

analysis and things like that tools that

237.48

are very valuable that will point to

240.599

things they'll sort of like warn you

242.079

here and there and they're going to be

243.84

helpful for writing better code but more

246.28

importantly or as importantly I would

249.2

say are tools that auto help you

253.239

autogenerate

254.799

documentation stuff the old you know the

258.079

I think it was really the first one that

259.359

was out there if you go back to Java do

261.32

and the ability to just like throw it

262.84

against a a bunch of files and it just

266

it creates a nice little documentation

268

website there is the same same thing for

270.84

every language out there that I know of

272.479

I mean maybe not for like Cobalt or

274.52

something but there probably still is

276.4

something out there that'll do it and if

278.039

not go write it because it's it's not

281.639

that complicated to document things to a

285.199

level that a tool like that can easily

288.039

generate something that then makes it

290

very very useful for the next person

291.919

that comes around and

293.84

by that I'm talking about things like

297.72

your uh depending on how your your code

300.16

is set out it's going to be things like

301.479

classes and packages and signatures so

304.12

you're going to know what does this

305.12

return what does it expect what is the

307.199

data types that this expects how does

308.88

this thing even work what is it supposed

310.479

to work what's the expectations what are

312.919

the exceptions what are some of the

314.4

error codes those

316.96

things documenting those are critical

319.919

those are the things that when somebody

321.44

comes by two years from now and looking

323.4

at your code that's the stuff they need

325.68

to know it's like what the heck is this

327.56

you got this thing called function ABC I

330.88

don't know what that means give me some

333.16

comments don't make me go through

334.919

thousands of line of code to try to

336.759

figure this out and then I miss a couple

338.44

of side effects or something like that

340.56

document it part of becoming a better

344.44

developer is doing the things that

347.28

documentation is a uh a sanity check for

351.24

it's the kinds of things where you are

353.08

if you're documenting your function and

354.8

you know I need to document the inputs

357.12

the outputs what are the side effects

359

what are the data types what are the

361.08

expectations then you should know what

364.12

your stuff does for example if there's

367.24

three different types of Errors then you

369.8

should have somewhere in your code that

371.44

it's going to kick out a different error

372.84

code for each of those types of Errors

374.84

don't make people find your source code

377.759

and crawl through that and go searching

379.96

for you know message text or something

383.759

like that and try to figure out where

385.599

this error is coming from those kinds of

388.88

things are going to be invaluable to the

392.039

next developer which could be somebody

393.759

like you but also they're going to help

396.52

you do a better job now it really is a

400.639

like a yet another validation yet

403.84

another testing form of testing to make

406.08

sure that what you're writing is correct

409.44

and of high quality now I'm going to sit

413.24

back and document what I just said while

415.319

Michael provides his own level of high

418.199

quality stuff because I know You' got

419.919

your your opinions on this as well so I

422.08

want to see where's what's your feedback

423.639

and where am I where am I right where am

425.16

I wrong so without going too far on my

428.36

soapbox of user testing and stories let

432.24

me add to some of the things you said

435.759

because I think you left off a few

437.919

things you touched on most of the high

440.599

points but one of the things that you

443.919

didn't mention are readme files or

446.36

markdown files files within the

448.84

application that not just tell you how

450.639

to test the application what the

452.039

application is supposed to do but how

454.16

you're supposed to set up the

455.479

application in a test environment in a

458.16

deployment environment how do you

459.8

actually get this code from point A to

462.28

point B so the users can actually use it

465.199

we need to also think about that within

467.28

our

468.28

documentation so documentation isn't

471.08

just front end it's pretty much all the

474.44

way through you have the front end which

476.44

is your user stories what is the

478.479

application supposed to do

480

what are the expectations uh what are

482.52

some of the uh accepted uh test criteria

487.039

what is the accepted test failures you

489.28

know there's some things within it a

491.12

version of code that might not be fully

493.4

implemented yet so certain test Stories

496.319

won't be ready to be tested so that

498.36

you'll expect those to fail as you're

500.68

going through and developing you're

502

going to be developing with that

503.759

expectation in mind that okay these

506

stories should work this is what I'm

508.039

coding to and when you hand it off to

510.28

the testers they're going to look at it

511.68

and say okay I'm expecting this have to

514.479

work maybe this won't work and then

517.08

they'll give you feedback and tell you

518.88

what happened in

520.56

between and then finally when it hands

522.76

off to the users if you did it right

526.399

you'll have release notes or product

529.959

documentation that goes out to the users

532.6

so when a the code comes out for the

534.92

first time or an update comes out they

538.079

can look at this and say

540.16

okay how is this supposed to work so

542.079

they can read through and it should

543.839

match what the application does also if

547.44

things change they should be able to

549.04

look at the release notes and say okay

551.88

this changed so if I go in here that's

554.04

why I'm seeing this new feature or why

556.32

is this new button here or why did this

558.04

button disappear that should all be

560.36

documented from the beginning to the end

563.079

user you leave that out you're going to

566.079

not set the expectation correctly for

568.04

the end user and going to get a lot of

570.2

negative calls emails or feedback that

573.519

things are not working the way they're

575.44

supposed to

576.48

work so that is in addition to what you

578.92

said now on top of what you said some of

580.56

the things I like and one of the things

583.279

um that in addition of the tools you

586.24

mentioned we have things like bugzilla

588.76

uh get Hub allows you to use uh a form

592.399

of markdown or asky docs to actually

595.839

write notation documentation that can be

598.64

quickly converted into web uh nice easy

602.279

to read web pages so you can actually

603.839

publish that with your code some of the

606.079

other things you can use are like um

608.92

atlassian tools which gives you jira uh

612.12

bit bucket Confluence so you cannot just

615.12

write wikis but you can combine the

617.32

wikis with the tickets the tickets with

619.92

the wikis you can even uh take the

622.839

bitbucket the your commits which can

625.72

percolate all the way up to the tickets

627.48

and all the way up to the wiki so if you

629.68

do it right by the time you get to do a

633.279

release or you publish your code your

636.12

document may be self-published for you

638.36

so all you have to do is include that

640.639

with the release notes when you publish

642.6

the code out the door and finally as

645.519

you're going through

647.32

this going back to our last

650.12

discussion you want to include all the

653

key players so as you're working on the

656.079

documentation make sure that all the

658.639

players

659.8

involved have looked at or at least are

663.44

aware of what changes are being done to

666

the software so that by the end everyone

669.6

is on the same page and you can do a

672.079

signoff meeting of go no go if

675.36

everything has been met or if issues

678.88

have come up is it acceptable to let the

681.32

code go out the door with changes to the

684.88

documentation now that is very key is

687.959

that you you will have more than one

691.639

type of audience for your documentation

693.959

and you will also have more than one

696.399

type of documentation so I initially

699.079

focused on the the code the developer

702.2

but you do have the endusers you may

705.12

have user you know online help or a user

707.24

manual or something like that you will

708.48

probably have depending on what the

709.76

application is some sort of an

711.56

administrator's guide so if there's

713.279

somebody that's administering the system

715.36

probably some sort of a build or

717.04

deployment or install guide one of the

720.76

things

722.2

that that Michael like hit on early on

724.68

is that you want to

726.639

have a way to with your documentation

729.399

you have to you want to be able to like

731.32

plop this on somebody's desk or in their

733.959

their computer and some way and for them

736.48

to be able to go figure out how do I

738.56

make this run how do I build it how do I

740.8

deploy it how do I launch it what do I

742.279

need what's required and one of the

744.279

things that I've run into a lot when I'm

746.839

you know when people haven't done that

749

is is that there will be all of these

751.24

little secondary scripts that or KRON

754.639

jobs or things that are out there that

756.839

are sometimes critical to the

760.24

build but they're not documented

762.279

anywhere and they're not in the main

765.12

repository

766.88

so check those things in keep that stuff

770.6

together if you've got some little

772.199

oneoff script that you used to migrate

775.16

data from version one to version two and

778.079

anybody else that's going down that

779.6

route is going to need to do it then

780.88

make sure that is somewhere documented

782.56

whether you've got like a a documents or

784.92

utilities or whatever kind of folder

787

somewhere as part of that or if you have

788.72

a second

790.079

repository that is basically here's all

792.72

of our stuff here's all of our artifacts

796.04

for our for our application for our

799.16

solution it is critical I mean it's it

803.16

those are the things that it feels like

805.76

everybody can figure that out like I I

808.079

don't know how many times I've seen

810.32

a node based app of some sort and

812.92

they're just based just do a node run no

815.8

there's like there's all kinds of

817.16

libraries that maybe are part of that

818.839

and maybe your environment isn't quite

820.32

like the other so that would even be

822.04

part of the testing is take your

823.72

documentation take everything pick it up

826.519

put it on a new environment Go spin up a

828.88

VM do whatever you need to but take that

830.72

whole thing put it on the environment

833.279

follow the steps test the documentation

835.759

does it run does it did you include all

839.279

the usernames you need to and passwords

841

you need to and what are all of these

843.279

config all those configuration files

845.16

that you probably have somewhere around

846.88

there are those documented so people

849.24

know what those values are and even more

852.36

so what values don't even get used

854.839

because we do have that on a regular

856.639

basis and if you have something that's

859

unused comment it out or do something

861.56

ideally take it out but if if you for

863.92

some reason need it there comment it out

866.88

and say you know this I only had set

869.839

here for testing or for this special bug

874.16

or something like that you know those

875.92

make sure that all of those

877.959

little magical things that we do as

880.92

we're developing to you know set things

883.16

up in a certain way or to address a very

887.12

specific bug things like that make sure

888.6

we've got those documented along the way

890.44

because that is the stuff that will

892.519

drive the next person baddy if they

895

don't have it particularly the build and

898.44

I I say this having in the last 10 years

901.759

I've got at least a half dozen projects

904.12

where it was given to me the start was

907.56

no idea how to build this no idea what

909.8

all the pieces are we sort of think this

911.92

is a source code but we don't even know

913.44

if this is complete we've got these

915.32

other things over here that we think are

916.92

valuable but we don't really know it

918.36

could be tied to another project that

920.92

stuff shouldn't happen I don't care who

923.48

you are I don't care where you're at in

924.8

your in your career progression you

928.079

should have some notes you should have

929.8

something even if it's a couple emails

931.44

that are just basically here's how this

933.519

thing runs so that the next person can

937.319

at least have a starting

939.48

point I will kick it back over to you

941.6

while I take a deep breath after that

943.079

little bit so my final thought on that

946.839

is regardless of where you're doing the

950.839

documentation try to make sure that you

954.12

move as much of the documentation to the

956.8

code level at read me files add comments

960.759

to the code if you're doing apis add

964.36

Swagger but if you put it all at the

966.959

code level especially if you're doing

969.36

unit testing or integration testing in

971.959

your code your test should also self

975.199

document some of the user stories so if

977.92

you do all your comments correctly at a

980.68

push of a button you should be able to

982.639

generate those documents you need for

984.88

the release documents for the user

986.92

documents for the deploy documents it's

989.639

all at the code level this way as things

992.04

change it gets committed and you have

994.92

version history of what's going on with

997.519

your code that's not to say using things

1000.36

like the wik and that are bad but at the

1003.12

end of the day the code is essentially

1006.88

the law the code is what is the truth

1011.48

everything else is secondary so if you

1014.6

put it in your code it should be your

1018.399

Bible this should be what it is that

1020.639

your code does so if you do it have a

1023.44

Wiki page it can get stale but if you do

1025.679

it all in a readme file you can still

1027.48

point the readme file to potentially the

1030.52

Swagger page if you're running locally

1032.919

QA whatever but you could still do it

1035.76

all in your code and then commit it and

1037.839

it's all there it's all at the ready so

1041

the next person that comes in should be

1042.88

able to easily pick it up it's great for

1045.039

training and it makes our lives easier

1048.12

as Developers

1050.28

yeah I like to think of it as you could

1052.039

if you've got your you know car and

1053.44

you've got a user's manual for your car

1055.12

there's a big difference from that user

1056.44

manual sitting in your office somewhere

1058.48

on a desk versus sitting in like the

1060.84

glove compartment of the car and that's

1063.48

often what happens we have all these

1065.039

little extra things sometimes big things

1067.6

that are external to our application but

1069.4

are core requirements and those things

1072.08

need to be documented somewhere it's

1073.6

things like hey this only runs on

1075.76

Windows 3.0 okay somebody needs to make

1078.28

sure that it needs Windows 3.0 those

1081.72

kinds of things should be you know there

1084.72

even if you don't include that entire

1087.24

environment in include those notes say

1089.559

these are the things you need to do to

1090.88

set up the environment for

1093.44

Success one the things you can do to set

1095.52

up our environment for success is to

1097.72

give us feedback is to send us emails at

1099.96

info@ developer.com leave us comments

1102.28

out on YouTube or out wherever you get

1104.12

your podcast or on develop andur on any

1106.84

of our articles anywhere we've got

1109.28

over a thousand articles out there feel

1111.039

free to throw stuff out there we will

1113.159

respond if it's a Spam we obviously

1115.36

won't we'll like delete it and move on

1117.799

but if it's something useful and for you

1119.64

guys I know it's going to be useful so

1121.24

you know reach out to us offer us any

1123.28

suggestions comments questions all of

1126.12

that kind of stuff that is what we look

1127.88

for because that is what we use to you

1129.84

know help build future episodes and even

1132.32

Seasons the season is not done we are

1135.039

chugging along but we are not done yet

1137.44

with the developer Journey

1139.44

so we will come back next time and we

1140.96

will continue to do that as always go

1143.799

out there and have yourself a great day

1145.4

a great week and we will talk to you

1148.4

next

1149.64

time all right bonus material so one

1154.64

addition which I saved for the bonus is

1158.84

well I talked about moving everything to

1160.52

the code level the beauty of doing that

1163.679

if you do it correctly you can actually

1165.919

write a script that can scan your readme

1169.039

files that can scan your uh markdown

1171.72

that can scan your aski docs and

1173.72

essentially build a user manual or

1176.799

deployment documentation for you from

1179

the code so once you're done and you're

1181.48

at the end of the cycle all you have to

1183.679

do is deploy your code your build script

1186.6

your continuous integration deployment

1189.28

whatever could call that script build

1192.36

all the documentation essentially

1194.6

self-publish when the code goes out the

1196.919

door so you could build hey here here's

1198.84

the signoff document this is everything

1200.919

that's going in in this

1202.88

release are we cool with this everyone

1205.52

signs off on it cool push the button

1207.28

goes forward it then automatically

1209.24

builds the release notes and the user

1212.12

documents at the end of the day so you

1214

can automate pretty much all of this

1216.88

people and if you do it right it can

1219.559

even tie to your user stories so if you

1222.24

create the user stories and your test

1224

cases correctly if you add a new test

1226.799

story that could apply to the final

1229.48

documentation of hey business this is

1232.679

now everything that we cover within our

1235.32

application yeah it does help a lot from

1237.88

a the closer you keep the documentation

1240.24

to code I think is this will be my

1241.919

little bonus this the better you're

1243.919

going to be as making sure that when you

1245.52

make code changes you're updating

1247.08

documentation particularly the

1249.4

documentation around the code and if

1251.039

you've done things right then that ends

1253.159

up percolating its way up so it may be

1255.72

things like um and I've seen this many

1258.36

times where you've got a a a primary

1260.799

requirements document that everybody put

1262.76

together but what you now have somewhere

1265.36

down the road is the requirements

1267.039

Document Plus you have release notes

1269.72

that have come out along the way that

1271.08

says okay we added this feature we added

1273.159

this fix we did this thing we did that

1274.799

thing if you can do those sorts of you

1279.96

know rituals basically when you do a

1282

deployment where it's like this is what

1283.44

we're going to we're going to run

1284.279

through this we build this we test this

1286.6

we verify this we generate that we stamp

1289.799

everything it gives you that road map to

1292.72

say where did you start from and how did

1295.2

you get here and you can track every B

1297.64

piece of it along the way which makes it

1299.96

critical then that's like huge for the

1302.24

next person because they can say hey I

1303.88

can not only see what you have but I can

1306.6

go back and see why you did it because

1308.48

that very often is something that if you

1311.039

don't have good documentation in a

1312.679

history of it those are kinds of things

1314.48

that can get lost and then people are

1316.559

like well why is this doing it why did

1319

they go this path why did they take that

1321.559

route and you you know you right there I

1323.88

know you right there you know that we do

1328.52

that stuff we have a a path we're going

1331.48

to take to make a

1332.919

solution to we're like this is how it's

1335.36

going to solve the problem and you

1337.12

realize something doesn't work that that

1339.559

perfect solution doesn't work for either

1342.88

because the problem's just a little bit

1344.44

off or because there's some sort of a an

1347.72

API version version which is one that's

1349.44

always good to know it's like hey I was

1351.32

going to solve this but Java 8 that I

1353.799

was working on would not allow this to

1356.279

happen it had a bug so when the next

1358.48

person comes back and they're now on

1359.88

Java 20 they can say hey this is why

1362.799

they didn't do it before so maybe we can

1365.32

do that now those are some of the things

1367.44

that are going to be really helpful to

1368.96

the next person around uh parting

1371

thoughts from you yeah so in addition to

1373.32

that that made me think of backend

1374.84

systems like apis so if you don't doent

1379.279

your apis correctly you could have apis

1382.76

that get deprecated or removed and if

1384.88

you don't communicate that to the end

1386.559

users or other software entities that

1391.08

integrate with your software you

1392.799

essentially break everything Downstream

1394.679

and that's going to make for a very

1396.36

unhappy user base I mean you don't want

1399.039

to be like the people we don't want to

1401

name from the news a few weeks ago but

1403.44

essentially you could end up in a

1404.88

situation like that so be careful make

1407.52

sure you document and make sure if

1409.4

there's a critical change that it does

1412.279

percolate to some type of documentation

1414.6

that goes out to the end

1416.44

user yeah and there because and th

1419.679

that's the stuff that's probably going

1420.799

to

1421.88

be the easiest to maintain because it's

1424.919

usually at a higher level so you don't

1426.36

have all those details but it really is

1429.039

amazing how many times I've walked into

1430.559

a project and be like I would kill for a

1432.799

user manual cuz I I don't know I'm not

1436.64

able to sit down and maybe with the

1438.08

users enough I'm not able to see what is

1440.08

this really supposed to do and sometimes

1442.96

that doesn't translate even from

1444.799

sometimes a fairly good requirements

1446.48

document if they don't have some good

1448

user stories and some things like that

1449.72

it's evolved into something that is used

1452.52

different from where it was and then it

1455.279

gets very difficult to understand like

1457.159

what's what's the why what is the

1459.32

purpose for this thing because it got

1461.36

lost in translation somewhere along the

1463.279

way one final thought on

1466.08

that typically think of the golden rule

1469.64

if you touch a piece of code make sure

1472.399

you leave it in a better place than

1474.12

where it was when you touched it and

1476

make sure that you leave the

1477.279

documentation to the whoever in a better

1480.48

place when you touch the code because

1483.799

you don't want to be the next person to

1485.679

come behind someone else who didn't do

1487.799

that and then you're

1490.08

lost and that's I say that's like one of

1493.12

the biggest values that you can bring to

1494.679

your customer when you when you get to

1496.559

that situation your customer your

1497.88

employer the project is okay it's gone

1502.12

off the rails but finding ways to bring

1504.52

it back on the rails finding ways to say

1507.12

okay this is what they had this is what

1509.6

was done this is how to do it better

1512.64

even if you can't fix all of it if you

1514.72

can just make it better than it was when

1516.72

you started that's at least progress in

1519.6

the right

1521.08

direction that being said I am going to

1523.48

progress to the right direction of

1525.08

moving on with my evening and Michael I

1527.32

think we'll do the same so as always

1529.799

feel free to leave us feedback however

1531.88

you can we'll be back here again as

1534.96

always come back next time around same

1536.919

time you're used to you will see us out

1538.84

there we'll have a new episode new

1540.72

podcast new uh new uh YouTube video to

1544.08

go with it and we're just going to keep

1545.72

chugging along and we've got we've got

1547.84

plenty I mean we may come back and just

1549.44

rant about documentation again but

1551.08

probably not we've got so many other

1552.44

things to rant about we'll move on to

1554.64

those in future episodes you guys go out

1557.36

there and have a good one and we will

1558.6

talk to you next time

1562.03

[Music]