Career

Leaving my first job – it was awesome time

November 15, 2011 Career 17 comments

*** NOTE: I’m not mentioning surnames of people and any trademarks or company names directly, you have to guess or just know ***
Today is going to be my last day with my current employer. I worked for this company for more than 3.5 years. During this time I worked with many great people and I absorbed unique experience. In this post I would like to express some of my thoughts about these years and to thank to many people surrounding me during my journey.
Don’t read this paragraph! What do I feel about leaving SS? Nothing special, like if this is something usual. But it is not! For some reason cannot believe this is reality and honestly maybe I feel myself bit stupid at the moment, I just had a glass of whisky for kick-off and I continue to write to finish this up. I feel that I will manage this if I continue writing. Definitely! …or I will get drunk. No way! I have code to commit today!
 

I BEFORE

It all started one day at University, when I took part in programming competition. I often took part in such events, because I love programming, but that day was different, not because we had difficult or simple problems to solve and not because we won or lose, but because of banal reason – sponsor of that competition was SS. I even didn’t understand what the hack is software company. They only asked to fill-in simple form and me as “real” student filled it with all the “rules”, knowledge in C# 10 out of 10, VS 10 out of 10 and other stuff and I wouldn’t even put 6 now.
Some time passed and I got e-mail in which I was kindly asked if I’m not interested in passing interview for developer position. I just said to myself like good American could have said “Why not?”.
I guess mine interviewer was in good mood that day or either, I was too much emotional talking about the applications I wrote in University about the “game of life” completely written in WinAPI, and especially about the database management system written in C#. Anyway somehow I intrigued him. He asked me what I like the most about programming. I don’t why but I said that databases are great thing (stupid me?).. anyway that answer decided where I spent next 3.5 years.
At that moment I was student and additional 350$ for me was a big sum to get each month (not to say that I had good scholarship, and during master’s year it was about 100$ and I managed to live for those 100$ easily). After I had some conversation with parents. They didn’t want me to work while I’m still student. They were worrying much about my future studying and asked me if I’m not willing to postpone this decision, but nevertheless I was mine decision and in the end it turned to be very and very good decision.
 

II THE BEGINNING

I was promised flexible time. During my first 3 months I got trainings on the product team was working on (I have to say this product is damn huge enterprise solution to set of complex problems). After 3 months nightmare started I had to work 8 hours a day and I did my best each minute, I was so worrying about completing everything in time. Everything was new to me – source control, team work, issue tracking, testing, and scary super-smart people everywhere. Honestly I was just very scared. I had girlfriend at that time, I’m now married on, very often she was called by me and often I said to her that I simply cannot solve something and I worry very much and that I probably worth nothing, and that it probably cannot be solved easily. I used to spend extra-time on solving something that now looks ridiculous for me.
First real tasks assigned to me were simple bugs and tiny enhancements to existing reports/assessments.
I was given contact to clients at that moment and first person from clients I talked with was Johnathan. In our conversation I was stupid enough to mention that I’m still student, finishing university. But he was wise enough to understand and he said (sorry cannot remember that precisely) “You started a big journey and I’m one to help you”. At that moment I understood that my clients are my friends. Thank you, Johnathan, for this.
I worked hard on everything assigned to me. Not me one, I thought that everyone around is just insane about making everything the best he/she can. I was inspired.
Than New Year came (2009) and we had celebration in some restaurant. I got an award there – “Rookie of the year 2008”. Below you can see me (sorry for my blackness “he-he”) and my manager.
It was my first work award and I’m really proud of it, because at that moment I realized I worked hard for something more valuable than money, I worked for respect of other people and I worked for our clients and for myself.
 

III CONTINUATION

