Monthly Archives: January 2014

Enova Tech Conference and my talk

Today was the day of the first Enova Tech Conf, and I’ve presented there.

Here is my presentation, and let me tell you, this is definitely the least technical version of this presentation I ever gave. That was on purpose, and I tried very hard to remove all technical details – I’ve already heard lots of comments to the effect that nobody can understand it, and my goal is actually to make sure people understand what I am doing. How else I could get people on my side?!

I was asked to limit my presentation to 30 minutes, and the “original” one is about 1 h 15 min (this will be the length of the talks I will be giving in Moscow and Saint- Petersburg at the end of February). So this was quite a challenge. I tried very hard but still ended up having it 35 min long (yes, including asking people questions and waiting for the answers, but). In spite of this, and in spite of the fact, that there was no time for questions after my presentation, I’ve received lots of compliments on it, including specifically my presenting skills, and also some position offers from other departments 🙂 I gave my usual “spil” about “do I really have to marry one person?!”, and assured my teammates the I am not leaving them for any treasures of the world.

I will definitely write more posts about this conference, but I wanted to post my presentation first, since many people asked about it.

And here is an extra bonus – a picture of me made by Preeti:

Continue reading


Filed under Companies, People, talks, Workplace

ACM Webinar: Computing Professionalism: Do Good and Avoid Evil…

On January 23 the ACM Learning Center was conducting a webinar titled “Computing Professionalism: Do Good and Avoid Evil”. It was presented by Don Gotterbarn, Director of the Software Engineering Ethics Research Institute and Chair of the ACM Committee on Professional Ethics. I’ve registered for this webinar, but then standard release happened to be on Thursday instead of Wednesday, I was not able to participate in real-time. However, the webinar was still available as a podcast, and I’ve listened to it the next day.

I found it incredibly interesting, and I am going to suggest to my squad to set up some time and watch it together. Here I am going to give a short summary of what it was about.

There are three levels of Ethics. First, it’s a Civil ethic, common to all people. Then, there is a Professional Ethic, common to all professional – since they have more knowledge in their areas of expertise, they bare more responsibilities to protect non-professional from harm. And the for computing professional there is a Computing Professional Ethic.

Computing professional may do unethical things due to a number of reasons – first, there are actual criminals, who can commit crimes using their professional knowledge, and there are laws for that. Second, people may do something unethical due to the lack of professionalism (do not have enough knowledge), and that’s why many states what to establish certification processes for computing professionals. Third – there are people who just do not care and not bother to think about the consequences of their actions.

Each computing professional should make sure (s)he acts in a professionally ethical way. The ACM Code of Ethics provides very detailed guidelines of what constitutes the professional conduct, and what are our responsibilities. I encourage everybody who consider themselves computing professionals to read it….

The presentation covers several development patters which seem to be purely technical, but may result in poor ethical choices, but I am not going to copy the whole presentation here :).

One thing I found particularly interesting, was a concept of reframing. Here is an example, which illustrates it. The city starts recycling program because of ethical considerations (it’s good to recycle). Then turns out, recycling is profitable, and it’s even better. But in a couple of years recycling becomes not profitable. By that time the frame changes, and the city cancels the program (business frame goals suppress the ethic frame goals)

There are many other interesting things in this presentation, especially when they talk about how we can decide, what is/will be ethical. So if you are an ACM member, and didn’t see this podcast yet – please do so, and please show it to your fellow co-workers.

Leave a comment

Filed under Uncategorized

Thinking about the books I read, and redefining the role of database developers

Right now I am reading the book “Agile Samurai”, which many of you have read already. I’ve already covered about 60%  of the book, and since my team has being agile for a while I do not expect any big surprises in the rest of it. I am not saying, that reading this book is useless, it’s just that I think I can share some thoughts about it, even although I am not completely through.

All these books which I recently read: Team Geek, Lean UX and now Agile Samurai talk essentially about the same concept: about not spending too much time on documentation, because it’s impossible to document everything before the actual work starts, about getting constant feedback from the customer, about being a team player, about willing to redo the work over and over, and other related things. Which is all understandable, however I keep thinking  about the role of the database developer in this process, and how everything related to the database can fit into this technology.

The special role of the database is, and always will be to be a shared piece between different applications and at the same time to be an application of it’s own. And because if it’s dual nature there will be pieces of work which can’t be done in small increments. As my husband put it, when we were discussing this issue: you can’t fly an airplane in small increments, you need to left the whole thing in the air at once.

SOmetimes I am not sure, whether this is completely understood by Agile Masters :). In the Agile Samurai book one of the conversations between the Master and the Student is exactly about building the Data Warehourse, and the Master is quite clear about it. On one hand, he is saying that it is possible you won’t be able to deliver something in each iteration, on the other hand, he states, it’s bad. At some point you can’t help but wondering, whether all customers have ADD and just can’t wait?!

I remember how almost a year ago I was reading the Agile Database Development site, and found out, that everything what mentioned there was only a half-solution this way or the other. If you search for “Agile Database Development” on the web, you will find a lot of papers and presentations, but when you start reading them – it’s just Git, pgTAP, etc., but not really development technique….

For the past couple of weeks I am thinking a lot about the ways to actually make database development agile, to classify different types of database development, to identify, what agile means for all of them (mostly I am talking about database design vs. database functions and packages development, but not only that). I know, that 1) the quality of the database design can’t be compromised 2) we still should be ready to make design changes at virtually any time 3) or work around them 4) by means of creating functions and utilizing our super-natural optimization skills 🙂

… as the book says, “I will reflect more on this”.

Leave a comment

Filed under books, Data management, Systems

The new function I am very happy about

When we’ve moved optimized_sum_accounst function into production, I’ve expected the advantages to be visible more or less immediately. I knew how many times the original sum_accounts function was executed, and  was hoping to see a drop in the number of executions at least two times. Which didn’t happen.

When I started to examine the application log and the statistical tables, I’ve realized, that the optimized function didn’t do much good, because it was still called way too many times. And I’ve also realized, that it would be impossible to make more changes in the right direction “invisibly”,  because this is just the way existing methods are structured.

From my analysis of the unfortunate execution of sum_accounts (as well as optimized_sum_accounts) I knew that the biggest consumer for them both is Installments Controller and the corresponding controllers in other applications. Which was no surprise – I run execution statistics for our new portal (the project we are working on) daily, and I knew for a longest time, that Installments Controller has the most average db calls per invocation, and should have being reworked. unfortunately, we’ve being postponing it for quite a while, since we had to deliver new features.

I am telling this long story for the sole purpose of making it clear, why I was so excited today, when we finally deployed a new API, which utilizes my function.  I knew it would be one of the biggest improvements I’ve made so far, and it was!

The average number of db calls for Installments Controller fall from 130 to 3! And the database execution time decreased from average 0.7 sec to 0.018 sec! Moreover, the difference between the “best” and the “worst” db execution used to be about 400 times, and now it’s about 20 times (which is still a lot, and I need to figure out, why, but much better!)

And guess what? In contrast to oec balances, this method is pretty much isolated, meaning, that this is more or less the only method which should be called from any installment controller, it just populates the whole screen. Which means, it should be easy to replace the current model methods in all applications with our new one!

I am going to work on this 🙂

Leave a comment

Filed under Data management, Systems