Kyle d'Oliveira
👤 PersonAppearances Over Time
Podcast Appearances
Is this on MySQL or Postgres? This was in, we used Percona, which is just an offshoot of MySQL. So it'll also be different for between databases. So Percona might have different decisions.
Is this on MySQL or Postgres? This was in, we used Percona, which is just an offshoot of MySQL. So it'll also be different for between databases. So Percona might have different decisions.
Yeah. So a lot of this comes from tooling and education, right? There's as like senior developers or people who have just different experience from different places, we've accumulated huge amounts of knowledge and it's kind of all tribal.
Yeah. So a lot of this comes from tooling and education, right? There's as like senior developers or people who have just different experience from different places, we've accumulated huge amounts of knowledge and it's kind of all tribal.
And I think the, if you join a company that doesn't have a great strategy, a lot of the strategies for sharing that knowledge is like just work together, go submit pull requests and have them code review it and learn from the code review. And I think that's okay. You can learn that way. But there are better ways to push information to people. And this is a concept about just-in-time education.
And I think the, if you join a company that doesn't have a great strategy, a lot of the strategies for sharing that knowledge is like just work together, go submit pull requests and have them code review it and learn from the code review. And I think that's okay. You can learn that way. But there are better ways to push information to people. And this is a concept about just-in-time education.
So an interesting example of this can be through the linters. So I did a talk about this as well for the 2020 Couch Edition of RailsConf called Communicating with Cops. that focused on using RuboCop as a mechanism to provide education. I did a little bit of deep dive into how RuboCop works and how to build your own custom comp.
So an interesting example of this can be through the linters. So I did a talk about this as well for the 2020 Couch Edition of RailsConf called Communicating with Cops. that focused on using RuboCop as a mechanism to provide education. I did a little bit of deep dive into how RuboCop works and how to build your own custom comp.
But one of the things that we approach with at Clio is as people make mistakes and learn about bad patterns, we try to codify those patterns so that it's... It doesn't happen again, but people get education about it right as it happens.
But one of the things that we approach with at Clio is as people make mistakes and learn about bad patterns, we try to codify those patterns so that it's... It doesn't happen again, but people get education about it right as it happens.
A good example of this that is super-trivial and doesn't often bite people until there's just an unexpected case would be maybe the Rails convention of naming files. We've seen cases where people maybe make a user's model, but then make a typo in the spec. So rather than call it user spec, call it users, and it's plural, or something along those lines.
A good example of this that is super-trivial and doesn't often bite people until there's just an unexpected case would be maybe the Rails convention of naming files. We've seen cases where people maybe make a user's model, but then make a typo in the spec. So rather than call it user spec, call it users, and it's plural, or something along those lines.
And the spec will still run, but there might be some tooling that we expect to adhere to the Rails convention and it doesn't quite line up. So you can have a linter that basically checks the name of the files and the name of the classes and make sure that they're in line. And if not, alert people and do that as part of their editor or do that as part of them committing code.
And the spec will still run, but there might be some tooling that we expect to adhere to the Rails convention and it doesn't quite line up. So you can have a linter that basically checks the name of the files and the name of the classes and make sure that they're in line. And if not, alert people and do that as part of their editor or do that as part of them committing code.
And they get warnings and they get education as they're writing code. So if they just wrote something, they save the file, they get a little warning popped up being like, hey, you may have made a typo here. And this goes even to as far as behavior.
And they get warnings and they get education as they're writing code. So if they just wrote something, they save the file, they get a little warning popped up being like, hey, you may have made a typo here. And this goes even to as far as behavior.
If we know that there exists bad patterns, so for instance, making an HTTP call inside of a transaction, which we know is going to be potentially bad, we can actually automatically prevent that. And as soon as that starts happening, as soon as we're able to detect it, so it might be in a test,
If we know that there exists bad patterns, so for instance, making an HTTP call inside of a transaction, which we know is going to be potentially bad, we can actually automatically prevent that. And as soon as that starts happening, as soon as we're able to detect it, so it might be in a test,
might be as part of a linter, we provide that education right back to the developer so that they understand what they did wrong and the avenues of what they need to do to fix it. So now when a junior developer enters the company, they can actually just feel free to start writing code and write even code in kind of a way that maybe breaks some patterns.
might be as part of a linter, we provide that education right back to the developer so that they understand what they did wrong and the avenues of what they need to do to fix it. So now when a junior developer enters the company, they can actually just feel free to start writing code and write even code in kind of a way that maybe breaks some patterns.