Software Development: Key Functional Staff

“People may, but good data never misleads”

Let’s first see what I would want in a team member before going into analyzing one on the basis of data:

My Best Individual Team Member Is:

  • Skilled
    • Fully understands SOLID principles
    • Loves their technology stack
    • Writes great code
    • Writes unit tests
    • Adheres to OOP
    • Understands patterns
    • CI/CD mindset and proficiency in tools for the same
  • Understands quality as well as delivery
  • Hardworking
  • Positive
  • Agile
  • Loves ownership
  • Understands client requirement
  • Well managed
  • Communicative
  • Has team spirit

My Worst Individual Team Member Is:

  • Mediocre developer:
    • Does not follow coding principles
    • Writes unintelligible/cryptic code
    • Does not comment their code
    • Hates the technology they are working in
    • Does not write tests (thinks, it’s tester’s job)
    • Waterfall development mindset
    • Does not understand quality
    • Overshoots  deadlines most of the time
  • Poor communicator
  • Does not want to change
  • Runs away from ownership
  • Not interested in anything
  • Doesn’t respect team

A software development project team usually consists of senior and junior SDE (Software Development Engineer) and SDETs (Software Development Engineers In Testing). Engineers could also be grouped as per their focus area(s) – front end,back end, or full stack.

I would approach evaluation of individuals like so:

Data Driven Evaluation Of The Team

Passive Evaluation (for every individual)
  1. Go through their resume. List down their experiences, skills, future goals. Also note if the experiences, skills, and individual’s future goals align with the projects’ and company’s related requirements.
  2. Go through final project reports of all the completed projects by the individual in last 6-12 months and prepare following matrix:
    1.  Performance level – great, good, average, sub-par, bad
    2. Consistency of performance levels (70%+ is good)
    3. Change adaptability on the basis of diversity of projects undertaken
    4. Code quality consciousness
    5. TDD/BDD/AOP experience and comfort
    6. Positive/negative impact of individual’s contribution on budget and/or delivery of the project
  3. Go through a sample of code (committed in repo, in production or ready for the same) and collect following data:
    1. Complexity of the feature (could simply be a number between 1-10)
    2. Quality of the code
    3. Test coverage
    4. Clarity of style and adherence to company/industry guidelines
    5. Comments/documentation
  4. Considering information gathered in aforesaid sections, observe them in scrum meetings on the basis of following criteria:
    1. Ownership level
    2. Story-wise performance; code quality and velocity
    3. Expertise
    4. Communication
    5. Involvement
    6. CI/CD mindset level
Active Evaluation (For every individual)
  1. Schedule individual meetings with top performers (could be just friendly/informal meeting to avoid any kind of fear of performance evaluation) and gather following information:
    1. SWOT
    2. Source of motivation
    3. Code quality standards at individual level
    4. What are their future goals – near and far
    5. Individual tools and techniques they use to perform well consistently
    6. Would they volunteer to mentor an under performing individual
  2. Schedule individual meetings with worst performers (should be just a friendly/informal meeting to avoid fear) and try to understand following:
    1. SWOT
    2. Run thru the code and try to understand their level of realization about problem in their code?
    3. Have they been aptly communicated about their short comings?
    4. Reason of consistent sub par performance
    5. Understand if it is a work-individual fit problem – management style, technology match, etc.
    6. What do they think are the ways in which they could improve their performance in next X months?
    7. Would they be willing to be mentored by another member of the team?
    8. Suggest some training courses related to weaknesses and threats.

Individuals who have not been performing well should be given a fair chance to improve. Good performers should be encouraged to perform even better.

If someone keeps on performing at sub par level after giving sufficient time to improve, they should be asked to find some better fit out of the team/organization ASAP.

The matter of individual training wholly depends upon company policy. If company provides training resources and bears the expenses, under “fair chance to improve” policy individual should be provided training and reevaluated after designated period. If company does not have a policy of providing training individuals should be guided about how they could improve themselves in the required areas.

Talk About Your App

Sharp Snippets

As an app developer you are supposed to reach out to your prospective users as much as you can to let them know about your app. Social networks – FB, Twitter, Reddit, etc. are some great tools to spread the word. I also think creating a small video about your app and publishing it to YouTube is an effective way to let your users quickly get to know about your app. These are some fantastic posts to talk more about how to promote your apps:
Making A Love Connection? Build Relationships To Promote Your Apps
The Simplest Things People Don’t Do To Market Their Apps (But should)

In this post I will share some points about creating video.

The simplest and very effective way of creating a video is capture the physical phone screen while you are using it. That’s it. You can upload it as it is with your…

View original post 621 more words

App Mock Up

App Mock Up

Sharp Snippets

You are toying with an idea of creating a new app. If you are not replicating functionality of some other app, you would go through the process of visualizing your idea in the form of app UI. You don’t want to jump into code at this time but want to feel how information in the app will be placed and how it will look inside the screen boundaries. This process is a pre-cursor to UX development or full-fledged wire-frame creation. This process of visualizing the idea takes some time before you are confident about how you want to take your app forward and jump into some sort of coding. Paper+pen or whiteboard+marker are good way to work through fluid ideas and layout information. This is not the phase when you are working on UX or designing UI, but just laying out ideas in rough screens. I personally like drawing and…

View original post 465 more words

C#|.NET : Generic Concurrent Queue (1/6)

Sharp Snippets

800px-DHRS7B_homology_model

I think my concurrent process queue could be a good excuse to dive into asynchronous processes, threading, locks, etc. So, I have decided to write about this process queuing mini-system I designed and developed for my Windows Phone app. There are some aspects of this topic which will require multiple posts. So I have also decided to keep it open regarding number of posts to be done to cover the topic. But roughly, I will try to segregate the discussion in following sections:

  • Introduction
  • Design
  • Code
  • Examples
  • Sample Project

Introduction

Entities (model or viewmodel) require to perform certain long-running tasks in background. Async modifier is one of the easiest ways for achieving this. I wanted to manage my asynchronous request back-log and control it in my app, and without having to bother about threads|locks|pending items etc. I also wanted to have the flexibility to decide, as per…

View original post 299 more words

Windows Phone Application Execution Model-Part 2

A Real Case Race
How to resume the debugging session of a tombstoned application – Handling the Activated Event?

Remember my promise about the Back button functionality? I’m finally going to come through. However, please read through all 7 of these steps and the following Note before actually trying this yourself.

  1. From Visual Studio, start a new debugging session of the simple application we created in the last post.
  2. Press the Next button to navigate to the application’s second page.
  3. Press the Windows button.
  4. The emulator returns to WP Start screen, and in the Visual Studio output window, you should see the following image:

Keep reading…

Windows Phone Application Execution Model Part-1

With such a long and promising title, this series of posts better be a good one – you’ll be the judge of it. However, the real reason for this long title is rather simple. All these “big” words simply represent different aspects of the execution model. There are a few things that you need to know if you want to maximize your user’s experience. This post explains the Windows Phone (WP) application execution model by taking you step-by-step through the different aspects of launching, running, and closing a Silverlight application. Note that for XNA games the terms and ideas remain the same with some minor implementation differences. In following posts we’ll cover deactivation, reactivation, and how launchers and choosers work with tombstoning

Keep reading