Book Review: The Brand You

August 23, 2010 Book Reviews, Success No comments

I read this book on the fly. Couple of hours and done. Book is written in very specific way, that allows to read it quickly. It spreads very interesting ideas.

One of the main concepts is that you are General Director of your life and your name’s company and that is real place where you must do the best. You should have something like a new title of your current position in Company-You, like “Catalyzer of progress”.

Book just throws into you lot of gripping mottos that make you double think if you do the right things and if in right way.

Book’s author is “COOL” and he wants you to be “COOL” as well. You should make yourself a “dude with power” and then sell yourself with high price.

For some reason book is also concerned about building professional network. Intent is to be aware of the best people around you, so this could help you move forward. Few weeks ago I started looking around for cool people to have lunch with them. During lunch I’m trying to familiarize with that person and understand what does he thinks about the job. Mainly I talk with Software Developers. To some extent this helps me be known and get interesting information from them. Probably it worth to consider meeting with people of other professions.

Regarding what it talks about your job, ideas are great and are very applicable to my current position and current team work. I would love if we use following motto: “Work with what you have, and make it awesome‘. There is no room for complains, there is only room for getting it done.

Be the best!


No comments


Code Review – Way too interesting exception handling

August 21, 2010 CodePuzzle, CodeReview 1 comment

Today, I’ve been reviewing some piece of source code,  and found way too interesting exception handling approach.

In following code snippet we are trying to wrap existing exception with new one having more descriptive message and saving the stack trace of the original exeption. The way how it is done is just amazing:

        private void OnProcessingException(Exception exception)
        {
            if (ExceptionOccured != null)
            {
                try
                {
                    throw new Exception(string.Format(“Very descriptive message here.” + “{1}StackTrace of InnerException: {0} {1}”, exception.StackTrace, Environment.NewLine), exception);
                }
                catch (Exception outerException)
                {
                    ExceptionOccured(this, new ProcessorExceptionEventArgs(outerException));
                }
            }
        }

I’m not trying to blame someone. But sometimes people see so much more complicated and sophisticated solutions to problems that could be solved with one-two lines, that it makes me think, what we also do such things but on another – higher level.

Developer who wrote this code is trainee, so doesn’t mean low quality of our code, simple he needs more experience. My point is that we are also trainee, but on another level, and we might not see simple solutions as well.

So who will write me one-or-few lines of code that can do the same? Please do not hesitate :)


1 comment


Windows Communication Foundation – Getting Started – Developer’s Meeting

August 19, 2010 DevMeeting, Presentation, Success, WCF 1 comment

Hello, today I performed presentation on Windows Communication Foundation and it went extremely well. People were interested in topic and it smelled in the air.

Why am I happy with this meeting?

People were listening very-very attentively! It is the best gift to the speaker. Many thanks to today’s attendees! You made this presentation awesome!

What was the agenda?

For today I planned to have “Getting Started” session, where I decided to talk in general what is WCF and then proceed to basic concepts of it, like ABC.

In DEMO 1 (Damn it! Let’s write some code!) I created ever simplest WCF library and simple Contract that exposed todo list functionality. Then I brifly showed configuration and we started wcftestclient.

In DEMO 2 (Damn it! Let’s configure it!) I talked a lot about endpoints and how we can configure them. After I created a lot of them it was highlighted that changing the way how our service works by configuring and not changing the code is the key feature of WCF. WCF is indeed unified framework that allows us has one logic, but different exposing to the real world.

In DEMO 3 (Damn it! Let’s use & host it!) I created very simple console application that was able to send todo item to the service. It went with some exceptions thrown into console, but people liked it and besides after that I created SuperTodoServiceClient and it worked well. Also we voted were do we want to host our service for the long time. Most decided to host it under IIS. Till the actual hosting all went well, but then suddenly it didn’t work under IIS. Reason was very simple – since my machine has brand new OS, IIS was not configured properly.

What’s next?

Also I’m planning to have another meeting on the WCF. This time it will be “Advanced”. In that session I would like to show some real-world examples. Also I’m going to prepare to the 70-503 exam (on WCF), so I might get some interesting topics from the training kit to show on the meeting.

Presentation

More and more I start disliking ppt files. But anyway to have some visual appearance of presentation I created ppt file (maybe finished with it at 5:30 am so don’t kill me if it is “poor”). Btw, having ppt has some plus – I can put my blog’s logo and URL :)

View more presentations from Andriy Buday.

Guys, looking forward to hear from you! Will appreciate any of your comments.


1 comment


Book Review: It’s Not Luck

August 15, 2010 Book Reviews, Success No comments

So far I read another book on business and management. Now it is called “It’s Not Luck”, and is written by the author of “The Goal”.

Honestly, I liked this book, less than “The Goal”, because now I knew what to expect. I knew that all of the problems will be solved and that the hero will be promoted to the general director of Uni-Co.

The main and huge difference is that in this book author represent to us new way of thinking to resolve issues.