After that I continued to work for the same company and for the same clients. Sub-projects only slightly changed. I had a chance to work with great people, with people who inspired me even more, especially as software developer. Derik was another person I really appreciate. I learned a lot from him. He gave me many advices that were very helpful and completely new for me from the root. Those advices were, and are, tremendously terrific.  Thank you.
I clearly remember Ant as wise and supporting product owner, I learned many things from you as well. Things were more personal and people-oriented not so “techi”, but I want to thank you for this.
I worked with different people during 2009 and 2010, some of them were very smart some not, some were extremely responsible and some not, some people didn’t know what they want from work and life and some knew. I just had been watching all that and learning and learning. I wanted to be like someone else and didn’t want to be like someone else.
During those two years I managed to be promoted twice up to senior developer, I started this blog at October of 2009, I showed myself as responsible, knowledgeable and  reliable developer but my learning curve started to be more domain related than technology related. See below.
Black line corresponds to my domain knowledge which continuously grew and red line corresponds to what I learned from tech perspective (at the beginning I got trainings on application along development started and then I started to learn less from technology than from domain). Thus I decided to change something.
 

IV NEAR THE END

I went to the Mobile team. It still the same company and still the some client, but just another project – mobile solution for same set of problems. But I think this was the best period of me being in this company.
I think Mobile team is the best team I ever worked with. Almost everyone is self-organized, motivated and very responsible. I really see fire in eyes of each person working with me in the “war-room”. We cook the best meat for the end-users which is friendly usable and “sexy” mobile application.
Taras, another TL (not usual team that had two TLs of course), very emotional person who knows his point of view, but always manages his and teams work the best. I especially enjoyed working with you. We had more conversations I had with other guys at SS ever.
Andriy, Olena, Pavlo, Roman, Sasha, Volodya, Yuriy (hope alphabet works this night) you are great people. Each of you has something special, each different, but all of you spent part of your life for this project, each worried about the work you do/did and I hope everyone enjoyed great collaboration we had.
Diana, Iryna, Oksana, Taras, Zhanna and many others who covered the stuff developers created or still need to create. Thank you very much for the great work and contribution. We all can create something brilliant only together.
And of course many thanks to our clients. In reality everyone I worked with from clients side were just amazing people. I know stories from other developers from other companies and completely other teams, they often complain at their clients. I think that you can only dream about clients my “big team” has. They understand you and they try to work collaboratively to produce the best results. Sheryl and Mark Mobile team loves you!
I would also like to mention that I had very good management above me. They are people who think wide, clearly and who see far-far into the future. They are people who kept me motivated and oriented for achieving goals. Vitaliy, Sania and Alex, thank you very much.
Whole “big team” as I call my unit of company is great family. Many people work here for 5 and more years, some more than 10 years. I hope I was somewhat part of this family for these 3.5 years.
 
I MISS YOU ALL!

I’M PROUD I’M SS!
 
——————————————————————————————-

V THE END

In Mobile team I simply continued to do my best just at another level of abstraction, doing some of the activities as technical leader, performing some bit more complex tasks, that I think could have been achieved by others. Sad, but as per me worst thing about this was this graph below. My red line didn’t grow up above black one.
I’m developer from my very inside. I’m not ready to shift my career to another direction and I cannot continue to learn domain I’m not ready to accept as my native. I want to continue as technical guy, but that is not the whole story.
Of course SS has opportunities for me. I bet they have opportunities to many of you. I wouldn’t leave this company if someone proposes me bit more money or bit more interesting project, because all this I can get here. So…
 

VI THE FUTURE

I cannot say much about it, because I’m not completely confident in its direction. I can only say that I have opportunities in another country (Western Europe) and I will start there as intermediate developer. They looked for talented developer, and I hope I’m such developer. They ensured me that I will have much-much to learn and I’m extremely glad because of this and and also I’m glad that I will have opportunity to live in another country to learn something absolutely different from life perspective. Also if everything goes well I will learn one language more – German additionally.
I didn’t waste my past time. I’m excited and scared about the future, but I’m looking forward it!


17 comments


Interview. Job of dream. Cheese, money and happiness?

October 17, 2010 Career, Opinion, Success No comments

