Kyle d'Oliveira
๐ค PersonAppearances Over Time
Podcast Appearances
So that actually might be something of like, that comment shouldn't exist, and instead we should maybe extract a method that describes it better and kind of move in the direction of code describing itself. When you are implementing something that's specifically tied to code, it should probably exist at the code level.
So that actually might be something of like, that comment shouldn't exist, and instead we should maybe extract a method that describes it better and kind of move in the direction of code describing itself. When you are implementing something that's specifically tied to code, it should probably exist at the code level.
So if you have a module that you want things to include and developers need to implement certain methods in there, maybe the module should... define those methods and raise a not implemented error that have a very clear, this is what this method should do, this is what it should return, here are some examples, and just link to them in your own code base.
So if you have a module that you want things to include and developers need to implement certain methods in there, maybe the module should... define those methods and raise a not implemented error that have a very clear, this is what this method should do, this is what it should return, here are some examples, and just link to them in your own code base.
And so now when a developer looks at that specific piece of code, it's still tied to the code base. But all of that's you know, at the code base level, there still needs to be something at like a higher level. That's like a readme in the documentation or in something else entirely.
And so now when a developer looks at that specific piece of code, it's still tied to the code base. But all of that's you know, at the code base level, there still needs to be something at like a higher level. That's like a readme in the documentation or in something else entirely.
So we have stuff that exists in a readme that's kind of more about like process, but process is specifically related to our code base. So a good example of this would be, how do you do these asynchronous migrations? So this isn't really super tied to code because you might make a migration, but then what's the process of getting that live? So we have a step-by-step guide for at Clio.
So we have stuff that exists in a readme that's kind of more about like process, but process is specifically related to our code base. So a good example of this would be, how do you do these asynchronous migrations? So this isn't really super tied to code because you might make a migration, but then what's the process of getting that live? So we have a step-by-step guide for at Clio.
If you want to do a migration, here are the steps that you need to take. And as much as we can, we just link back to code rather than re-implement the code, but we'll also just describe things in English and offer templates there. And then we go one level higher to things that exist more at like a process level for the organization. So for that, we use a tool called Confluence.
If you want to do a migration, here are the steps that you need to take. And as much as we can, we just link back to code rather than re-implement the code, but we'll also just describe things in English and offer templates there. And then we go one level higher to things that exist more at like a process level for the organization. So for that, we use a tool called Confluence.
There's lots of tools that exist that kind of do similar things. But for those, that's things that exist outside of the code base. So if an incident happened, how do you do a postmortem or root cause analysis on that? And there'll be documents for that.
There's lots of tools that exist that kind of do similar things. But for those, that's things that exist outside of the code base. So if an incident happened, how do you do a postmortem or root cause analysis on that? And there'll be documents for that.
Or, you know, if you wanted to propose a new style of new feature that you wanted to get some buy-in using some new architecture, just wanted to make sure that the approach is correct. You can do like a design doc in Confluence and get people kind of bought in well before you've actually written the code. But once the code is written, that document is less relevant.
Or, you know, if you wanted to propose a new style of new feature that you wanted to get some buy-in using some new architecture, just wanted to make sure that the approach is correct. You can do like a design doc in Confluence and get people kind of bought in well before you've actually written the code. But once the code is written, that document is less relevant.
Yeah, so there's definitely things that linters aren't going to be able to do. A linter won't be able to tell whether this thing should be a model or a service class or something. It's not really going to be able to... It doesn't understand the business logic of it. So for things like that, we kind of have to rely on little handbooks of being like, here, we've codified our style guide.
Yeah, so there's definitely things that linters aren't going to be able to do. A linter won't be able to tell whether this thing should be a model or a service class or something. It's not really going to be able to... It doesn't understand the business logic of it. So for things like that, we kind of have to rely on little handbooks of being like, here, we've codified our style guide.
And we try to make sure that we keep that up to date. There are some things that we still teach through kind of tribal knowledge and code reviews. Like if someone submits a pull request and we notice it, we'll still correct it there and we'll do a lot of pairing. So we'll get developers up to speed by working with people as opposed to just going off on their own.
And we try to make sure that we keep that up to date. There are some things that we still teach through kind of tribal knowledge and code reviews. Like if someone submits a pull request and we notice it, we'll still correct it there and we'll do a lot of pairing. So we'll get developers up to speed by working with people as opposed to just going off on their own.
But I think this is just a learning process. Like we, I don't think we are perfect at getting developers onboarded and I don't think anyone is. And I think that's the important distinction. It's an iterative process.
But I think this is just a learning process. Like we, I don't think we are perfect at getting developers onboarded and I don't think anyone is. And I think that's the important distinction. It's an iterative process.