I will try to summarize it here from my perspective and my understanding.
So, first of all you have some conflict. You write it down with good formulation – that is the main thing you need to resolve. After, you should build some tree of dependent reasons-effects. To do that you need to write them all down and dive into intensive thinking to find out all of the dependencies. Book, states that in most cases reason of the main problem is just one of the reasons, you listed. If you commit lot of effort in building your dependencies tree, your reason will be obvious, so after that, you can proceed with building your plan to resolve that. Plan is path from root reason to the main problem, you should solve.

Book is very gripping and is written in way that gives us touches of both personal and business examples. I liked it, and maybe will try to use some of the technics to solve problems in my life.



No comments


Friday the 13th – Knowledge Evaluation

August 14, 2010 Career, Success 6 comments

As I promised, here is post on Knowledge Evaluation for the Senior level.

Definition of a Senior Level Developer

In most of the sources, Senior level is defined as level on which person is responsible for building complex components with minimal guidance and being unsupervised. Also person is an expert in language and has experience in business areas. I personally like definitions, where they additionally indicate person’s interest in software and bringing business value to the client.

So, who is Senior Developer?

Senior Developer is guy, who can and likes to code on any level of complexity, therefor he is able to build certain project parts, taking responsibility for the work being done. He can and likes to mentor and teach other members of the team; keeping his skills up to date and bringing this knowledge to the team he is leading by example.

For me being Senior Developer isn’t just label, that is indicated somewhere in the company by HR. It isn’t only list of responsibilities/duties I will be stick to. It is significant breakthrough in my career, that blesses me to move on. Moreover it is another step to self-actualize myself by accomplishing my life goals. Again, it is part of my RoadMap (I feel, that I need some post on it, but cannot till map is rolled in one or few places.)

Knowledge Evaluation

Except of taking into account my performance, company should always evaluate my knowledge to proceed with promotion.

My theoretical knowledge of programing and language isn’t under question

For some reason, my evaluators were not concerned about my theoretical knowledge of the core programming and language. That is why I got only few questions about database access, code quality and few other. Btw, for Med evaluation, most of the questions were exactly on core .net and surrounding things.

Non-coding aspects played more evident role in evaluation
Our meeting was about to find out if I’m able successfully communicate and work with team/client, if I’m competent in mentoring/coaching more junior staff, also how would I proceed with project management, like evaluating requirements, managing risks, doing proposals, and providing estimates on difficult matters. Of course there were some questions on configuration management and product deployment and brief go through surrounding project developing stuff.

Personal outcome

For me it was good time and my personal outcome for myself is that complete understanding of engineering management and requirements will come only with facing more real world situations, since simple theoretical knowledge isn’t enough.

Feedback

They did not give me official feedback yet, but I feel confident about positive one.



How will I proceed with new position?

First of all I will do all possible to not disappoint my management. Also I will work hard on keeping my brand up to people expectations and higher. Of course I will continue doing more than it is expected from me. 

Any congratulations and comments are welcome!


6 comments


KE – Day Fifth – What is left?

August 13, 2010 Career 1 comment

For the Thursday I had nothing planned for learning, since I spent my night watching Perseids out of the city.

Knowledge Evaluations is very close, so I just reviewed all of the items I should know for it.

To lot leave this post empty, I decided to write at least about something. I feel, that I still have some weak areas like Networking. But it turns our that for .NET Desktop Profile, I need only basic knowledge of it, like understanding networking itself, application layer protocols, IP, TCP, UDP, SMTP, and so on and so forth. So for my luck I have basic ideas how all of that works and glues the world together.

Networking

We often use these abbreviations, but do we always know what they mean?

local area network (LAN)
wide area network (WAN)
metropolitan area network (MAN)
personal area network (PAN)
virtual private network (VPN)
campus area network (CAN)
storage area network (SAN)
Simple Mail Transfer Protocol (SMTP)
Multipurpose Internet Mail Extensions (MIME) 
User Datagram Protocol (UDP)
… what more??

In the evening there will be post about how KE went and what are outcomes.

P.S. I feel myself very nervously at the moment…


1 comment


KE – Day Forth – Continues Integration

August 12, 2010 Career, CI, Opinion No comments

For today it was planned to learn SQL and Continues Integration. In this blog post I’m going to express few thoughts on Continuous Integration. Only thoughts, because you can read comprehensive articles on it over the internet, like this one written by Martin Fowler.

My definition of CI:

Continues Integration is the way to keep an eye on the system your are building collaboratively with other guys, when everyone injects their work frequently.

I took picture somewhere from web, since I like how it illustrates CI

Few main suggestions on introducing CI:

  • Make sure that all sources needed for build are withing one Repository accessed by developers
  • Any developer should be able check-out sources on virgin machine and be ready to go
  • Everyone does commits regularly (once a day as a must), if someone complains about this you should mentor and convince him
  • Build is automatically started on commit event
  • Build should be as fast as it can
  • If build couldn’t be fast you should consider sub-project builds and primary-secondary builds
  • Developer is responsible for his commit so he should verify feedback from build system to see if build was ok and if tests passed
  • Create continuous deployment process to the environments close to production, say once a day
  • Execute automated tests on deployed system
  • Consider using some CI engine, like Hudson

And some thoughts about blind architectors