July 25, I wrote blog post called “Interview” and I mentioned that maybe in year term will post yet another blog post with the same title. Now I’m writing post with almost same title. Is this due to the fact that I had interview again? –Yes and no. Actually I had two interviews since that time and did not post about them, and I will have two more interviews next week.
Real reason for this post is to extend the “Remember that you are also interviewing” section. I want to hear what you guys think about what we should ask on Interview to ensure that we get job of our dreams.

Job and happiness

I’ve been trying to find out for my-self what is the job of happiness. What does bring satisfaction from what we do.
I did not read huge range of articles and other resources on this theme, only couple of them. But besides of them I have my own opinion on this topic and will try to express it.
For example, this article states that connection between good job and happiness is overrated (?). As I understand from that article more evident role in job satisfaction is your own optimistic mood, which can be developed not only at your work but at home with you family. I agree with this, I now see that when I have better relations with my girlfriend I do have better desire to work. Also I disagree with this, because I think that everyday activities play very evident role in my satisfaction of my job. Currently everything is more or less good, but I do not get enough “I love this” work.

Cheese

But on other hand are you sure that your cheese is not getting old? And are you afraid to move to other position with new cheese? You have to read “Who moved my cheese?” This book brings into light some very important aspects of human fear to change things around even if their cheese is getting old or even if someone has moved it away. And I understand why those people are afraid. Guys like, Bodo Schaefer recommend to have something (ok, MONEY!) to ensure that you are safe. So unless you bought car or house in credit you are safe and can easily move to another piece of cheese. You know, I agree with them. I cannot buy house here in Lviv for money that I have, maybe some small car, but money that I have with bank interest and including my outgo is enough to live maybe 1-2 years without working at all. That is why I’m not afraid at all. And I would recommend you the same if you are still young – do not buy anything that is expensive and there should be NOWAY for credits!

Money table

Use following money table to find out if you have enough to feel free moving for better cheese; I have it automatically calculated in Excel spreadsheet:
You can put as Deposit MDeposit (e.g. 10000) -be honest
You need per day PerDay (e.g. 100) PerMonth=PerDay*30 -calculated
Per day to be happy PerDayHappy (e.g. 500) PayMonthHappy=PerDayHappy*30 -up to you
Ave. bank interest InterestRate (e.g. 0.12) MInterest=YouHave*InterestRate/12 -depends on banks
You are safe: YouAreSafe=PerMonth*6 YouHave > YouAreSafe ? (“you are more or less in good situation”) : (“Hey man, do you think about the future?”) -if you do not have enough to live half a year, something is definitely bad with your budget
You can live without need to work YouHaveEnough=PerMonth*12/InterestRate YouHave > YouHaveEnough ? (“you can stop working without impact on your life”) : (“it is too hard to reach this since needs often increase ”) months you have to wait to reach this goal:(YouHaveEnough-YouHave)/(MDeposit+MInterest)
You are free, or even rich YouHappy=PerMonthHappy*12/InterestRate YouHave > YouHappy ? (“hey! you are rich”):(“almost none reach this, since they start spending too much when they have enough”) months you have to wait to reach this goal:
(YouHappy-YouHave)/(MDeposit+MInterest)

What do I recommend to help you find out if some job is for you?

Create description of your dream’s job in couple of sentences. Then try to build questions that will help you correlate their offers to your dream.

Job of my dream

I work with newest technologies, designing and constructing architecture/technical approaches with professional team. In my team I have world level professional(s) from whom I can learn something new and really valuable, at the same time I see them and/or other team members to learn from me. All team members are open-minded passionate developers/QA/SM/PO. I’m more or less independent in my work organizing; customer trusts me, so I can do the best for them without their direct interventions. PO, representing customer, really knows requirements and goals of project and doesn’t push team to figure requirements for them. My employer is not afraid to invest money into refactoring/research and into team needs. They express respect to their employees and listen to them. They keep an eye on the project’s future and employees satisfaction, they do the best to keep employees motivated. Employees at the same time are really dedicated to help their customer/employer reach company’s goals.

