My Beliefs for New Employees – Deliver Value in Your First Week at Work

There are some great posts about how companies find good talent. But in my opinion, there are less about how those talents‘ first day/week will help them become part of your Great Team. Over the years, I’ve found that we might miss some of those great talents, due to: bad-timing, adjustment challenges, expectations mismatch, etc. The more common misses are even worse, you might lose out on their greatness just because they feel they are new and still need to learn, or they just fear their first 90 days, which in the end makes their slow start their actual pace.

In order to cultivate a culture of growth – be able to maintain the velocity while bringing in more talent quickly. You need to have a good balance between new employees’ confidence and their outcome/value. You need to find ways to push them out of their comfort zone as soon as possible. Others might call it “throwing them in at the deep end” there is a thin line between the two. (http://mettahu.wordpress.com/2013/12/11/leaving-your-comfort-zone/).

The most pragmatic approach for all of the above is to strive to deliver a feature (value) in your first week (or two). This specific action actually triggers real discussions about the company flows, values and ways to improve it.  

Deliver Value at you first week at work

Deliver Value at you first week at work

Here are some of the values that I believe are the most important in order to have a good balance between delivering outcome/value and employee confidence.

Emphasizing these values in the first week at work will make new employees more productive and more connected.

Deliver Value

Don’t just talk, try to create and deliver something that your customers are interested in. Measure and learn their responses. Did they like it? e.g. sending emails, waiting for reactions – trying to see what people think about your new idea\concept, etc. Analyze the feature’s statistics, and see how your users interact with it.

Trust

The fact that I hired you, means that I trust you and believe in your abilities. Don’t be afraid of the veteran residents, and always treat your friends the same way. It is well known that every new employee has a lot to learn, some need to learn c#, others html – which are actually the basics). By letting them deliver a feature to your user – you (as the manager) give them the feeling that you trust them. After all, the fact is that you aren’t afraid to give them the responsibility to deliver to your users.

Collaboration

There is always someone out there that knows more than you. It is your job to find them and share your thoughts. It is also your job to make it easier for others to know you’re interested in something or passionate about a specific domain, so subscribe to groups that represent your interests. During the first week – I believe in pushing new employees to share their design with the company for review. Having a Release Demo or sending an Internal Press Release with the new capabilities – will help your new employees to learn by example/experience why it is important, and who the people are that are actually interested in those ideas/features.

Own

Great, you just delivered something to other people, you are the owner of it. Now it is your job to understand if it works or not, e.g. Didn’t get responses to your emails? Why not? Should you do it a bit differently next time?) The two touch points above trigger others to send feedback. This is the time that your new employee actually feels what it means to own a feature. They usually get to know their interfaces and stakeholders better and ho to deal with the hard/complex questions as well.

Get Out of Your Comfort Zone

So while reading the article of ninety days (the one above), keep in mind that we always want you outside of your comfort zone. Dare to Win. Engineers that are going through this process are way out of their comfort zone. If you’re not sure about it, try talking to them during and after this week. Ask the new employee to document everything new that they learned. Moreover, ask them to document fears they had along the way or things they believe/think should be different. Use this in your next 1on1 meeting. This is a great opportunity to talk about the basics and identify cultural gaps.
Pushing people to start providing value for  your product in their first week, triggers pragmatic discussions about the values, tools and the process. Let your new employees practice the full life cycle of a feature, from the time the product manager crafted the feature idea till it was actually released to the users and measure how they are interacting with it.

I urge each of you to try to find your main values, write them down and try to think how you can promote them to your new talent.

 

 

Using Trello to track Your Monthly Personal Goals

Following my last Post  about Setting Monthly Personal Goals, I got great amount of people that were interested to learn about the tools that I am using and how I am managing those goals. So… I am actually using Trello (private board), I chose this because it has access from everywhere (smartphone, tablets, PC, etc.), it is only mine and I can decide when \ if to share it with others (like my boss or mentor) in order to help me push myself harder. it is visual which make the tracking more engaging, at least for me.
I am Actually managing more than my personal goals but also my group goals, it helps me to create the same focus not only for myself, but also for my leaders. as you can see below, I am focusing on October 2013, you can see that I have 4 different areas that Excite me and I am willing to improve. (Branding Internal, Branding External, My Group, Agile) each one of them has its own steps for the selected month.

Focusing on October 2013 Personal Goals

