Two seasoned salty programming veterans talk best practices based on years of working with Laravel SaaS teams.
Joel Clermont (00:00):
Welcome to No Compromises, a peek into the mind of two old web devs who have seen some things. This is Joel.
Aaron Saray (00:08):
And this is Aaron.
Joel Clermont (00:15):
As I sit here looking at the computer screen, just over the monitor is a shelf of books, computer books. Most of which I have not read but they're there because I think they look cool or someday I'm going to like them. I know we had talked about a topic, not necessarily recommending specific books, but just kind of the idea of using books as a resource and even how it changes throughout your career and levels of experience.
Aaron Saray (00:46):
Well, first of all, I think you should know that those books are supposed to be behind the camera, so I can see how well-read you aren't.
Joel Clermont (00:53):
That's right. I just have a bare wall behind me now. That's no good.
Aaron Saray (00:57):
But I think that makes sense because as time goes on, I've noticed that I've reread the same books a couple of times. Also, fiction books. I've read a couple of books that I read in high school and I read them most recently, and I'm like, Oh, now that I'm an adult I understand what this was trying to say."
Joel Clermont (01:13):
Okay, sure.
Aaron Saray (01:13):
You end up getting some context in your brain as you age or as you get more experience or all these different things, right? So more experience, ageing, having just different insights to your own decisions change as time goes on. And then seeing all those different things, I think the same effect happens for programming books.
Joel Clermont (01:35):
Okay. All right, do you have an example in mind or are we going to avoid specific topics, titles?
Aaron Saray (01:40):
No, I'll give you an example. I mean, I can't remember the actual name of the book, so what a great podcast. But the slang is the Gang of Four. The Gang of Four Design Pattern book.
Joel Clermont (01:51):
Design Patterns.
Aaron Saray (01:52):
Yeah. It's a super big book. I had read that now I think three times.
Joel Clermont (01:58):
Really? Wow.
Aaron Saray (01:59):
The first time I read it was in college, and I'll be real clear, my first time going through college. I was doing computer science degree, I was learning Java and I read the Gang of Four's book. And at that time I was a hotshot, young programmer and I was like, "These guys, they're just making programming so boring and I can't believe this is all from the 70s." You know, all these different things. I was like, "I don't need this book." So I probably made it about halfway through. I'm sure you had experiences like that.
Joel Clermont (02:29):
Oh, yeah, for sure. Now, that particular book I don't own. I had to lean over and look at the shelf, I don't have it. I don't think I've read it. Is it kind of an encyclopedia format where it's like, "Here's a pattern, now we discuss it?" Or is there some sort of narrative or other structure to it? Or do you even remember?
Aaron Saray (02:47):
Honestly, I don't remember. I think it was the encyclopedia sort, but it's been a couple years since I read it again.
Joel Clermont (02:54):
Yeah, I think I flipped through it. That's the extent of my interaction with it.
Aaron Saray (02:57):
Yeah. At that point, I think I actually even sold the book. And if you think about it, we always joke about how we're seasoned and salty professionals, that would've been a long time ago and the book was pretty cheap. Now, if you look at those sort of books, they're super expensive. I wish I would've kept it, you know. But I then got it about 10 years into my programming life and I read it again. Maybe eight years. 8, 10. That was at the same time that I realized that there was some intelligence in all these design patterns and I've been doing it enough now that I recognized a lot of my work that they were talking about.
Joel Clermont (03:39):
You weren't like, "I'm using the strategy pattern." But you had encountered the same problems and maybe even kind of done your own version of that and then you reread it and you're like, "Oh, that's the thing that I was doing that solved that problem."?
Aaron Saray (03:56):
Yeah, the biggest one was probably the adapter pattern where it was adapting one service to another. Because at that time I was working with AS400 and the DB2 databases and SQL rights and-
Joel Clermont (04:09):
Are you sure you weren't programming in the 70s? No, I kid.
Aaron Saray (04:15):
You had to write little sort of adapters to make usage in more of the current toolsets. I started going, "Oh, well, this isn't new." This amazing idea I came up with is actually... Either I learned it or I somehow thought of it. But it was still a pattern that everyone used and something I should pay attention to. So that was the time when I went and took that book and I reread most of it. Again, I can't remember the format, so this is horrible.
Joel Clermont (04:46):
I'm not one to talk, I forget things all the time that I read. The knowledge is in there though, I have no doubt about that.
Aaron Saray (04:54):
Yeah, you take the knowledge in and then however it was delivered is... Which is what every author loves to hear.
Joel Clermont (05:00):
That's right.
Aaron Saray (05:00):
"I wonder what written there." I don't care.
Joel Clermont (05:02):
Exactly.
Aaron Saray (05:03):
I read that and at the time I also wrote my own version of the PHP design patterns book for Wiley and I used that book as a big reference to kind of convert some of these things from what... those were basically older languages or Java-specific things, over to PHP. And showing that, "You can do this in PHP as well." That also taught me a lot. You know, we always talk about how if you teach something, you learn it better.
Joel Clermont (05:34):
Right.
Aaron Saray (05:36):
Writing that book was the same thing for me. Then I think I read it maybe another 10 years after that and I had a different take on it yet again. Which was, most of these things are still great ideas but you have to understand why they're great ideas. At first, the first read was, "What are they talking about? These aren't good ideas." The second read was, "These are great ideas, I should use them for everything." And the third read was, "Well, most of these are good ideas but they're context specific."
Joel Clermont (06:11):
Right, you couldn't go too far with them. You're starting to recognize, if you just blindly like, "How many patterns can I shove into this feature?" That's probably not a great approach either.
Aaron Saray (06:20):
Well, it's interesting too, because if I look at that pattern in my own understanding of that book, I can see how it lined up with the years I was programming and what I was learning and how I was becoming a more professional developer. It also shows in my code, because I still have some code from years back.
Joel Clermont (06:40):
Nice.
Aaron Saray (06:40):
It also gives me a nice little reference when I'm looking at people's code for a code review or to hire them or something like that. You can tell that there's sort of a bell curve of complexity that tends to happen. People will develop really simple versions of things with a lot of redundancy, then over-architected things at the top of the curve, and then back down to somewhere in the middle at the sort of lower part of that curve again. And that's kind of where most people end up staying.
Joel Clermont (07:11):
No, that's a good point. I guess I'm starting to wonder, how many years out are you from your fourth read now? "Is there a pattern here? Is it going to get another read?" No, that's interesting. As you're talking, I was kind of thinking if there's any books like that for me. The one book that comes to mind... Again, this is not an episode about specific recommendations. But the one that I keep coming back to is actually not a tech book in the truest sense. It's called Pragmatic Thinking and Learning, and it's more about how to acquire knowledge. And it is written kind of with the software developer in mind. I mean, it's published by Pragmatic Press, which makes a lot of programming books. But I can see the same things there too.
I remember the first time I read through that and just this enthusiasm of, "I'm going to do all these things and I'm going to learn all these languages and I'm going to be a smarter person." I've definitely come back around now where it's like, I kind of want to get really good at one or two things. I don't need to know 12 different things and try to stay up with all of them.
Aaron Saray (08:20):
Yeah. I feel like I knew you during that time when you were learning everything and I was like, "Joel, settle down buddy." Just because I couldn't keep up.
Joel Clermont (08:30):
That's right. I mean, that's a different topic entirely. But in terms of that book, boy, the most recent time I read it was probably about five years ago. And I remember just having a very different outlook on it. Part of it too, it kind of aligns with what your experience was even though this wasn't a technical topic. But it was more of just, I think having developed more opinions and having more experience under my belt, I kind of approached it with more of a sceptical mindset. Not like, "Oh, I don't believe this." But like, "Well, why?" It's like they make a statement, "Really? Oh, okay." I think that's part of when you gain experience and especially if you reread a book, why you have a different outlook. Because you have more experience to compare it to and authors are not infallible. Or you may just have a different experience than they did, and that's okay, right? That's part of why we read and expand our horizons.
Aaron Saray (09:26):
So would you say the last time you read it, you approached it more in a pragmatic way?
I remember when I was a little kid, we were on a vacation or something. I must've been three or four because I can barely remember it. In the middle of the night, my mom jumped up and we were all in a hotel room I noticed that she woke up and she started beating on the window, it was cabin style. Just beating on and saying, "there's a fire, we got to get out." Luckily, my aunt was there too and she calmed her down and everything was fine. I didn't really think too much about that. And then when I turned about 20/21, I started experiencing things like that. It was basically hereditary night terror.
Joel Clermont (10:21):
Wow.
Aaron Saray (10:22):
So now I have to be very careful if I have guests over because you have to be careful how you dress. You got to be fully dressed because... I'm not kidding, sometimes I'll wake up in the middle of the night and just run into the hallway and be, "Ah." Because I think there's spiders or I think there's someone in the corner of my room. I think one time I was... I know this is very perfectly a nerd thing. But on the one side of the room, it looked like the room was turning into the Borg from Star Trek.
Joel Clermont (10:59):
Oh, sure.
Aaron Saray (10:59):
So I was like, "I got to get out of here".
Joel Clermont (11:03):
You know, I want to make fun of you somehow but I had a bout of that too. It actually started with a real fire. There was a fire in the apartment building next to ours so we got woken up by the firemen pounding on our door saying, "You have to leave." So it was kind of traumatic. And this was as an adult by the way. But there's a period of two to three years where if you touched me while I was sleeping and I was in the wrong realm sleep or whatever, I would just scream something. I wouldn't wake up at all so my poor kids would walk into the room and touch my foot and I would scream something. Yeah, they don't come in our room anymore. It's interesting.
Aaron Saray (11:49):
You can go and spend a few thousand dollars on books or you can spend a few thousand dollars on Joel and Aaron.
Joel Clermont (11:56):
If that sounds interesting, head over to NoCompromises.io and see how we work with teams.