Questions:

  1. What do you like about working for the X company? Why should I like it as well?
  2. What is the overall goal of the project I will be working on?
  3. Is project new? What are terms and team size?
  4. What are my duties for this project? In percents?
  5. What are the most challenging aspects of this position?
  6. What technologies will be used?
  7. Do you use recent approaches in software development?
  8. How to you measure code quality? Unit Testing? Code Coverage? BDD?
  9. Would it be possible to see piece of already written code?
  10. What methodologies are used for this project?
  11. With whom will I be working most closely? What is their professional level?
  12. Who is my supervisor? To whom would I report?
  13. Will I supervise someone?
  14. Are you interested in my professional development and how will this appear?
  15. Do you invest in refactoring/research?
  16. Do you accept initiative from your employees?
  17. Will I have many meetings per day?
  18. Is there anything else that prevents you from hiring me?

Also I was looking for some other good lists of questions. One is more general and other is awesome list of questions from stackoverflow.

Awesome questions list from stackoverflow

Here below in dark-blue is complete list of questions composed by Rob Wells on stackoverflow. This is copy-paste (!). All rights are reserved for stackoverflow and I do not pretend to be author of any part of it. Please follow this link to see original question.

Questions for development:

  1. What software development methodology do you use, e.g. Waterfall, Agile, Scrum, XP?
  2. Is training provided for the methodology being used?
  3. What parts of the software development life cycle do developers do?
  4. What is the breakdown of a developer’s day, e.g. how much time for support or troubleshooting, how much time for coding, analysing requirements, etc.?
  5. How long does your design, code and test cycle last? Less than thirty seconds, less than five minutes, less than ten minutes, etc.
  6. Do you encourage refactoring if sufficient unit tests exist?
  7. What test bench do you use?
  8. Do you have coding standards?
  9. Are the standards revisited or are they just left, as written, i.e. “carved in stone”, in 2001?
  10. Do you allow time for peer reviews of code?
  11. Can you give me an example of a code review that is done here. Are there different levels of a review, e.g. new system is handled in a day long explanation compared to a quick bug fix that is needed ASAP.
  12. Does the project use continuous integration?
  13. (If they use continuous integration) does your software build and test cleanly right now? What’s the current successful build rate?
  14. Does the project have regular regression testing?
  15. Are metrics kept for the code base? SLOC? Numbers of unit tests? Numbers of regression tests?
  16. How are conflicts resolved between testers and developers? I ask this because there have been times in the past where I see finger pointing of “Well, I interpreted it this way and he interpreted that,” enough to make me ask how is this handled.
  17. How are requests for large changes to be done quickly handled? For example, someone requests a web application that would normally take 2 weeks be done in 2 days for a prospective client that could be a big account.
  18. Do you use a software repository? (If the answer is no, walk out).
  19. What is the budget for tools?
  20. Do you offer your developers any sort of allowance to order technical books?

Questions about estimating:

  1. Do you have a standard template for estimating development effort for new work to make sure nothing is overlooked?
  2. A process for obtaining such an estimate?
  3. What percentage of contingency do you build in to your estimates?
  4. Do you allow time to revisit

Questions regarding the team:

  1. What has the team achieved so far?
  2. What has the team learnt?
  3. What aspects of the team would you like to change to improve the team?
  4. What’s the team spirit like?
  5. Where do team members generally have lunch?
  6. Does the team go out together every now and then?
  7. Do you encourage team members to give presentations to improve their abilities?
  8. Do you do the same with writing?
  9. Can I please speak informally to some of the people in the team I’ll be joining? (Useful to get beyond the management BS and get a feel for the real deal.)