Here is a snapshot for the whole board, with the goals per month, One thing to note is that I am not moving cards to DONE. The way that I am handling them is by having tasks inside and closing the tasks (see the 3/3 inside) this helps me to know what I achieved in each month. and helps me track my progress during the year.

Personal Goals Per Month

The Great thing here is that even if you suffer from slow progress at the beginning of the month (because you have tons of other “more important” tasks, you at least remember that you have other tasks that you are missing or want to accomplish. Later before the end of the month you will feel that you MUST do something, this will force you to start progressing with one of the tasks, although it feels sucks to be behind the schedule, it isn’t that bad. At least you are in a situation that you must act and prioritize, you will find out very quickly how many things you are doing that are not as important as you previously thought.

 

 

Setting Monthly Personal Goals

Are you a bad developer if you don’t take on side projects?
Everyone lauds engineers for programming nonstop, but I can’t seem to do things that aren’t discretely tasked out for me and on company time any more. I don’t want to work on github until late hours. Is this a side effect of working at a large company? Is this a sign that I can’t keep up any more? Burnout?  

–From Quora

I don’t have an answer for this question and I’m not here to judge for how good or bad you are. The fact that you have an account on Quora already ranks you higher than your friends, and proves that you are spending time to learn from the best.
But, I can offer a technique I developed that helped me become better (in addition to your day to day tasks) and push them out of the comfort zone (even if you’re only doing it during the office hours).

In one sentence – Having Monthly Personal Goals will help you to be more productive and focused

Let’s start by explaining the logic behind the technique

  • Most of the People are letting their day to day load to impact their personal growth
  • Everyday matters ,365 days a year, you must plan each one better in order to achieve more
  • Create a personal growth plan (inspired by the Agile Pirate)
    • Define clearly what are you trying to achieve (is it being a better father? is it gaining muscles? running faster? or just learning a new language?)
    • Set Clear Goals and track them on a monthly basis
    • Free time on a daily basis to make those dreams come true

Few rules to help you focus on your PERSONAL goals -
First rule – DO NOT set goals that you know your company will achieve anyway, the tasks that we get from our boss are going to happen anyway, we have to achieve those in order to get paid. most of the time we fail to achieve our personal goals.

Second Rule – Your Boss wants you to become better, even if he isn’t doing anything for you. or not saying it loud. Great managers will help their employee to define his next challenge, and will set goals and milestones to achieve it. if your manager didn’t do it for you, at least create it for yourself and get his feedback, you will be surprised to find out that he can help you make it and sometimes even more important, he can be your motivator on your 1 on 1 or your monthly checkpoints.

Third Rule – Being aware of your personal goals might help you find opportunities around the company, e.g. you want to write more on github, and you have a project for measuring site availability that you can take part of, suggesting your boss to write it on GItHub might kill two birds with one stone.

How to do it?

  • Define yourself the subjects\areas that you want to improve\learn (e.g. brand myself, Agile Coach, Vacation, etc.)
  • For each subject \ area – start to define a measurable goal (e.g. vacation = have a cool vacation with my son in the next 6 month)
  • break down to tasks – don’t leave it with high level goals, try to see what you need to do in order to make it happen. (e.g. passport, check the ski opportunity, take him to a local place to learn the basics, etc.)
  • spread those tasks over the next months (my assumption that it is easier to track months than weeks) moreover, this is not something that you are going to invest full days in, so you need to have bigger periods of time in order to make sure you won’t miss you goals.
  • Free 1 hour every day to run those tasks, I am using the slots that I used to be less productive, after lunch, at night before going home, etc.
  • Track your monthly goals – on a weekly basis

So, if you still don’t have Monthly Personal Goals, Start with answering the following questions: What do you want to achieve this year? and what is the first step toward it?

 

human-debugger.net exploring wordpress blog engine and new theme

Just finished the upgrade to wordpress with a new theme to make the blog posts mobile-friendly.
Would love to hear your feedback

 

5 Goals & Tips that will make you better developer in 2013

Back to writing,
Following my last year experience interviewing over hundreds of candidates I was looking for the ingredients for making you better than your colleagues.
I know that the internet is full of such tutorials, especially one minute before the new year’s eve, but I will try to add my own twist, give you some tips and share my own goals for each bullet.
The goals were designed to the LCD (lowest common denominator) – feel free to increase the goals as you go.

Rule #1 – Read blogs
I found out that the world is trying to tell you something which most of the time is that it has a lot of new things that you need to try and learn
So I have a huge list of blogs that I am reading on a daily basis (
http://www.google.com/reader) trying to maintain a long list and zero based unread posts on a weekly basis. Well I’ve crafted some tricks to overcome the huge amount of posts and the tradeoff between subscribing to everything and having the amount of posts that a human-working-being can read, but this is for a different post.

Goal: 30 minutes a day is a good place to start with and 2 hours during the weekend, so all in all 4.5 – 5 hours a week is the time for yourself to learn from others
Tip: 2 tools that will make your reading experience better during this the day –
http://www.hanselman.com/blog/TwoMustHaveToolsForAMoreReadableWeb.aspx

Rule #2 – View technical sessions\videos
I must admit, I am not a big fan of podcasts, don’t know why, maybe because of all the sponsors and chit chats (and the geeky jokes) during those sessions, but I really like watching live sessions\video.

Goal: 1 video per week.
Tip: Keep in mind that sometimes you will need to start 2-3 videos and turn them off. try to find at least one that you can watch till the end. I like to summarize it as well and save a reference

Rule #3 – after school curriculum
The logic here is actually the same reason that your parents sent you to learn physics, chess, judo, or whatever outdoor activity right after school – Here you are responsible for yourself. We have many options but as I see it you should at least choose 1 to push at every single minute.

  • Participate in open source – choose an open source project you feel connected to or you think you want to learn from. Being an active part in Open Source Community can help you learn a lot from others – e.g: how they work, standards, tools, collaboration and code-reviews by people that you will probably never work with.
  • Deep Dive into the details in writing your own solution for existing framework – trying to write on your own a replacement for nihberante (or at least part of it) or write your own linq-implementation or implement your own map-reduce instead of just using it can help you a lot ot understand the underlying implementation.
  • Learn a new framework\language – you can start with huge projects like: starting to use linux, perl, F# or smaller projects like use hadoop or lucene.

Each one of the three has its own benefits and you should try to play with all of them, but all of them are about practicing your coding-skills. Most of the people that read a lot, don’t find enough time to practice their coding skills, which IMO, might be a mistake.

Goal: have at least two projects for the next year

Tip: as a developer we tend to jump from idea to idea, project to project, committing one file in nhibernate, then learning mvc, reading about lucene, installing mongo, but not playing with them for more than few hours\days,

try to set yourself a goal for 3-6 months to play with it, I guess that all your time is during the weekend and nights, so you will need enough time to learn and play with it to learn whether it is good or not.

Bonus: If you are working in a company with more than 5-10 developers I suggest you track others commits on a daily basis. It isn’t going to be easy, but tracking commits and sending your notes (online) to others might help you improve your skills a lot (reading more code than you ever thought you can and letting others know what you think and sometimes argue about it)

Rule #4: Teach others:
Try to explain what you learn to others. The major problem in learning for yourself or reading alone is that you might not be able to get real world feedback about what you’ve learned,
Same idea as
rubber ducking or pair-programming – sharing with more will force you to improve the knowledge that you already have. Presenting to others will make you ask more questions and dig a bit more.
Setting a day for a presentation will also help you to make your goals public so others will anticipate it, and that won’t let you run away in the middle of something.

Goal: Set Two lectures for the next year
Tip: combine the two rules #3 + #4 to lecture on the subjects that you choose to deep dive. So if you decided to learn a bit more about F# – set yourself a meeting till the end of the period, this is some kind of a milestone for your knowledge.
Bonus: Write a blog, or share your weekly\monthly learning with a group of people – again for the same purpose. It will give you smaller milestones on your way to becoming an expert

Rule #5: read books
Don’t take shortcuts, IMO, reading only blogs might take you into the final point\decisions of someone else’s journey. While it can be good, I prefer reading the raw data.

Goal: 4 books a year
Tip:
Clean Code, Pragmatic Programmer, Applying Domain Driven Design, Framework Design Guidelines in .net
You can Track my reading list
here and here.

Would love to hear from you – what do you think about those Goals\Tips?

 

Releasing Features – 2 week process of building a product VS. getting feedback on your idea every day

Nir just finished coding his new module, simple read-only entrance page that renders grid of products with its name underneath, each name links to the relevant product page.
This feature was deployed a week later. After deploying to production we find out a new bug that wasn’t discover during QA phase.
Our team has 5 developers which each of them committed at least one feature for this release. After cursing and blaming I scanned the latest release notes to find the possible features we just deployed I’ve found out that the bug should be part of Nir’s implementation. of course that Nir already started his next feature and need to have an expensive context-switch to resolve this issue. Additional overhead which can’t be avoided in order to understand whether we need to deploy the hotfix right away or we can wait for the next version, not talking about synching between other bug-fixes.

Sounds familiar? Do you release versions too? Try thinking of releasing features.
Think about it, release the feature when it is DONE. don’t wait for others.


Releasing all features in one planned ahead release, check feature #5 – that will need to be queued till the next release\train

Releasing a feature when it is done. feature #5 will be released when it is ready – no need to wait for the next train

So, Putting the technical details aside and the context switch we already explained, try to think about your product managers – they’re going to love you.


Read more about ideas-code-data

In Delver we started our journey to continuously deploy to production. Read more here.

Meet Nir Altmark, a good friend of mine and a teammate at Delver he is a gifted developer who knows how to get things Done.
Nir just published two new posts about releasing faster and Building confidence between QA and Dev – well written. Read them to have a better understanding about this process.

 

AppHarbor & Continuous Deployment

This is my second post about AppHarbor, I suggest you to read my first impression.

I am reading a lot about continuous deployment lately and AppHarbor provide great implementation for simple web applications deployment.

  1. Source Control – Support Git to host your code
  2. Continuous integration – Check build per commit and run NUnit as part of each build
  3. Deployment Script – Each successful commit can be deploy in one click
  4. Rollback – Even after passing build and tests it can be that you still have bugs, so you can simply check older version and deploy it till you commit a fix


Code and publish is so easy, this is by far this better than using FTP for such things and the option to run tests makes it even more fun.


The option to rollback to previous commit\version is trivial but so important. Moreover, by clicking on “show” you can check the build log and see the tests-run.


You can click the tests link to read more about each test

Tip – UrlParameter does not exist:

When first trying to deploy my code it failed during compilation. I got this output:

Global.asax.cs(18,67): error CS0103: The name ‘UrlParameter’ does not exist in the current context

I am not sure why, it could be that I am using early beta (didn’t update for a long time), anyhow I fixed this by changing the global.asax.cs from using UrlParamters.Optional to “”. You can read more here: http://haacked.com/archive/2010/02/12/asp-net-mvc-2-optional-url-parameters.aspx

 

AppHarbor – The place for hosting asp.net (bonus: Git for newbies)

Everyone knows Google app engine But what about .net apps? Meet AppHarbor (Thanks Gadi)

So I wanted to give it a chance and after playing for less than an hour:

  • Enable you to build \ host \ deploy web apps
  • Provide both Version control and hosting service
  • Absolutely free (for now)
  • Damn simple

Short tutorial on how to do it:

  1. Create your appharbor account + create new application
  2. Hopefully you have Git installed (msysgit downloads)
  3. Init empty Git repository
    git init test1
  4. Copy your files to this directory (download from here: https://github.com/appharbor/appharbor-splash )
  5. Add files and subdirectories
    git add .
  6. Create your remote repository
    git remote add appharbor https://username@appharbor.com/test-178.git
  7. Commit your code
    git commit -m ‘firstcommit’
  8. Almost forgot, we are working on Git – so don’t forget to push…
    git push appharbor master

Till here everything should work but I had a small issue, got this error: error setting certificate verify locations:
I’ve found out that it is all about versions (git –version) – So check yours and upgrade if needed

Here you can find great cheat sheet for Git commands: http://ionrails.com/2009/08/07/git-commands-adding-and-committing-cheatsheet/

Btw, AppHarbor support Databases and Running unit-testing after successful builds – I will post about those features later on.

 

ReSharper bindings got mad

Lately my “find usages” (shift+F12) stopped working.

I tried to restore ReSharper again and again but it fails (ReSharper –> find usages –> General –> restore ReSharper)

I’ve found out that some other shortcuts still working (for example: find usages advanced, CTRL+SHIFT+ALT+F12)

Then I checked the visual studio binding (Tools->Options->Keyboard) and find out that ReSharper.Find binding is missing.
I thought about fixing this manually – but god knows what also is not working.

And then I found out the magical button called RESET -> clicking on this and running the restore ReSharper again solve this issue!

Cheers…

 

Subscribe to the new human-debugger @ feedburner

Following Oren’s post I thought it would be great to post my feedburner too.

subscribe to my new feed - http://feeds.feedburner.com/human-debugger
I
also changed the Rss-Icons to point to the new feed – so feel free to click them Winking smile

Thanks.