Thursday, 30 October 2008

I want to explain my reasons of leaving EPAM with more details :
1) My new employer offered me slightly higher salary (+ the same amount of money while I'm in a business trip)
2) Soon I'll be in a very interesting business trip (starting from the midst of November)
3) They offered me a bigger project (a small part of a huge project) with new technologies and the ability to "grow fast" (if I'm smart and well organized).
4) And also we developed a smooth process of integrating me into their business process and this new project.

So, I'm sure that were sufficient reasons to leave.

Saturday, 25 October 2008

My last official day in EPAM Saratov

Today was my official last day in Saratov branch of EPAM Systems.
(sure, I'll be visiting this office because I still need to transfer my knowledge of some project, but nevertheless: today was my last day here).

I deeply appreciate all my friends here (I've mentioned only a few good people)

In Saratov:
  • Alex Guzev (my old friend and team-mate) - for good job which we have done here
  • Evgeny Fedotov - for very interesting talks about TDD (Test-Driven Development) and Design Patterns
  • Pavel Boykov - for very pragmatic thinking
  • Vladimir Pan - for very important criticism of my work
  • Ekaterina Ermilova - for a very good advice when I was in trouble

In Mogilev:
  • Siarhei Prudnikaw
  • Konstantin Talanin
  • Andrei Saperski

So let all good people be happy and healthy and all evil ones - go to hell :)

Thursday, 23 October 2008

How to manage your managers

Once I worked on a project and constantly was having a problems with tasks and my managers.



The situation was as follows: I was receiving my tasks from several managers and all of them was angry (to say honest they were pissed off :) ) that I was bad in task prioritising and sometimes missed some deadlines. Sure, I tried to say something like that: "It's enough things on my plate". But they were not happy anyway and each time I had to describe all my tasks and what's wrong with one more task in my list.


I think I was not too smart to manage this problem right and eliminate all unnecessary tasks.

So, here is the diagram of management which should be eliminated:


If only I was really smart that time I had proposed this method of management my activity:



But this method requires information about most influential manager (supervisor), which should be identified and used as a leverage to influence on other task submitters. So all would justify their tasks in the eyes of my supervisor before making an asignment.

Or another approach may be used:






As for my organization, a special software system could be used and I was just stupid that tried to work without yells of anger that anyone assigns tasks using email, phone or verbally.

Monday, 13 October 2008

Singleton in C#

Once I've found a Singleton pattern implementation in C#

class Singleton<T> where T : new()
{
    private static readonly T inst = new T();
    public static T Instance
    {
        get { return inst; }
    }
}

I was suprised by the elegance of this code snippet (and also it is thread safe!)

This code could be used as follows:

internal class Singleton<T> where T : new()
{
    private static readonly T inst = new T();
    public static T Instance
    {
        get { return inst; }
    }
}

internal class Single
{
    public Single()
    {
        System.Console.WriteLine("Constructor!");
    }
}

public class Test
{
    public static void Main(string[] args)
    {
        Single sss1 = Singleton<Single>.Instance;
        Single sss2 = Singleton<Single>.Instance;
    }
}

Friday, 3 October 2008

Oracle script for index creation

Once I had a task of creation a lot of indexes for Oracle DB (that DB had no indexes for columns used for table linkage).

I wrote a simple script to automate this task:



So this script built indexes descriptions which could be edited and executed.