Questions regarding personnel type policies:

  1. Does the company have a training policy?
  2. What were the latest courses that the company sent people on?
  3. Does the company have a mentoring policy?
  4. What kind of feedback mechanism is there for determining employee performance, e.g. how often is my work evaluated and suggestions given on where to improve?
  5. Is there a dress code? Do employees work a fixed set of hours?
  6. Is there any on-call time as part of the job?
  7. Do you encourage employees to set goals and provide incentives to meet those goals?
  8. Is self-improvement a value common to this organization?
  9. What’s your company’s Internet policy?
  10. What sites do you block? (I’ve worked at places where you can’t access various good technical sites.)
  11. Can I work irregular hours if I need to? For examle, at night, all the week’s hours in 2 days?
  12. Can I work from home?
  13. Do you have any policies against employees listening music while they work?
  14. How much work do you expect developers do outside of the normal business day?

Questions about management:
For the manager:

  1. What is your style of managing?
  2. How s/he motivates people
  3. How problems are handled (I leave that open-ended to see what sort of problem they assume–relating to those under them or those over them or issues unrelated to people at all, and then ask about whichever they didn’t cover).
  4. What the company does to help develop their managment skills
  5. What motivates them
  6. How much they work (typical hours/schedule)
  7. What accomplishment they are most proud of (I don’t specify work-related, and if they mention something besides that I ask about work as well)
  8. How they develop team cohesiveness and what they’ve been able to accomplish in that area
  9. What they see as the next big step for the team, for the company, and in dealing with projects or whatever the main mission of the group is

Then I ask them to answer the same kinds of questions for the company as a whole, explaining that I consider there’s such a thing as a company “personality” that usually emanates from the top. I ask how that has changed over the years (if they’ve been there very long).
Further questions on management:

  1. What’s your staff turnover rate?
  2. What’s the worst project you’ve ever been on here?
  3. How long does the typical hiree at my level stay with the company?
  4. How are projects categorized, e.g. changes compared to a small project compared to a big project?
  5. What kind of management is there within the company, e.g. is the development manager also the project manager or are these separate people usually?

Questions on the work environment:

  1. Can I please see my workplace?
  2. And, more specifically, can I see the desk where I will be working please?
  3. What’s the company’s policy to downloading software? (I’ve worked at places where you can download zip so it takes a week to get the help team to download the hex editor you needed yesterday.)
  4. How locked down are the PC’s? (I’ve worked at companies where the PC’s are so locked down it’s almost impossible to do any work e.g. no access to command prompt.)
  5. Do developers have admin rights on their PC’s? (Rule of thumb – The more locked down the PC, the worse the company. The real development sites I’ve worked at give all developers admin rights. They trust and empower them with corresponding rises in productivity.)
  6. What software is loaded by default on a standard developer PC? For example, can I use Eclipse or am I condemned to Notepad hell).
  7. Can I choose my own development tools?
  8. What sort of equipment do you provide to your developers? For example, are all developers given a laptop to work with, do they have access to two monitors, are they allowed to order other equipment (e.g. ergonomic keyboard)?

Miscellaneous questions:

  1. Why did the guy I’m replacing leave?
  2. How can I help you?
  3. What are your biggest needs right now?
  4. What kind of things would you want someone in this position to do?
  5. If you choose me, are there things I could read about your problem domain that would help me be effective on day one?
  6. Why the interviewer(s) work(s) there (or likes working there, or continutes to work there, etc). Their responses usually give me a good feel for the company.

Hope you liked this blog post. Looking forward to hear from you guys!


No comments


Career Plan For Software Engineer. Do You Have One?

August 24, 2010 Career, Success 21 comments

I’m confident that every smart human should have a plan for life, part of which is a career plan. Most of us spend more than half of our lives working. Did you ever think about that? We spend hours working on some projects, solving some problems, interacting with colleagues, creating and modifying things. Are you dedicated to what you do? If no, I have a question for you: Why do you work on xyz? Really! You may say that you could possibly work with more pleasure on another job. If that is your answer, why don’t you plan to change your job?

If you are dedicated to your work, I would assume you want to grow. Right? Do you have an idea on how you should proceed to reach your goals? Do you know exact steps to take and your knowledge gaps to overcome? No? How then can you be sure that you will grow to more respectful position, a position in which you are recognized and admired?