When, I came to the project and I faced lot of difficulties that project had, like having sources under different repositories, having not automated procedure of builds, also when someone failed build, everyone knew about that next day and all QA work was stopped; lot of complains about merging sources; dry applying sources to diff versions procedures. None knew what is going with project till next day! I was junior at that moment I did not know about CI, but, hey where our architects have been? Thanks to efforts of new fresh architects we’ve got CI and it applies to our project very smoothly. What is left is to convince devs do committs more often and cover everything with Unit Tests. (But that has also something to do with our project specifics.)

Why didn’t they consider introducing CI earlier? This is mysterious question, I do not understand. There should be definitely something significant (like CI) that we can improve!


No comments


.NET Remoting Quickly

August 11, 2010 .NET, C#, HowTo No comments

As you may know recently I got junior to mentor him. In order to understand his capabilities and knowledge I asked him to do couple of things, like explain me one Design Pattern he knows, explain SCRUM and write the simplest .NET Remoting. So that was yesterday and today I verified that he failed with .NET Remoting, but it doesn’t mean that he is bad. He just need learn googling art more. I asked that for next day, and gave him stored procedure to write. Hope he will be smart enough to finish it till I come tomorrow from my English classes.

.NET Remoting

To ensure that I’m not asshole that asks people to do what I cannot do, I decided to write it by my own and see how long will it take for me. It took me 23 minutes. Hm… too much, but I should complain at VS about “Add Reference” dialog.

So here we have three projects in Visual Studio: one for Server, one for Client and of course Proxy class shared between client and server.

Shared proxy class ChatSender in ChatProxy assembly:

    public class ChatSender : MarshalByRefObject
    {
        public void SendMessage(string sender, string message)
        {
            Console.WriteLine(string.Format(“{0}: {1}”, sender, message));
        }
    }

Server (ChatServer):

    class Program
    {
        static void Main(string[] args)
        {
            var channel = new TcpServerChannel(7777);
            ChannelServices.RegisterChannel(channel, true);
            RemotingConfiguration.RegisterWellKnownServiceType(typeof(ChatSender),
                “ChatSender”, WellKnownObjectMode.Singleton );
            Console.WriteLine(“Server is started… Press ENTER to exit”);
            Console.ReadLine();
        }
    }

Client (ChatClient assembly):

    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(“Client is started…”);
            ChannelServices.RegisterChannel(new TcpClientChannel(), true);
            var chatSender =
                (ChatSender)Activator.GetObject(typeof(ChatSender), “tcp://localhost:7777/ChatSender”);
            string message;
            while ((message = Console.ReadLine()) != string.Empty)
            {
                chatSender.SendMessage(“Andriy”, message);   
            }
        }
    }

My results


No comments


KE – Day Third – Modelling: UML

August 10, 2010 Career, UML 5 comments

Today is my third day preparing to the Knowledge Evaluation. For today I had DB Design and Modeling. Modeling is about UML diagrams as it is mentioned in sheet I’m using for preparing. In this post I explained each of the diagrams with one simple sentence. Also I drew few of them, have no enough power at this point of time at night to continue and draw all of them. Hope you will like my drawing tries :)

UML: Structure Diagrams

Class Diagram – show classes and their interaction in details.

Component Diagram – represent components of the system, their relationships and contracts they use to interact.

Composite Structures Diagram – show collaboration of instances in run-time and communication links used.

Package Diagram – organizes other model elements into groups for easy understanding of the system.

Deployment Diagram – represent static state of the working system, including hardware and software located on it.

Object Diagram – shows snapshot of the instances of the system to represent how system can look at run-time.

UML: Behavior Diagrams 

Activitiy Diagram – represent workflow of the activities in the system, basing on decisions made.

Use Case Diagram – show usage patterns of the system, so they can ideally describe requirements.

 

State Diagram – shows all of the possible states of the object in the system and conditions when it can change its state.

UML: Interaction Diagrams

Sequence Diagram – show the lifetime of the components/classes and their interaction in time.

Communication Diagram – shows flow of the messages in the system and illustrates basic relationships between classes.


5 comments


KE – Day Second – Engineering Management & Requirements

August 9, 2010 Career No comments

Today is the second day when I spend some evident time on preparing to my knowledge evaluation. For today I had Engineering Management, Requirements and OOD.
Engineering Management is something that I read few articles on wikipedia and OOD is something that is not possible to learn per one night. So regarding Requirements I noted only few things.

Requirements

Requirements is very important part of the process of building software. The better and cleaner requirements you get – the better understanding of the system and its design you create; the better you communicate requirements to development team – the better product will be built. And what is the most important as per me – you can evaluate requirements before you started developing something and find out if it is feasible.

So how can requirements look like?

  • Business Requirement – defines needs from software that can help reach goal of the business.
  • User Requirement – defines how people (users) will interact with system and what should it do from their perspective.
  • Functional Requirements – define functional specification to the system, developers must build to satisfy the other requirements.
  • Quality of Service Requirement – performance, scalability 

Evaluating the Requirements for the Application

  • Requirement perspectives
  • Unambiguous
  • Complete
  • Necessary
  • Feasible


No comments