I’ve being bragging about our “Hour of optimization” for a while, and now I want to talk about it in more details.
The original idea was that I will try to allocate some time for random optimizations: since people were coming to me with all sorts of optimization questions for a while, and a question could pop up in a chat at the most inconvenient time, like 5 PM on Friday, I’ve decided to have some “office hours”. This attempt was an epic fail, because literally nobody would come with their questions at that time, and everybody continued to bring me their questions at any other day/time of the week.
Then I’ve decided, since I already have this hour on my schedule, and since we’ve got so many newly hired database developers, to use this hour to show some optimization techniques, and how they can be applied for our tasks. This idea was definitely more productive, and I felt like people are learning something. On the other hand I knew that listening to the great optimization stories is not enough, that in order to master any optimization techniques you need to apply it at least ones.
So I’ve started to contemplate making other people talk at the Hour of optimization. First I’ve begun to approach those people about whom I knew for sure they performed some cool optimization task during the week. I’ve started to ask them to talk about these tasks – no formal presentation, just a conversation, and please show your code. After each of those presentations I’ve tried to initiate some exchange of opinions, some discussion: which technique was used, did we talk about it during my tuning classes, did we use it somewhere else recently? I liked it a lot when almost everybody started to participate. I’ve also started to invite people from other departments, since I’ve learned that many optimizations are going on all over the place 🙂
After some time I didn’t even need to know for sure that “somebody did something”. I was just asking: who would like to talk at the next Hour of optimization? Sometimes it’s even better: a developer may approach me and say: I have something for our optimization hour!
Yes, one can say that that’s a job of a database developer – to optimize queries. But I think it’s extremely important to reflect on your work, to think about the patterns you are using, to connect the current problems with the previous similar ones. Also, it gives the new database developers this feeling of almost visible growth of experience. We are definitely growing our database developers on the fertilized soil!