I always ask people about what motivates them and what they would recommend me to do to motivate others. Answers I get are different in formulation, but they all have the same core elements behind: possibility of career growth, recognizing, achievements, possibility to chief. Main question to you is this:

What do you do to reach your professional and life goals? Do you have a plan?

If you are not sure about what you do or what you should do, it is exact time to build your career plan.

Career plan

Career plan is list of positions and actions you should take in time to reach your short- and long-term career goals.

How to build your career plan?

First of all, building a plan is a great exercise and a process of establishing steps you should perform. The process itself allows you to have a critical view on your current career situation. You should know where you are right now, where you want to be and what are your abilities/skills. Answers for those questions are prerequisites for building a good career plan. If you have no clear vision on where you want to be, don’t be upset. Work on that. Try to write a few words that describe you after you as if you already reached your goals. How you see yourself in future might change, but at least you have some kick-off list. For me the list is something like “MVP, Consultant, Architect, Author, Community developer”. Also thinking out loud: “own company, another country, being manager, etc”

After you have some preliminary plan, you can refine it by removing less important items and by adding some additional ones. Also you can rethink some things and then rethink again and rethink few more times. In the end you will have some kind of more or less good plan. But do not expect it to be you final plan. I would say that you should always take a look on it and consider if anything requires improving.

Benefits of having a career plan

  1. Clear vision of the path you want to take.
  2. Possibility to track your progress to avoid getting stuck.
  3. Something you can use when you are trying to establish your life priorities.
  4. A way to communicate with your management on your career and get feedback.
  5. Extra confidence in your life.

You are now different!

After creating your personal career plan you will be different from your co-workers, who just continue to work blindly. There are people who work just to get enough money for a living. This cannot be considered as success, clearly not for me and hopefully not for you. Some other people probably think that simply working hard will lead them to success. Hey guys, just don’t think so! Yes, you are right that hard work is needed and respected, but there are definitely other things you have to add to bake a cake!

Once you have established where you want to be it is time to understand the path.

The Path

Positions path

Normally positions for Software Engineer start with these three:

  • Junior Developer
  • Intermediate Developer
  • Senior Developer

This is the most general part of a path I see in all software companies. What do we have after that? It really deviates from company to company, but generally speaking this depends on the factor of your interaction with other people, with technology and with the company.

The more you interact with people the more you become leader of team, say Team/Tech Leader. The term might differ, but I like the “Technical Team Leader” one. Even more, if you would like to take more responsibilities you can switch to managing positions and become a Project Manager right after being Tech Leader or Senior Developer.

The less you interact with people the more you become an expert (it is even possible to have such position officially in tech industry). Expert is the person with whom others consult and get advise from.

The more you interact with a company the more you become CEO, but depending on your company’s size you might have few more steps here. Of course, position’s title can differ as you climb the career ladder.

Summarizing, your further steps are in one of the following areas:

  • Technical Team Leader – a balanced position that has something from technical and management worlds
  • Expert – way to consulting and architect positions
  • CEO – way to management positions and eventually CEO

Goals in the Path

Why did I say “positions path”? Because this is not whole representation of the path. A good path should also go through you own personal ambitions related to your job to lead you to the established goals. What do I mean by this? Since I want to be recognizable community developer and known over the world, I should commit a lot of efforts in maintaining this blog, in speaking at events, etc. This has no explicit impact on my career growth, but believe me it has huge and tremendous indirect impact. Also, I would love to write a book and I’m planning on it. I still do not have a clear idea on what that book will be about. I only imagine something either on tech or on success. What matters is that I’ve planned it and I’m proud of it. Some remark goes here. I mentioned about this to my friend and he was laughing at me because I want to write a book and planned it but I do not know what about. I can express my arguments against it here, but would love to hear from you. [Edit 2015-Sep-16: I’ve released a free e-book on design patterns in my native language in 2012.]

My personalized “Developer’s RoadMap to Success”

My company as one of the leading outsourcing companies in Ukraine is trying to make employees happier with helping them in their careers. They create more positions and they also establish processes that allow employees see where they can move. (I hear you scepticism here…)

