1
00:00:05,390 --> 00:00:08,910
Jennifer Reif: You are listening to the
Breaktime Tech Talks podcast, a bite-sized
2
00:00:08,950 --> 00:00:13,489
tech podcast for busy developers where
we'll briefly cover technical topics, news
3
00:00:13,489 --> 00:00:15,749
snippets and more in short time blocks.
4
00:00:16,230 --> 00:00:19,940
I'm your host, Jennifer Reif, an
avid developer and problem solver
5
00:00:20,149 --> 00:00:24,100
with special interest in data,
learning, and all things technology.
6
00:00:24,607 --> 00:00:28,677
We are taking a detour this week as I
tackle productivity from another angle.
7
00:00:29,077 --> 00:00:33,187
I also have several events that are fast
approaching and, for a while longer,
8
00:00:33,197 --> 00:00:34,857
still targeting that book deadline.
9
00:00:35,237 --> 00:00:39,407
Then in the spirit of catching up on
content, I'll surface the highlights
10
00:00:39,407 --> 00:00:41,337
from two articles that I read this week.
11
00:00:41,707 --> 00:00:42,697
Let's dive in.
12
00:00:43,437 --> 00:00:50,657
Starting us off, in a world where we can
build anything with likely some AI coding
13
00:00:50,657 --> 00:00:53,207
tool help, what should we be building?
14
00:00:53,287 --> 00:00:54,557
What's important to build?
15
00:00:54,597 --> 00:00:57,877
What are people interested
in seeing and learning about?
16
00:00:58,657 --> 00:01:02,697
I've been feeling a bit stuck for
a while or at least making some
17
00:01:02,697 --> 00:01:05,887
progress in certain areas before
feeling like I ran into a wall.
18
00:01:06,577 --> 00:01:10,337
And someone recommended a
strategy day, which I started
19
00:01:10,337 --> 00:01:11,757
calling my brain sabbatical.
20
00:01:12,077 --> 00:01:15,527
In academia, sabbaticals are
typically a break from the
21
00:01:15,537 --> 00:01:20,207
everyday and intense teaching of
classes that instructors often do.
22
00:01:20,677 --> 00:01:26,717
And they'll go away and focus on intense
study or research for different projects.
23
00:01:26,867 --> 00:01:30,487
Focusing really heavily in one specific
area for research or project work,
24
00:01:30,897 --> 00:01:35,947
and that's really how I saw this
taking form in my own work format.
25
00:01:36,577 --> 00:01:39,387
Now, I did have some rules
that I set aside for myself.
26
00:01:39,917 --> 00:01:44,987
First of all, no messages, no emails,
no meetings, no other tasks that
27
00:01:44,987 --> 00:01:48,267
were related to work, et cetera,
for some set period of time.
28
00:01:48,547 --> 00:01:53,447
Mine, at least this round, was a whole
workday, but you could set a half a day,
29
00:01:53,447 --> 00:01:58,207
you could set a couple of hours aside,
you could set a weekend retreat aside.
30
00:01:58,207 --> 00:02:02,677
However you want to formulate
that probably is fine, but setting
31
00:02:02,677 --> 00:02:07,007
some kind of boundary for just
deep focus, freewheeling time.
32
00:02:07,417 --> 00:02:11,497
What I ended up doing is trying to
figure out what are the challenges or
33
00:02:11,497 --> 00:02:16,257
the topics that interest me and expand
my knowledge, as well as what are people
34
00:02:16,257 --> 00:02:19,867
interested in, what are they needing
to learn, what skills are relevant in
35
00:02:19,917 --> 00:02:24,917
the current industry and market, and
how do I go about providing content?
36
00:02:24,927 --> 00:02:30,287
In my case, I was looking to build
some conference abstract proposals
37
00:02:31,077 --> 00:02:36,557
and figure out what I should go about
learning in order to prove back this
38
00:02:36,577 --> 00:02:40,387
content as conference abstracts to
help others along the way as well.
39
00:02:41,047 --> 00:02:46,387
On the actual day of my brain sabbatical,
I did some ideation on a walk.
40
00:02:46,477 --> 00:02:48,867
So I took a walk around my
neighborhood in the morning.
41
00:02:49,197 --> 00:02:50,797
It wasn't a terribly long walk.
42
00:02:50,857 --> 00:02:56,117
I had maybe one or two general
conceptual ideas of things that I
43
00:02:56,117 --> 00:03:01,260
might want to start brainstorming
a bit or pursue a little bit more.
44
00:03:01,480 --> 00:03:04,060
And when I took that walk, I
just started working through my
45
00:03:04,060 --> 00:03:05,980
head on different perspectives.
46
00:03:06,020 --> 00:03:07,490
Hey, I'm a Java developer.
47
00:03:07,500 --> 00:03:11,020
If I'm going to a conference, and if
I'm this type of developer, what am
48
00:03:11,020 --> 00:03:13,740
I looking to get out of a session?
49
00:03:13,740 --> 00:03:14,960
What am I interested in learning?
50
00:03:14,960 --> 00:03:16,500
What are the challenges that I'm facing?
51
00:03:16,780 --> 00:03:18,510
What am I struggling with?
52
00:03:18,590 --> 00:03:20,750
And then I came back to
my desk after the walk.
53
00:03:21,010 --> 00:03:25,010
I researched, I worked through those
ideas to build out those topics and
54
00:03:25,010 --> 00:03:29,890
put together several, what I think are
some really good abstracts for upcoming
55
00:03:29,970 --> 00:03:33,340
conferences and events going into the
end of this year and early next year.
56
00:03:33,670 --> 00:03:37,530
I am very excited to submit them to
the CFPs for different conferences
57
00:03:37,530 --> 00:03:40,800
and see which ones might resonate
with audiences and which ones might
58
00:03:40,800 --> 00:03:45,520
need a little bit more adjustment and
tweaking to get the topic matter just
59
00:03:45,530 --> 00:03:49,340
right, or maybe some need to be retired
and that's not of interest to people.
60
00:03:49,510 --> 00:03:51,740
Putting these out there and
seeing where they end up, I'm
61
00:03:51,740 --> 00:03:52,730
really excited about doing that.
62
00:03:53,360 --> 00:03:58,080
Now, I am also working on building some
project things, and based on the abstract
63
00:03:58,090 --> 00:04:01,290
brainstorming that I did today, I have
some really cool projects that I hope to
64
00:04:01,290 --> 00:04:05,290
build out very soon, after the book is
complete, of course, which is coming up.
65
00:04:05,460 --> 00:04:08,910
But I will keep you posted on the details
for the projects that I'm building,
66
00:04:08,910 --> 00:04:11,840
the things that I learn along the way
through that, and then, of course,
67
00:04:11,850 --> 00:04:15,240
all the content that should come out
as I put together these presentations
68
00:04:15,510 --> 00:04:16,720
for, the next several months.
69
00:04:17,460 --> 00:04:19,090
I do have some upcoming events as well.
70
00:04:19,390 --> 00:04:23,290
I have an intro to, AI workshop
that is coming up on September 3rd.
71
00:04:23,860 --> 00:04:26,930
I will leave the link for that,
so that's next week, actually.
72
00:04:27,280 --> 00:04:30,500
And then I'm also attending
Graph Summit New York City.
73
00:04:30,760 --> 00:04:32,460
So this is a Neo4j hosted event.
74
00:04:32,490 --> 00:04:33,920
That's on September 17th.
75
00:04:34,370 --> 00:04:37,800
And then, I'm doing a
Northeast US meetup tour.
76
00:04:38,140 --> 00:04:40,610
So I have a stop in Raleigh
Durham, North Carolina.
77
00:04:40,610 --> 00:04:43,080
I have a stop in Charlotte,
North Carolina, and then I'm
78
00:04:43,080 --> 00:04:44,640
stopping in Richmond, Virginia.
79
00:04:44,900 --> 00:04:47,660
And those dates are
September 21st through 23rd.
80
00:04:47,680 --> 00:04:49,690
I will also leave links
to those events as well.
81
00:04:49,870 --> 00:04:52,200
If you're in any of those
areas or interested in those,
82
00:04:52,280 --> 00:04:53,170
feel free to check those out.
83
00:04:53,180 --> 00:04:54,390
I would love to see you there.
84
00:04:54,620 --> 00:04:58,170
And feel free to pepper me with
questions and, provide some more
85
00:04:58,170 --> 00:05:01,920
ideas for things I could explore or
challenges that you're dealing with.
86
00:05:02,932 --> 00:05:06,282
All right, now I have two articles that
I was able to work through this week,
87
00:05:06,602 --> 00:05:10,972
and they're somewhat related actually,
or at least I think they tackle the
88
00:05:10,972 --> 00:05:15,102
same problem in two similar ways.
89
00:05:15,352 --> 00:05:18,422
The first one is called Domain
Knowledge is the Leverage by
90
00:05:18,462 --> 00:05:20,452
Besher Kayali Reinholdson.
91
00:05:20,452 --> 00:05:21,682
I hope I pronounced that correctly.
92
00:05:22,112 --> 00:05:27,642
And this one is talking about things
that make coding easier to work with for
93
00:05:27,652 --> 00:05:30,272
humans also seem to be helping agents.
94
00:05:30,302 --> 00:05:35,272
Things like tests, domain clarity,
modularity, and some other things as well.
95
00:05:35,852 --> 00:05:42,052
And if you think about this like your
career moving from more introductory to
96
00:05:42,062 --> 00:05:47,642
more senior and heavier responsibility
roles, we tend to start focusing more
97
00:05:47,652 --> 00:05:52,602
in on the high level and the system
design aspects, and less on the minutiae
98
00:05:52,622 --> 00:05:58,672
of coding syntax or maybe detail
efficiency structuring and naming
99
00:05:58,672 --> 00:06:00,152
variables a certain way, et cetera.
100
00:06:00,782 --> 00:06:05,872
The author talks about the shift
toward specs, so spec-driven
101
00:06:05,872 --> 00:06:06,932
development, if you will.
102
00:06:07,412 --> 00:06:11,702
And while no one wants hundreds of
pages, tons of pages of requirements
103
00:06:11,702 --> 00:06:16,672
documentation to have to read or try
to understand, you need to use specs
104
00:06:16,722 --> 00:06:21,752
as technical decisions and documenting
and reasoning through those decisions.
105
00:06:22,182 --> 00:06:26,492
Why and how and when you decided
something should go a certain way
106
00:06:26,492 --> 00:06:27,652
or be structured a certain way.
107
00:06:28,272 --> 00:06:33,052
So specs should be very clear
decision-making outlining of, "Here's
108
00:06:33,052 --> 00:06:36,922
what we want. Here's why we decided to use
this approach." One of my favorite parts
109
00:06:36,932 --> 00:06:43,366
of this article is that nobody really
has an end-all be-all answer for this.
110
00:06:43,816 --> 00:06:47,196
We're all testing things out and
trying things and experimenting.
111
00:06:47,776 --> 00:06:49,636
The tools change very consistently.
112
00:06:49,936 --> 00:06:54,516
Something that worked for us a week
ago, a month ago, six months ago, now
113
00:06:54,546 --> 00:06:56,596
doesn't work in this, this current age.
114
00:06:56,956 --> 00:06:59,446
We're all figuring things out, and
things are changing so quickly.
115
00:06:59,836 --> 00:07:04,516
Now, the insights that matter are
coming from running these small
116
00:07:04,566 --> 00:07:08,236
iterative experiments over and over
and over to validate whether this
117
00:07:08,276 --> 00:07:11,696
is working for us in this certain
situation, with this technology stack,
118
00:07:11,696 --> 00:07:18,356
et cetera, and not necessarily taking
any one company's or developer's or
119
00:07:18,356 --> 00:07:24,696
spokesperson's or even AI coding tool's
perspective and their word for it.
120
00:07:24,986 --> 00:07:26,706
We're having to evaluate on our own.
121
00:07:26,736 --> 00:07:28,716
Well, does this actually solve my problem?
122
00:07:28,726 --> 00:07:29,956
Let me try to implement this.
123
00:07:29,956 --> 00:07:31,176
Let me try using this tool.
124
00:07:31,186 --> 00:07:34,266
Let me see if the results are as
good as this other person is seeing.
125
00:07:35,846 --> 00:07:38,936
Another favorite part of this is that
tests are mattering more than ever.
126
00:07:39,556 --> 00:07:43,496
When you have a AI coding tool
that's generating code for you,
127
00:07:43,766 --> 00:07:46,966
you have to be able to check that
it actually did the right thing.
128
00:07:47,476 --> 00:07:51,576
And the article says, "It seems like
25 years of people pushing test-driven
129
00:07:51,576 --> 00:07:54,936
development was good preparation for
what's coming." I thought this was a
130
00:07:54,936 --> 00:07:56,536
little bit tongue in cheek, kind of funny.
131
00:07:56,896 --> 00:07:59,886
Some of these practices, things
like test-driven design, thing like
132
00:07:59,886 --> 00:08:03,336
domain-driven design, things like
that are actually becoming incredibly
133
00:08:03,336 --> 00:08:06,336
important, especially in this age of AI.
134
00:08:07,066 --> 00:08:11,486
Overall, the article talks about different
shifts in the approach to development.
135
00:08:11,666 --> 00:08:15,706
We're now looking at things like
design decisions and domain, which
136
00:08:15,706 --> 00:08:19,206
have always been important, but these
are especially becoming a focus right
137
00:08:19,206 --> 00:08:23,356
now, and this is shifting how we
spend our time as developers as well.
138
00:08:23,356 --> 00:08:24,536
We're now verifying things.
139
00:08:24,536 --> 00:08:26,916
We're testing and we're
reviewing much more than what
140
00:08:26,916 --> 00:08:28,966
we used to in the pre-AI days.
141
00:08:30,116 --> 00:08:34,386
The other article, which follows a
similar trajectory here, is called
142
00:08:34,496 --> 00:08:37,656
Coding Is Solved, Software Is Not by Gao.
143
00:08:38,626 --> 00:08:43,506
The main thesis of at least the first
section is if implementation is becoming
144
00:08:43,506 --> 00:08:48,976
abundant, in other words, if syntax can
be written at the drop of a hat with
145
00:08:48,976 --> 00:08:52,726
an AI coding tool, why does building
software take so much time and effort?
146
00:08:53,906 --> 00:08:57,286
Now, this idea of "coding is
solved" that the author kind of
147
00:08:57,406 --> 00:09:01,186
intersperses, throughout the article
is a really bold statement, but the
148
00:09:01,196 --> 00:09:03,486
author says it's also incomplete.
149
00:09:03,846 --> 00:09:08,616
And basically, what it comes down to
is that writing code has stopped being
150
00:09:08,616 --> 00:09:11,036
the slowest part of building software.
151
00:09:12,056 --> 00:09:15,626
Used to, that would be the
longest pole in the tent, right?
152
00:09:15,726 --> 00:09:19,506
That would be the thing that took the
longest, was taking the requirements
153
00:09:19,526 --> 00:09:24,276
and turning it into code and making
sure that code functioned appropriately.
154
00:09:24,846 --> 00:09:28,246
Coding does not equal software
development, and we're just
155
00:09:28,306 --> 00:09:29,526
coming to this epiphany, right?
156
00:09:29,566 --> 00:09:30,846
Ah, that makes sense.
157
00:09:31,146 --> 00:09:33,776
Coding is not the entirety
of software development.
158
00:09:34,506 --> 00:09:37,886
Now, coding is still very important,
but it's not the only piece of the
159
00:09:37,886 --> 00:09:44,182
puzzle, and we're seeing this in an
extreme form in this AI coding tool era.
160
00:09:44,372 --> 00:09:48,992
AI tools are managing the syntax version
of that, the coding piece, that used to
161
00:09:48,992 --> 00:09:52,152
take so much longer for us to do manually.
162
00:09:53,312 --> 00:09:59,429
And now, it's either allowing or forcing
us to take more time in other steps
163
00:09:59,469 --> 00:10:01,069
of that software development process.
164
00:10:01,699 --> 00:10:02,769
Here's kind of my take on it.
165
00:10:02,769 --> 00:10:06,909
Previously, we as developers only
had time to specialize in one thing.
166
00:10:07,249 --> 00:10:11,009
I'm focusing on this programming language,
or I'm focusing on infrastructure, or
167
00:10:11,009 --> 00:10:15,189
I'm focusing on requirements building,
or I'm focusing on operations or whatever
168
00:10:15,189 --> 00:10:20,439
it happens to be, one specific area of
expertise inside software development.
169
00:10:20,745 --> 00:10:25,962
But now the article says, "After
code exists, someone has to prove that
170
00:10:25,962 --> 00:10:29,442
that change belongs in the system,
ship it safely, and keep owning the
171
00:10:29,442 --> 00:10:33,882
consequences." So now we're focusing
more heavily on, well, does the coding
172
00:10:33,882 --> 00:10:36,652
syntax actually match the requirements?
173
00:10:36,982 --> 00:10:41,662
Can we verify that the code is working
as it says it should be working?
174
00:10:42,182 --> 00:10:44,962
I really liked one of the diagrams
that was in this article that showed
175
00:10:45,042 --> 00:10:49,512
kind of this messy intent of, "Here's
what I want the application to do," but
176
00:10:49,512 --> 00:10:53,502
this is in the minds of the business
folks that want an application that
177
00:10:53,502 --> 00:10:54,972
does this, that, and the other thing.
178
00:10:55,682 --> 00:11:00,072
And then that intent that's very messy
and all over the place gets formulated
179
00:11:00,082 --> 00:11:05,092
into a spec, which then becomes code,
which then goes into a re-review step,
180
00:11:05,232 --> 00:11:07,232
which then gets shipped and deployed.
181
00:11:08,212 --> 00:11:13,472
No longer are we asking, "Can we
actually build the spec that's being
182
00:11:13,472 --> 00:11:17,832
written?" Now we are focusing heavily
and spending a lot more time on, did we
183
00:11:17,832 --> 00:11:19,992
build the right thing in the right way?
184
00:11:20,402 --> 00:11:23,172
Did we build an application that solved
the business problem to begin with?
185
00:11:23,912 --> 00:11:28,812
Now, that doesn't mean that
these issues, these questions,
186
00:11:29,002 --> 00:11:30,422
were never a problem before.
187
00:11:30,802 --> 00:11:35,532
It's just that the coding piece of that
process was the one that took the longest,
188
00:11:35,542 --> 00:11:40,142
was the hardest to align, and therefore,
we spent the most time in that area.
189
00:11:40,152 --> 00:11:41,562
We spent the most expertise.
190
00:11:41,782 --> 00:11:47,512
We spent the most learning, brain cycles
in that particular part of the puzzle.
191
00:11:47,812 --> 00:11:52,312
But now that AI coding tools are kind
of handling that piece for us, we're
192
00:11:52,312 --> 00:11:56,522
realizing that, oh, things that humans
were automatically doing in that coding
193
00:11:56,522 --> 00:12:00,602
process, things like verifying the
requirements, testing and iterating
194
00:12:00,612 --> 00:12:03,792
with proof of concepts, now we're
having to spend a lot more time in
195
00:12:03,802 --> 00:12:08,162
those other areas because the coding has
now been handed off to something else.
196
00:12:09,460 --> 00:12:12,270
Now, can AI own the coding step entirely?
197
00:12:12,330 --> 00:12:15,100
The article says not yet,
and I would agree here.
198
00:12:15,500 --> 00:12:19,190
A generated test suite could be
large and, as the article says,
199
00:12:19,190 --> 00:12:22,420
mostly confirm the implementation
that the agent already chose.
200
00:12:22,810 --> 00:12:24,120
This is confirmation bias.
201
00:12:24,310 --> 00:12:30,060
If you have the agent say, "Hey, does
the test suite validate and verify the
202
00:12:30,060 --> 00:12:34,460
requirements for the application?" Then
it's already going to be biased, right?
203
00:12:34,470 --> 00:12:36,470
That would be like having the
developer who wrote the code
204
00:12:37,100 --> 00:12:39,030
test and code review it as well.
205
00:12:39,320 --> 00:12:42,360
That's not gonna be an
impartial opinion on that.
206
00:12:42,850 --> 00:12:46,510
You need an external resource
on that to verify the code.
207
00:12:46,680 --> 00:12:49,770
That's why typically, your developers
that wrote the code wouldn't typically
208
00:12:49,780 --> 00:12:51,730
be the same ones doing the code reviews.
209
00:12:51,790 --> 00:12:53,230
You have somebody else do that piece.
210
00:12:53,540 --> 00:12:58,090
Same way that's happening in this AI
coding workflow, the software development
211
00:12:58,090 --> 00:13:00,140
workflow with AI as a piece of that.
212
00:13:01,280 --> 00:13:04,600
In the author's own experience with
integrating AI into the workflow,
213
00:13:04,870 --> 00:13:06,540
the bottleneck has shifted.
214
00:13:06,600 --> 00:13:07,990
It's no longer that coding piece.
215
00:13:08,000 --> 00:13:08,960
It's now moved over.
216
00:13:09,310 --> 00:13:11,780
And for them, the author says
there are four problems that
217
00:13:11,780 --> 00:13:18,150
keep coming back: context, specs,
verification, and human checkpoints.
218
00:13:18,390 --> 00:13:22,840
The author's thoughts on this are that
context needs to be chosen on purpose.
219
00:13:23,130 --> 00:13:24,720
More does not always equal better.
220
00:13:24,750 --> 00:13:27,430
That's something that I've
mentioned in some of my content,
221
00:13:27,440 --> 00:13:28,660
my presentations as well.
222
00:13:28,820 --> 00:13:31,200
More context does not
always equal better context.
223
00:13:31,200 --> 00:13:36,000
You have to refine and drill down into
what are the key and most important
224
00:13:36,010 --> 00:13:37,590
pieces of context that I need to provide.
225
00:13:38,590 --> 00:13:41,060
Then the next thing is specs
that stay with the work.
226
00:13:41,880 --> 00:13:46,040
A human with a very vague task
likely will go back and clarify or
227
00:13:46,390 --> 00:13:49,580
construct in such a way that it's
flexible to be able to shift easily.
228
00:13:49,910 --> 00:13:52,650
AI sometimes charges
ahead very incorrectly.
229
00:13:52,930 --> 00:13:57,100
And so, we have to keep the
specifications alongside that work as
230
00:13:57,100 --> 00:13:59,840
we move through the process so that
we make sure things stay on target.
231
00:14:01,400 --> 00:14:03,820
The next step is evidence
that reviewers can trust.
232
00:14:03,820 --> 00:14:08,380
Reviewers need to know that the
test was built correctly for that
233
00:14:08,380 --> 00:14:11,730
particular task or to solve that
particular problem or calculation.
234
00:14:12,220 --> 00:14:14,640
And then finally, checkpoints
where judgment matters.
235
00:14:14,660 --> 00:14:18,960
There are certain moments that require
human judgment, and we need to have
236
00:14:19,090 --> 00:14:23,240
human on the loop type of pieces to
insert those gates where we need to,
237
00:14:23,860 --> 00:14:25,660
but of course, maybe not at every point.
238
00:14:26,510 --> 00:14:29,800
I thought both of these articles
hinted at very similar things.
239
00:14:30,070 --> 00:14:34,820
We're starting to move and shift
the focus of software development
240
00:14:34,850 --> 00:14:38,800
in different ways, and it's always
interesting and challenging to make
241
00:14:38,800 --> 00:14:40,940
these changes and to learn as we go.
242
00:14:41,390 --> 00:14:43,970
But it's a process that I think
will reap benefits in the long run.
243
00:14:44,604 --> 00:14:46,744
Sometimes to move forward,
you have to step back.
244
00:14:47,044 --> 00:14:51,514
It's a fine balance between progress
and coasting, but the brain sabbatical
245
00:14:51,514 --> 00:14:54,904
this week was just what I needed to
ideate and power forward with a plan.
246
00:14:55,534 --> 00:14:59,344
Then I had two articles in my browser
tabs that I read covering AI coding
247
00:14:59,714 --> 00:15:02,794
and some skills to improve the results.
248
00:15:02,864 --> 00:15:04,574
Thanks for listening, and happy coding!
00:00:05,390 --> 00:00:08,910
Jennifer Reif: You are listening to the
Breaktime Tech Talks podcast, a bite-sized
2
00:00:08,950 --> 00:00:13,489
tech podcast for busy developers where
we'll briefly cover technical topics, news
3
00:00:13,489 --> 00:00:15,749
snippets and more in short time blocks.
4
00:00:16,230 --> 00:00:19,940
I'm your host, Jennifer Reif, an
avid developer and problem solver
5
00:00:20,149 --> 00:00:24,100
with special interest in data,
learning, and all things technology.
6
00:00:24,607 --> 00:00:28,677
We are taking a detour this week as I
tackle productivity from another angle.
7
00:00:29,077 --> 00:00:33,187
I also have several events that are fast
approaching and, for a while longer,
8
00:00:33,197 --> 00:00:34,857
still targeting that book deadline.
9
00:00:35,237 --> 00:00:39,407
Then in the spirit of catching up on
content, I'll surface the highlights
10
00:00:39,407 --> 00:00:41,337
from two articles that I read this week.
11
00:00:41,707 --> 00:00:42,697
Let's dive in.
12
00:00:43,437 --> 00:00:50,657
Starting us off, in a world where we can
build anything with likely some AI coding
13
00:00:50,657 --> 00:00:53,207
tool help, what should we be building?
14
00:00:53,287 --> 00:00:54,557
What's important to build?
15
00:00:54,597 --> 00:00:57,877
What are people interested
in seeing and learning about?
16
00:00:58,657 --> 00:01:02,697
I've been feeling a bit stuck for
a while or at least making some
17
00:01:02,697 --> 00:01:05,887
progress in certain areas before
feeling like I ran into a wall.
18
00:01:06,577 --> 00:01:10,337
And someone recommended a
strategy day, which I started
19
00:01:10,337 --> 00:01:11,757
calling my brain sabbatical.
20
00:01:12,077 --> 00:01:15,527
In academia, sabbaticals are
typically a break from the
21
00:01:15,537 --> 00:01:20,207
everyday and intense teaching of
classes that instructors often do.
22
00:01:20,677 --> 00:01:26,717
And they'll go away and focus on intense
study or research for different projects.
23
00:01:26,867 --> 00:01:30,487
Focusing really heavily in one specific
area for research or project work,
24
00:01:30,897 --> 00:01:35,947
and that's really how I saw this
taking form in my own work format.
25
00:01:36,577 --> 00:01:39,387
Now, I did have some rules
that I set aside for myself.
26
00:01:39,917 --> 00:01:44,987
First of all, no messages, no emails,
no meetings, no other tasks that
27
00:01:44,987 --> 00:01:48,267
were related to work, et cetera,
for some set period of time.
28
00:01:48,547 --> 00:01:53,447
Mine, at least this round, was a whole
workday, but you could set a half a day,
29
00:01:53,447 --> 00:01:58,207
you could set a couple of hours aside,
you could set a weekend retreat aside.
30
00:01:58,207 --> 00:02:02,677
However you want to formulate
that probably is fine, but setting
31
00:02:02,677 --> 00:02:07,007
some kind of boundary for just
deep focus, freewheeling time.
32
00:02:07,417 --> 00:02:11,497
What I ended up doing is trying to
figure out what are the challenges or
33
00:02:11,497 --> 00:02:16,257
the topics that interest me and expand
my knowledge, as well as what are people
34
00:02:16,257 --> 00:02:19,867
interested in, what are they needing
to learn, what skills are relevant in
35
00:02:19,917 --> 00:02:24,917
the current industry and market, and
how do I go about providing content?
36
00:02:24,927 --> 00:02:30,287
In my case, I was looking to build
some conference abstract proposals
37
00:02:31,077 --> 00:02:36,557
and figure out what I should go about
learning in order to prove back this
38
00:02:36,577 --> 00:02:40,387
content as conference abstracts to
help others along the way as well.
39
00:02:41,047 --> 00:02:46,387
On the actual day of my brain sabbatical,
I did some ideation on a walk.
40
00:02:46,477 --> 00:02:48,867
So I took a walk around my
neighborhood in the morning.
41
00:02:49,197 --> 00:02:50,797
It wasn't a terribly long walk.
42
00:02:50,857 --> 00:02:56,117
I had maybe one or two general
conceptual ideas of things that I
43
00:02:56,117 --> 00:03:01,260
might want to start brainstorming
a bit or pursue a little bit more.
44
00:03:01,480 --> 00:03:04,060
And when I took that walk, I
just started working through my
45
00:03:04,060 --> 00:03:05,980
head on different perspectives.
46
00:03:06,020 --> 00:03:07,490
Hey, I'm a Java developer.
47
00:03:07,500 --> 00:03:11,020
If I'm going to a conference, and if
I'm this type of developer, what am
48
00:03:11,020 --> 00:03:13,740
I looking to get out of a session?
49
00:03:13,740 --> 00:03:14,960
What am I interested in learning?
50
00:03:14,960 --> 00:03:16,500
What are the challenges that I'm facing?
51
00:03:16,780 --> 00:03:18,510
What am I struggling with?
52
00:03:18,590 --> 00:03:20,750
And then I came back to
my desk after the walk.
53
00:03:21,010 --> 00:03:25,010
I researched, I worked through those
ideas to build out those topics and
54
00:03:25,010 --> 00:03:29,890
put together several, what I think are
some really good abstracts for upcoming
55
00:03:29,970 --> 00:03:33,340
conferences and events going into the
end of this year and early next year.
56
00:03:33,670 --> 00:03:37,530
I am very excited to submit them to
the CFPs for different conferences
57
00:03:37,530 --> 00:03:40,800
and see which ones might resonate
with audiences and which ones might
58
00:03:40,800 --> 00:03:45,520
need a little bit more adjustment and
tweaking to get the topic matter just
59
00:03:45,530 --> 00:03:49,340
right, or maybe some need to be retired
and that's not of interest to people.
60
00:03:49,510 --> 00:03:51,740
Putting these out there and
seeing where they end up, I'm
61
00:03:51,740 --> 00:03:52,730
really excited about doing that.
62
00:03:53,360 --> 00:03:58,080
Now, I am also working on building some
project things, and based on the abstract
63
00:03:58,090 --> 00:04:01,290
brainstorming that I did today, I have
some really cool projects that I hope to
64
00:04:01,290 --> 00:04:05,290
build out very soon, after the book is
complete, of course, which is coming up.
65
00:04:05,460 --> 00:04:08,910
But I will keep you posted on the details
for the projects that I'm building,
66
00:04:08,910 --> 00:04:11,840
the things that I learn along the way
through that, and then, of course,
67
00:04:11,850 --> 00:04:15,240
all the content that should come out
as I put together these presentations
68
00:04:15,510 --> 00:04:16,720
for, the next several months.
69
00:04:17,460 --> 00:04:19,090
I do have some upcoming events as well.
70
00:04:19,390 --> 00:04:23,290
I have an intro to, AI workshop
that is coming up on September 3rd.
71
00:04:23,860 --> 00:04:26,930
I will leave the link for that,
so that's next week, actually.
72
00:04:27,280 --> 00:04:30,500
And then I'm also attending
Graph Summit New York City.
73
00:04:30,760 --> 00:04:32,460
So this is a Neo4j hosted event.
74
00:04:32,490 --> 00:04:33,920
That's on September 17th.
75
00:04:34,370 --> 00:04:37,800
And then, I'm doing a
Northeast US meetup tour.
76
00:04:38,140 --> 00:04:40,610
So I have a stop in Raleigh
Durham, North Carolina.
77
00:04:40,610 --> 00:04:43,080
I have a stop in Charlotte,
North Carolina, and then I'm
78
00:04:43,080 --> 00:04:44,640
stopping in Richmond, Virginia.
79
00:04:44,900 --> 00:04:47,660
And those dates are
September 21st through 23rd.
80
00:04:47,680 --> 00:04:49,690
I will also leave links
to those events as well.
81
00:04:49,870 --> 00:04:52,200
If you're in any of those
areas or interested in those,
82
00:04:52,280 --> 00:04:53,170
feel free to check those out.
83
00:04:53,180 --> 00:04:54,390
I would love to see you there.
84
00:04:54,620 --> 00:04:58,170
And feel free to pepper me with
questions and, provide some more
85
00:04:58,170 --> 00:05:01,920
ideas for things I could explore or
challenges that you're dealing with.
86
00:05:02,932 --> 00:05:06,282
All right, now I have two articles that
I was able to work through this week,
87
00:05:06,602 --> 00:05:10,972
and they're somewhat related actually,
or at least I think they tackle the
88
00:05:10,972 --> 00:05:15,102
same problem in two similar ways.
89
00:05:15,352 --> 00:05:18,422
The first one is called Domain
Knowledge is the Leverage by
90
00:05:18,462 --> 00:05:20,452
Besher Kayali Reinholdson.
91
00:05:20,452 --> 00:05:21,682
I hope I pronounced that correctly.
92
00:05:22,112 --> 00:05:27,642
And this one is talking about things
that make coding easier to work with for
93
00:05:27,652 --> 00:05:30,272
humans also seem to be helping agents.
94
00:05:30,302 --> 00:05:35,272
Things like tests, domain clarity,
modularity, and some other things as well.
95
00:05:35,852 --> 00:05:42,052
And if you think about this like your
career moving from more introductory to
96
00:05:42,062 --> 00:05:47,642
more senior and heavier responsibility
roles, we tend to start focusing more
97
00:05:47,652 --> 00:05:52,602
in on the high level and the system
design aspects, and less on the minutiae
98
00:05:52,622 --> 00:05:58,672
of coding syntax or maybe detail
efficiency structuring and naming
99
00:05:58,672 --> 00:06:00,152
variables a certain way, et cetera.
100
00:06:00,782 --> 00:06:05,872
The author talks about the shift
toward specs, so spec-driven
101
00:06:05,872 --> 00:06:06,932
development, if you will.
102
00:06:07,412 --> 00:06:11,702
And while no one wants hundreds of
pages, tons of pages of requirements
103
00:06:11,702 --> 00:06:16,672
documentation to have to read or try
to understand, you need to use specs
104
00:06:16,722 --> 00:06:21,752
as technical decisions and documenting
and reasoning through those decisions.
105
00:06:22,182 --> 00:06:26,492
Why and how and when you decided
something should go a certain way
106
00:06:26,492 --> 00:06:27,652
or be structured a certain way.
107
00:06:28,272 --> 00:06:33,052
So specs should be very clear
decision-making outlining of, "Here's
108
00:06:33,052 --> 00:06:36,922
what we want. Here's why we decided to use
this approach." One of my favorite parts
109
00:06:36,932 --> 00:06:43,366
of this article is that nobody really
has an end-all be-all answer for this.
110
00:06:43,816 --> 00:06:47,196
We're all testing things out and
trying things and experimenting.
111
00:06:47,776 --> 00:06:49,636
The tools change very consistently.
112
00:06:49,936 --> 00:06:54,516
Something that worked for us a week
ago, a month ago, six months ago, now
113
00:06:54,546 --> 00:06:56,596
doesn't work in this, this current age.
114
00:06:56,956 --> 00:06:59,446
We're all figuring things out, and
things are changing so quickly.
115
00:06:59,836 --> 00:07:04,516
Now, the insights that matter are
coming from running these small
116
00:07:04,566 --> 00:07:08,236
iterative experiments over and over
and over to validate whether this
117
00:07:08,276 --> 00:07:11,696
is working for us in this certain
situation, with this technology stack,
118
00:07:11,696 --> 00:07:18,356
et cetera, and not necessarily taking
any one company's or developer's or
119
00:07:18,356 --> 00:07:24,696
spokesperson's or even AI coding tool's
perspective and their word for it.
120
00:07:24,986 --> 00:07:26,706
We're having to evaluate on our own.
121
00:07:26,736 --> 00:07:28,716
Well, does this actually solve my problem?
122
00:07:28,726 --> 00:07:29,956
Let me try to implement this.
123
00:07:29,956 --> 00:07:31,176
Let me try using this tool.
124
00:07:31,186 --> 00:07:34,266
Let me see if the results are as
good as this other person is seeing.
125
00:07:35,846 --> 00:07:38,936
Another favorite part of this is that
tests are mattering more than ever.
126
00:07:39,556 --> 00:07:43,496
When you have a AI coding tool
that's generating code for you,
127
00:07:43,766 --> 00:07:46,966
you have to be able to check that
it actually did the right thing.
128
00:07:47,476 --> 00:07:51,576
And the article says, "It seems like
25 years of people pushing test-driven
129
00:07:51,576 --> 00:07:54,936
development was good preparation for
what's coming." I thought this was a
130
00:07:54,936 --> 00:07:56,536
little bit tongue in cheek, kind of funny.
131
00:07:56,896 --> 00:07:59,886
Some of these practices, things
like test-driven design, thing like
132
00:07:59,886 --> 00:08:03,336
domain-driven design, things like
that are actually becoming incredibly
133
00:08:03,336 --> 00:08:06,336
important, especially in this age of AI.
134
00:08:07,066 --> 00:08:11,486
Overall, the article talks about different
shifts in the approach to development.
135
00:08:11,666 --> 00:08:15,706
We're now looking at things like
design decisions and domain, which
136
00:08:15,706 --> 00:08:19,206
have always been important, but these
are especially becoming a focus right
137
00:08:19,206 --> 00:08:23,356
now, and this is shifting how we
spend our time as developers as well.
138
00:08:23,356 --> 00:08:24,536
We're now verifying things.
139
00:08:24,536 --> 00:08:26,916
We're testing and we're
reviewing much more than what
140
00:08:26,916 --> 00:08:28,966
we used to in the pre-AI days.
141
00:08:30,116 --> 00:08:34,386
The other article, which follows a
similar trajectory here, is called
142
00:08:34,496 --> 00:08:37,656
Coding Is Solved, Software Is Not by Gao.
143
00:08:38,626 --> 00:08:43,506
The main thesis of at least the first
section is if implementation is becoming
144
00:08:43,506 --> 00:08:48,976
abundant, in other words, if syntax can
be written at the drop of a hat with
145
00:08:48,976 --> 00:08:52,726
an AI coding tool, why does building
software take so much time and effort?
146
00:08:53,906 --> 00:08:57,286
Now, this idea of "coding is
solved" that the author kind of
147
00:08:57,406 --> 00:09:01,186
intersperses, throughout the article
is a really bold statement, but the
148
00:09:01,196 --> 00:09:03,486
author says it's also incomplete.
149
00:09:03,846 --> 00:09:08,616
And basically, what it comes down to
is that writing code has stopped being
150
00:09:08,616 --> 00:09:11,036
the slowest part of building software.
151
00:09:12,056 --> 00:09:15,626
Used to, that would be the
longest pole in the tent, right?
152
00:09:15,726 --> 00:09:19,506
That would be the thing that took the
longest, was taking the requirements
153
00:09:19,526 --> 00:09:24,276
and turning it into code and making
sure that code functioned appropriately.
154
00:09:24,846 --> 00:09:28,246
Coding does not equal software
development, and we're just
155
00:09:28,306 --> 00:09:29,526
coming to this epiphany, right?
156
00:09:29,566 --> 00:09:30,846
Ah, that makes sense.
157
00:09:31,146 --> 00:09:33,776
Coding is not the entirety
of software development.
158
00:09:34,506 --> 00:09:37,886
Now, coding is still very important,
but it's not the only piece of the
159
00:09:37,886 --> 00:09:44,182
puzzle, and we're seeing this in an
extreme form in this AI coding tool era.
160
00:09:44,372 --> 00:09:48,992
AI tools are managing the syntax version
of that, the coding piece, that used to
161
00:09:48,992 --> 00:09:52,152
take so much longer for us to do manually.
162
00:09:53,312 --> 00:09:59,429
And now, it's either allowing or forcing
us to take more time in other steps
163
00:09:59,469 --> 00:10:01,069
of that software development process.
164
00:10:01,699 --> 00:10:02,769
Here's kind of my take on it.
165
00:10:02,769 --> 00:10:06,909
Previously, we as developers only
had time to specialize in one thing.
166
00:10:07,249 --> 00:10:11,009
I'm focusing on this programming language,
or I'm focusing on infrastructure, or
167
00:10:11,009 --> 00:10:15,189
I'm focusing on requirements building,
or I'm focusing on operations or whatever
168
00:10:15,189 --> 00:10:20,439
it happens to be, one specific area of
expertise inside software development.
169
00:10:20,745 --> 00:10:25,962
But now the article says, "After
code exists, someone has to prove that
170
00:10:25,962 --> 00:10:29,442
that change belongs in the system,
ship it safely, and keep owning the
171
00:10:29,442 --> 00:10:33,882
consequences." So now we're focusing
more heavily on, well, does the coding
172
00:10:33,882 --> 00:10:36,652
syntax actually match the requirements?
173
00:10:36,982 --> 00:10:41,662
Can we verify that the code is working
as it says it should be working?
174
00:10:42,182 --> 00:10:44,962
I really liked one of the diagrams
that was in this article that showed
175
00:10:45,042 --> 00:10:49,512
kind of this messy intent of, "Here's
what I want the application to do," but
176
00:10:49,512 --> 00:10:53,502
this is in the minds of the business
folks that want an application that
177
00:10:53,502 --> 00:10:54,972
does this, that, and the other thing.
178
00:10:55,682 --> 00:11:00,072
And then that intent that's very messy
and all over the place gets formulated
179
00:11:00,082 --> 00:11:05,092
into a spec, which then becomes code,
which then goes into a re-review step,
180
00:11:05,232 --> 00:11:07,232
which then gets shipped and deployed.
181
00:11:08,212 --> 00:11:13,472
No longer are we asking, "Can we
actually build the spec that's being
182
00:11:13,472 --> 00:11:17,832
written?" Now we are focusing heavily
and spending a lot more time on, did we
183
00:11:17,832 --> 00:11:19,992
build the right thing in the right way?
184
00:11:20,402 --> 00:11:23,172
Did we build an application that solved
the business problem to begin with?
185
00:11:23,912 --> 00:11:28,812
Now, that doesn't mean that
these issues, these questions,
186
00:11:29,002 --> 00:11:30,422
were never a problem before.
187
00:11:30,802 --> 00:11:35,532
It's just that the coding piece of that
process was the one that took the longest,
188
00:11:35,542 --> 00:11:40,142
was the hardest to align, and therefore,
we spent the most time in that area.
189
00:11:40,152 --> 00:11:41,562
We spent the most expertise.
190
00:11:41,782 --> 00:11:47,512
We spent the most learning, brain cycles
in that particular part of the puzzle.
191
00:11:47,812 --> 00:11:52,312
But now that AI coding tools are kind
of handling that piece for us, we're
192
00:11:52,312 --> 00:11:56,522
realizing that, oh, things that humans
were automatically doing in that coding
193
00:11:56,522 --> 00:12:00,602
process, things like verifying the
requirements, testing and iterating
194
00:12:00,612 --> 00:12:03,792
with proof of concepts, now we're
having to spend a lot more time in
195
00:12:03,802 --> 00:12:08,162
those other areas because the coding has
now been handed off to something else.
196
00:12:09,460 --> 00:12:12,270
Now, can AI own the coding step entirely?
197
00:12:12,330 --> 00:12:15,100
The article says not yet,
and I would agree here.
198
00:12:15,500 --> 00:12:19,190
A generated test suite could be
large and, as the article says,
199
00:12:19,190 --> 00:12:22,420
mostly confirm the implementation
that the agent already chose.
200
00:12:22,810 --> 00:12:24,120
This is confirmation bias.
201
00:12:24,310 --> 00:12:30,060
If you have the agent say, "Hey, does
the test suite validate and verify the
202
00:12:30,060 --> 00:12:34,460
requirements for the application?" Then
it's already going to be biased, right?
203
00:12:34,470 --> 00:12:36,470
That would be like having the
developer who wrote the code
204
00:12:37,100 --> 00:12:39,030
test and code review it as well.
205
00:12:39,320 --> 00:12:42,360
That's not gonna be an
impartial opinion on that.
206
00:12:42,850 --> 00:12:46,510
You need an external resource
on that to verify the code.
207
00:12:46,680 --> 00:12:49,770
That's why typically, your developers
that wrote the code wouldn't typically
208
00:12:49,780 --> 00:12:51,730
be the same ones doing the code reviews.
209
00:12:51,790 --> 00:12:53,230
You have somebody else do that piece.
210
00:12:53,540 --> 00:12:58,090
Same way that's happening in this AI
coding workflow, the software development
211
00:12:58,090 --> 00:13:00,140
workflow with AI as a piece of that.
212
00:13:01,280 --> 00:13:04,600
In the author's own experience with
integrating AI into the workflow,
213
00:13:04,870 --> 00:13:06,540
the bottleneck has shifted.
214
00:13:06,600 --> 00:13:07,990
It's no longer that coding piece.
215
00:13:08,000 --> 00:13:08,960
It's now moved over.
216
00:13:09,310 --> 00:13:11,780
And for them, the author says
there are four problems that
217
00:13:11,780 --> 00:13:18,150
keep coming back: context, specs,
verification, and human checkpoints.
218
00:13:18,390 --> 00:13:22,840
The author's thoughts on this are that
context needs to be chosen on purpose.
219
00:13:23,130 --> 00:13:24,720
More does not always equal better.
220
00:13:24,750 --> 00:13:27,430
That's something that I've
mentioned in some of my content,
221
00:13:27,440 --> 00:13:28,660
my presentations as well.
222
00:13:28,820 --> 00:13:31,200
More context does not
always equal better context.
223
00:13:31,200 --> 00:13:36,000
You have to refine and drill down into
what are the key and most important
224
00:13:36,010 --> 00:13:37,590
pieces of context that I need to provide.
225
00:13:38,590 --> 00:13:41,060
Then the next thing is specs
that stay with the work.
226
00:13:41,880 --> 00:13:46,040
A human with a very vague task
likely will go back and clarify or
227
00:13:46,390 --> 00:13:49,580
construct in such a way that it's
flexible to be able to shift easily.
228
00:13:49,910 --> 00:13:52,650
AI sometimes charges
ahead very incorrectly.
229
00:13:52,930 --> 00:13:57,100
And so, we have to keep the
specifications alongside that work as
230
00:13:57,100 --> 00:13:59,840
we move through the process so that
we make sure things stay on target.
231
00:14:01,400 --> 00:14:03,820
The next step is evidence
that reviewers can trust.
232
00:14:03,820 --> 00:14:08,380
Reviewers need to know that the
test was built correctly for that
233
00:14:08,380 --> 00:14:11,730
particular task or to solve that
particular problem or calculation.
234
00:14:12,220 --> 00:14:14,640
And then finally, checkpoints
where judgment matters.
235
00:14:14,660 --> 00:14:18,960
There are certain moments that require
human judgment, and we need to have
236
00:14:19,090 --> 00:14:23,240
human on the loop type of pieces to
insert those gates where we need to,
237
00:14:23,860 --> 00:14:25,660
but of course, maybe not at every point.
238
00:14:26,510 --> 00:14:29,800
I thought both of these articles
hinted at very similar things.
239
00:14:30,070 --> 00:14:34,820
We're starting to move and shift
the focus of software development
240
00:14:34,850 --> 00:14:38,800
in different ways, and it's always
interesting and challenging to make
241
00:14:38,800 --> 00:14:40,940
these changes and to learn as we go.
242
00:14:41,390 --> 00:14:43,970
But it's a process that I think
will reap benefits in the long run.
243
00:14:44,604 --> 00:14:46,744
Sometimes to move forward,
you have to step back.
244
00:14:47,044 --> 00:14:51,514
It's a fine balance between progress
and coasting, but the brain sabbatical
245
00:14:51,514 --> 00:14:54,904
this week was just what I needed to
ideate and power forward with a plan.
246
00:14:55,534 --> 00:14:59,344
Then I had two articles in my browser
tabs that I read covering AI coding
247
00:14:59,714 --> 00:15:02,794
and some skills to improve the results.
248
00:15:02,864 --> 00:15:04,574
Thanks for listening, and happy coding!