August 9, 2010 Career No comments
August 9, 2010 Career No comments
I’m preparing to the Knowledge Evaluation, which should let me get next step in my career. Today I spent about 5 hours on learning the Communication area of requirements for me. I read dozen different articles and reviewed many presentations. Very important part of communication is Team communication and Coaching, but I’m off for sleep. Indeed want to write something about it. You just need kick me to do that next week. Here in this post you will see some random lists on different communication items created or mixed from other resources by me.
All of us know how that is critical to be competent in written communications, specially with client, so while preparing I created some lists of things to be remembered.
Be clear in your e-mails:
Requirements
Software Requirements documents consist with:
Questionnaire
Meeting Minutes
Meeting minutes document what occurred at the meeting. They are not an opportunity to present a position or to add new materials and comments.
Format of Meetings Minutes should follow the agenda closely:
Always attach copies of materials distributed at the meeting or note where to find
them.
Proposals
Should have Executive Summary and answer for the following questions:
Conference calls
I’m sure that you can anourmous amount of information on how you can effectively provide your conference calls.
Here is my own list:
If this is bad post, let me know.
Since each software company wants to develop into huge one and be evident player in the IT industry, managers work on improving skills of the personal. For not English speaking country, as Ukraine, it is quite critical for the employees to know English well. That is why many companies are investing money on creating English courses.
Half of the English courses, I’m attending are left and I would like to provide some feedback that can be useful for my teacher, for people who are attending courses, and for anyone else who is working in outsourcing software company in non-English speaking country.
I’ve been attending regular Upper-Intermediate course for about 4 months and I see many advantages of it, but classes do not bring as much value for my work, as I’m expecting to get.
Difficulties
Why don’t classes bring enough value for my everyday work?
First and the major reason is that subject of our studies is completely unrelated to matters we are encountering during daily work. For example one of the latest chapters of our student’s book was “Literature”. For me it was the worst chapter in that book. I’m not keen on literature, so maybe that is the reason why I was so much bored with that chapter. Maybe, but if we take a look at this from other side asking ourselves question “Which value does chapter about literature can bring to software guys?” my statement about that being worst chapter doesn’t look ridiculous. Except of some out of the common situations, like dinner with client or library software solution, literature topics bring small value. I do not say that it is bad to have such topics; I say that to some extent it is waste of time which could be consumed by learning other more interesting stuff.
Gap between engineers and English teachers
More over I think that I understand why this gap exists – because people who created study books are from another life area than software guys are. They are academic guys, they write articles and some fiction stories. On another hand we have software engineers who develop programs and discuss them, who look bit prosy for others, but we know what we know.
For example, I often watch different programming video. Guru speak about new frameworks coming soon, about mature approaches to building software, they show best practices and design patterns. Surprisingly I understand absolutely everything from their speech (maybe 1-2 words per minute missed). Why? Because they operate with words and terms I’m using in everyday work and because I’m interested to hear things they say. On one of the lessons we had listening practice, where guy talked about the train in Asia, and how some lady brought insects on plate for eating and about wooden sticks and bla-bla… Question is: why on earth I need this?
Advantages, Improvements, Thoughts…
Is everything so much bad?
No, of course, no! Main point of my previous paragraph is that classes are not 100% concentrated on needs of software engineers.
These classes bring lot for my general understanding of English Language. I now feel more confident in using perfect tenses and different grammar. Classes are great revision of the grammar, that you learnt at some time and then have forgotten.
On my previous Performance Appraisal I got remark from client, that my English has improved. I should thank my company for giving me opportunity to learn English.
Improvements to regular courses that I see are:
Have brief review of the upcoming topics and find out if people are interested in them. If not maybe it worth to provide one-two lessons that do not belong to regular course, like one lesson of “listening & speaking” one lesson for grammar one for video, after that proceed with further chapters. Get feedback from people. Btw: I really appreciate, that my teacher asked for feedback. You rock! I know that feedback is the most reinforcing way of improvements.
Course I’m attending is comprehensive (learnt this word at classes :)) set of activities, but I would really like to see more speaking. Make people speak more, and provide feedback on that only after person finished. I would like to see it more regulated. Make everyone speak.
Make some friendly-competitive environment. I’m kind of person who would like to win some rewards, like “Best presentations deliverer”. For now I would win only “Most Thursday lessons missed” – 9AM is too early for owl.
Have some home activities that differs from usual, like ask for watching some film and provide review for the students. Or simply let people introduce and explain their duties in company. That should be interesting.
Additional learning is needed
As per me it is required to work on English by your own and simultaneously attend classes. How does it work?
English teachers are the best in their understanding of grammar. Particularly my teacher can explain tenses just terrifically. Your everyday work doesn’t require complex grammar to be used, but nothing restricts you from doing that. Simply start listening to your clients more attentively and catch the smallest matters they say. Write more clean and sophisticated letters. Now you have theoretical knowledge, go and use.
My list of activities I do for learning English:
Conclusion
English classes are definitely needed for the software company. And I really enjoy attending them, but hate that they suck time that I need for my sleep and dislike that they are not software-related, but I try to understand this. I see some improvements, biggest part of them are applicable to our courses, but not necessary near to wishes of other students. As always everything depends on your desire to work, so I have my own list of activities I do for learning English.
Please let me know your thoughts about said above.
August 7, 2010 Certification, Success 4 comments
Yesterday my company officially started new certification model, called Abiliton PRO. It was announced much earlier, but rewarding first portion of best company’s people happened only yesterday.
What is Abiliton?
Abiliton™ is a strategic methodology for software development lifecycle management, invented by SoftServe. Abiliton is a fully optimized approach to software development that incorporates a
superior framework of services and solutions to deliver maximum value
with each and every project. It is focused on selecting and employing the most talented and bright professionals, this way company can ensure clients that projects will be done in time and with best quality that can be provided.
Who are Abiliton PRO People?
It is clear that success of any software company depends on its employees and their growth. By rewarding the best of them company emphasizes knowledge and working capabilities of the employees in any area.
What does Abiliton PRO certificate require?
It is some set of requirements, which include your performance and knowledge. Performance is measured by regular Performance Appraisals, which include different areas to be evaluated, starting from your communication with client or within team, your result orientation, etc. finishing with applying your knowledge to daily work, like how are you in applying OOD or do you write high quality code. Knowledge, except of internal knowledge evaluations and performance appraisal, is ensured by external certificate. For example, Microsoft’s or Sun’s, or any else that are applicable to your position. This means that even Project Managers have there external certifications.
The rewarding event
President of company started his speech emphasizing why we gathered and what is the intent of rewarding. Also other guys congratulated us, after that we had some drink.
Here is me holding my certificate:
And close look at certificate itself:
Currently this certificate is requirement to get promotion. They say that they create more clear path for growing. Yes, and no. Many co-workers are complaining about that, and I understand them. Now it is required to commit extra effort in getting external certificates, but hey, guys, that is not so much difficult.
Honestly, I love to be recognized, and that is also part of my year goal and another mile stone on Developer’s RoadMap To Success. Why shouldn’t I love this? Everyone wants to be recognized and I would like to see people around who show desire to grow.
August 6, 2010 Coaching, DevMeeting, Presentation, Success 2 comments
Few days ago I started survey about improvements to Developers Meetings inside of my team, but I also announced it to anyone who can be interested in this via twitter and blog.
Top areas of interest are:
More details:
Top voted topics are:
My thoughts on top topics:
Because I’m not expert in Enterprise Design Pattern, it would take time for me to have some presentation on it. Either I will ask one of my colleges, who already read “Patterns of Enterprise Application Architecture“.
I just scheduled Developers Meeting on WCF for my team, and I see this to be “getting started” meeting where I’m going to talk about main concepts and basic usages. I’m going to implement some funny example.
Regarding GoF Design Patters with live code, that should be very easy for me. I already have a whole bunch of different examples on my blog, so I can use them and talk on them. I expect to have junior stuff on those meetings. I would like to train my capabilities in coaching.
Estimation should be meeting where I would like to talk around Fowler’s estimation deadly sins.
Refactoring could be divided in many meetings, like core refactorings but with live code and also “refactoring to patterns”
TDD – no slides. I remember when we had presentation on TDD for devs and it was with slides. I think that is the worst way to explain TDD. Yeah, might be that it is good to show flow diagram, but I vote for code.
Details:
Improvements section:
What is the most interesting about improvements is that people would like to see more real code. Hm, this should mean that either people are tired because of my simple “hello world” examples, or either they are very interesting in how we can use those things withing complex project, and maybe they are right, because “hello world” examples could be found easily over internet.
Details on improvements:
Also as you can see we’ve got 3 comments on improvements. First one says to view presentations before meeting. I would agree with this, but maybe I will work on more detailed agendas, which will be sent exactly before meeting. Please let me know if this is ok.
I’m really looking forward to provide lot of interesting information to my co-workers and work along with them to build solid and very knowledgeable base for our growth.
Will appreciate if you would share your thoughts on this results and thank you very much for participating in survey!
August 4, 2010 Errors, QuickTip 3 comments
Today, I worked with services logic that sends me light objects mapped from NHibernate entities with AutoMapper, and I got an exception stating that something is wrong with mappings. I wrote UT that reproduces my issue and surrounded code with try{}catch(){} to see exception closer, and it said me the same I saw. I took a look on Inner exception message and at first glance it was absolutely identical to parent message.
Then I spent about 10-20 minutes verifying all my entities, trying to find some stupid mistake and I would spend more if I would not take a look on Inner exception of the Inner exception and it was a bit different, saying that another entity mapping is wrong, so I took a look into Inner exception of it and so on…
So do you have an idea where did I stop? See:
So I went through 11 Inner Exceptions to get to the null Inner Exception :) Highlighted message provided me information I needed to resolve my issue.
Moral: Always take a look into Inner Exception!
August 4, 2010 Coaching, DevMeeting, Presentation No comments
As you might know, I’m keen on delivering technical meetings for my co-workers within one business unit in company.
It is very important to keep developers working on their knowledge and that is what my company is trying to do. It organizes special seminars on different topics for all of the offices, it also creates its own certification model to evaluate knowledge of employees, etc. , but before that all started my team had our own technical meetings called “developers meetings”. Those were providing by one smart guy, who has moved to another country, but since team felt sad about that we continued having developers meetings, so we proceeded with scheduling topics and assigning people to them.
Fun, but while it was like official, conference room was full of people and everyone was listening to junior talking on some design pattern. As I think everyone got disappointed by such meetings, but I do not say that this was bad idea to have junior talking on patterns. Turns out it has something good inside, because that person learns something for himself and trains to present. Sad but true, he is not able to deliver something properly to the big audience.
I know this, because I also was in role of such presenter, talking on Prototype without clear understanding of it and using sophisticated example from book of GoF – I simply did not understand it and I’m sure that none get something valuable for him/herself out of that talk.
My conclusion is that presentation should be delivered by person, who has really solid understanding of things he talks about. If it is small team and it contains juniors, he should start with ever simplest code. But since anyone should start with something, junior also should have presentation sometime. In this case I would recommend to make presentation for limited number of people, like other starting developers and few experts who are really interested in people growth.
Back to Developers Meetings we are having now, I really would love to see them thriving, but it requires investment of time from interested people. These months I’m trying to deliver presentations more often, and since we’ve got lot of new staff we can repeat old topics with new breath. How to know if developers want those meetings again?
To get some feedback I created survey, which I sent to my co-workers, but I would be really happy if you, my readers, will fill-in it also. (It shouldn’t take longer than 1 min.)
August 2, 2010 Uncategorized No comments
I listen to few tech podcasts, which talk on programming. I fill with them my time, when getting to the work or traveling somewhere. So no time lost :) Also except of getting good valuable information I sharpen my English. For folk who it trying to reach success in software development it is very important.
So here is my list of podcasts I listen to. Please note, it will not be comprehensive list of podcasts, since I do not listen to all. If you want to see more comprehensive list proceed with this link where Scott Hanselman mentioned his list along with links to lists of other folks.
.NET ROCKS
This is amazing podcast. Besides it brings great content it is also very fun stuff. Carl and Richard talk easily, they interview lot of interesting people. These guys might be surprised that someone wrote “.NET ROCKS” on his body being in mountains far from in Ukraine…
Continuation of the list (I might add more comments in future):
Hearding code
Deep Fried Bytes
Software engineering radio
Elegant Code
Chanel 9
Hanselminutes
[Edited]
This Developers Life
Let me know which of the listed you also listen and which would you recommend for me.
August 1, 2010 Opinion, Personal No comments
I saw guys, who bought T-shirts with inscription like “Follow me on twitter @andriybuday”. These weekend I’ve been on Rock Fest in Slavske and I did something more original. Take a look:
Not so long ago I created my twitter account. Indeed it brings me some value and I get fun with it. But many people get interested how that rubbish could bring any value for me or either someone else. Couple of my friends are really concerned about it and even laugh.
Which kind of value does it bring?
I decide whom to follow, this way I consequently decide which kind of information I will get. So if I’m following some programming guys, I obviously get bombarded with information on programming. The more information I get – the more information I process – the more value it brings. The only one important restriction is that information have to be useful.
So whom do I follow?
I follow lot of MVPs on .NET(C#) and other geeks, this way I get information about new technologies and opinion on them provided directly from best professionals around the world.
Also I follow twitter accounts of different interesting sites/organizations on programming. This way I instantly get information when new podcast is ready and I can immediately start downloading it for my listening. Also I’m informed if some new versions of some products are available. For example I get information that NHibernate 3.0 Preview is available. Please notice that since I’m following those, whom I chose, I do not get information about new version of Photoshop or something like that.
I follow friends and local programmers. Actually most of my friends are developers, but anyway following them keeps me informed about their interests and allows me know what do they do.
Also I follow just few News accounts to be informed about events from real non-virtual world.
Whom do I not follow?
Different bullshit first of all, then accounts that post advertisements, those who posts on not interested for me themes. I do not follow or start unfollowing accounts, from which I get twits too often or who mix good stuff and advertisements.
How do I decide whom to follow?
Decision if I should follow someone I make taking into consideration his/her/its top 10-20 posts, if there is no more than 50-60% information on tech or something I’m interested to get from that account I do not follow that account.
What do I tweet?
Of course information that is similar to information that I would like to hear from others. It is different links on programming, my opinions on some technologies or my thoughts on stuff I use right in the moment of tweeting. I also share my personal success notes like passing some MS exam or like fixing ugly bug related to some technology.
Reasons why I do use twitter
Concern about the time it takes
Yes, indeed twitter takes some time on responses and tweeting and it could even take away your concentration on work. So where from do I take this time? I would say: I do not IM others uselessly and I do not spent my time on youtube or other entertainments during the work, so I think that having few tweets per day is ok, taking into account the value it brings to me.
You decide your own if twitter is something for you or not.
August 1, 2010 Career, Certification, Success No comments
I already wrote some posts on certification, where I mentioned why do I need certification and which value does it bring to me. After those posts I almost have nothing to add.
But maybe few things…
How 70-505 differs from 70-536? Questions in 505 are not so wide and after passing 536 + reading training kit it is much easier to pass this one.
How did I prepare? As I mentioned in one of my blog posts, I read training kit on 505 exam. Reading was boring. Taking into account that I already have strength experience working with WinForms it was ridiculous to read about some things like adding controls or something like that. But anyway I found some stuff interested for me. Also I did some research over internet on how other passed this exam. Not enough information exist about this one. Maybe because it is not very popular.
Also I worked on training tests, including demo test on MeasureUp.
Passing Exam
As you see preparation looks very similar to what I had for my 536 exam but I was still worrying about passing exam, since I already failed it. That time I even did not read training kit and was sure in passing exam.
As I was afraid to fail it once again, while testing I was really concentrated on questions and. I PASSED EXAM with score 1000, this means that I answered correctly on all 40 questions. It was really surprising and is pleasure for me.
You can see my transcript using this information:
https://mcp.microsoft.com/authenticate/validatemcp.aspx
Transcript ID: 904316
Access Code: andriybuday
Effect on Career
In post It is time to get Microsoft Certification, I wrote that certification is important for my career growth. Actually in few words my company has schema that defines conditions to be eligible for promoting to the next level.
Here is my current status:
As you can see, I satisfy all conditions for being Senior.
I have just perfect Performance and it was noticed by my managers, also I worked in my company near 2.5 years (looks like this condition is bonus for me, since now it should be 3+ years), also my English is now evaluated as Upper-Intermediate, I did dozen of presentations, and finally I got that certification.
So what is left? – Knowledge Evaluation.
Knowledge Evaluation is meeting when guru guys bombard me with questions to ensure that I’m competent in areas, which are already defined somewhere in requirements. So my next step is to find out my weak areas and get better with them, so I will have more balanced knowledge. I now feel that in some areas I’m competent but some are still very weak, because I do not have experience working with them. You can expect that soon you will see posts on themes I do not know well, but I try hard to figure out them for myself and for you. Hope they will be interested for you!
Please let me know your thoughts on this post.
July 25, 2010 Design Patterns 4 comments
Imagine that your application is very complicated and it happened that you use two logging providers – one is Log4J and another is Java Logging. Your co-worker got great idea to have specification of which of the providers to use in configuration file. As you wrap all logging logic behind some ILogger interface, you also want to hide exact logging provider from client code and pass creating logic to some separate class.
For me this design patter is the most familiar and easiest. I’m sure that most of the readers have seen it many times. So the intent of the Factory Method is to hide exact class that should be created basing on some conditions.
In our example classes that should be created are Log4J or JavaLogging, they both implement interface ILogger, that is widely used in your application.
As you already guess it might be that in future you will decide to use another logging provider. As we already described in our scenario we read which logging provider to use from some configuration. For not exposing exact classes we delegate this work to LoggerProviderFactory. Here is usage:
ILogger logger = LoggerProviderFactory.GetLoggingProvider(providerType);
logger.LogToConsole(“Hello Factory Method Design Pattern.”);
}
private LoggerProviderFactory.LoggingProviders getTypeOfLoggingProviderFromConfigFile() {
return LoggerProviderFactory.LoggingProviders.Log4J;
}
What we are getting back from GetLoggingProvider method is interface. Factory Method decides which of the concretes return basing on the input parameter, which in our case is enum.
Here is implementation of Factory Method:
public enum LoggingProviders{
JavaLogging,
Log4J
}
// this is our factory method…
public static ILogger GetLoggingProvider(LoggingProviders logProviders)
{
switch(logProviders){
case JavaLogging:
return new JavaLogging();
case Log4J:
return new Log4J();
default:
return new JavaLogging();
}
}
}
Because my hardcoded configuration logic returns me Log4J and since implementation of LogToConsole of Log4J concrete logger looks like:
I’m getting this as output: Log4J: Hello Factory Method Design Pattern.
Here is my drawing try:
If you liked or disliked this blog post, just let me know.