It is well known that one of the biggest motivation engines is visibility of a career growth. Since I’m considered to be a perspective employee (at least my employer thinks so), me with my company almost finished building my personalized Career Plan. It is the path with steps I should take to move from one position to another.

Of course, the company doesn’t care about my non-career goals even if they are dedicated to my personal improvement. It is the reason why the company has only included official positions in my career path. Highest position they’ve planned for me is to be one of the tech chiefs of one of the divisions. Highest position means a lot of interaction with clients and huge responsibilities in developing and advising on solutions. But it doesn’t include any of my desires to become community developer and stuff I would like to do to achieve my other goals.

So here I will present my own Personal Career Plan that also includes a lot of other things. I would recommend you to build something similar. On the left you can see path I built combined with some positions, certificates (officially needed for those positions). On the right side you can see my table of “Where do I want to be in a year“. List of  “where I want to be” is really powerful tool if you keep doing it year after year. (here is list for 2010 & here is list for 2011) [Edit 2015-Sep-16: To see complete list of year plans click here.]

A concrete career plan

You must be thinking now: “Boy, hold-on, hold-on! It is way too optimistic path. Are you kidding?“. I would answer “Shut-up! I know my path and will do my best to stick to it. And, btw, where is your plan?

Even I realize there is some overestimation of my possibilities/skills/efforts I would love think I can do all of this. Thinking in such a way is movement to The Success!

[Edited 2011-Jan-10: grammar fixed and few links added]

[Edited 2016-Jan-20: some grammar fixed]

2016 Follow Up?

As this post receives a lot of traffic, I decided to fix some grammar. I’m not changing the story though. I want to keep it the same so I can compare my old plan with my current achievements. Probably it is something you would like to know as well. Therefore I’m planning to write a follow up post in coming months.

2021 Update

Just for fun, here is my 2021 career update: I’m a Senior Software Engineer at Google working in Vancouver, Canada. Before Google I worked for Amazon as SDE3. I don’t know if this is an indication of any success or progress. I definitely had greater plans for myself in 2010. My ambitions subsided significantly and I tend to appreciate diversity of life much more than before. I feel like I probably need a new plan.


21 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


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


KE – Day First – Communication

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:

  • Keep in mind your reader
  • More verbs instead of nouns 
  • Concrete, not abstract 
  • More active instead of passive 
  • Making sense – managing stress (Put old or known information at the beginning of the sentence and new or complex information at the end)
  • Be simple (Foggy phrasing often reflects foggy thinking)

Requirements

Software Requirements documents consist with:

  • Introduction (Purpose, Scope, Definitions, References, Technologies, Overview)
  • Overall Description (Use-Case Model, Architecture Diagrams, Assumptions and Dependencies)
  • Specific Requirements (Use-Case Reports, Supplementary Requirements)
  • Supporting Information,
  • Concerns if any

Questionnaire

  • Short
  • Target carefully
  • Start with interesting questions
  • Limit, or avoid, the use of open-ended questions
  • Put your questions in logical order

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:

  • Date & Time, Place of meeting, Attendees
  • Purpose of Meeting
  • Each issue addressed and highlights of the discussion
  • A notation of any materials handed out at the time
  • Outcome or decisions made

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:

  • Why are you doing this project?
  • What will you be doing?
  • How will you be doing it?
  • Who will be doing it?
  • Where will it be done?
  • How long will it take?
  • How much will it cost?

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:

  • Be always prepared for the call. Have pen & paper handy.
  • If you do a call or if you receive a call, always know what is the purpose of it and if right persons are selected.
  • Be honest and oriented to help, never say that it is not your job or policy.
  • Track if meeting goes by agenda, direct and drive when needed.
  • Try to exceed expectations, ask something like “While you’re on the line would you like me to…”
  • Always have summary of the call outcomes in the end.

 If this is bad post, let me know.


No comments


Exam 70-505: TS: Windows Forms Application Development – PASSED

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.


No comments