Related Articles:

Inside Out: TDD using C#

Visual Studio and .NET Unit Test Framework

Unit Test Automation with Visual Studio

Introduction

Unit Tests play an important role in delivering high quality software solutions. An ideal unit test is a piece of code (automated test) written by a developer which exercises a small but specific area of code functionality to ensure that it works as expected.

Why Unit Test

According to the Test Triangle, in a software project the largest number of tests must be Unit Tests. Because multiple individual Unit Tests exercises small units of functionality which spans over entire various areas of functionality offered by the software solution.

                                       

Unit Test Check-List

While writing Unit Test(s) following points must be considered and followed by the Developers and SDETs.

Check

Description

  √

Self-Describing Names

Unit Test method names must be Self-Describing and Pascal case.  For example choose Add_New_Customer_With_Valid_AcccountNumber over AddCustomer_with_validAcc or addCustomer etc.Also focus on naming style, keep the naming style consistent across all the tests methods and test.

   [ ]

A3 (Arrange, Asset, Act)

Make sure that all the Test Methods are designed around Arrange, Act and Assert.If required Refactor your code to fall into these three sections.

   [ ]

Test Happy and Sad Path

The unit test should cover all possible scenarios and strive for high code coverage and ensuring good quality metrics. Unit Test methods must exercise all possible use case scenarios to test the input validations, interactions, errors messages, edge cases and exceptions etc.

   [ ]

Make use of Attributes

Use Test Framework provided Attributes like :

[TestCategory("<describe if its Unit or Integration Test>")]

[TestCategory("<Which section of the application is being tested>")]

[Priority(n), TestCategory("<define if it’s Gated or not-Gated build Tests>")]

[WorkItem(xxxx)]

[Owner("<who wrote this test>")]

   [ ]

Have least number of asserts per test (if applicable)

A good Unit test should only have limited # of assert statements. It should unit test the very functionality, as indicated in its descriptive name.A well-defined Unit Test should contain only one assert statement per test and must not try to exercise all the validation/boundary checks etc. by multiple Assert() in one Unit Test method. .

   [ ]

Keep assert messages descriptive

Use descriptive messages to improve readability of code and the build log.Assert.IsTrue(customer.IsExist,”The Customer is not found in the Database”);

   [ ]

Unit != Integration

There is a very fine line between Unit and Integration, if you happen to go beyond what your function is supposed to be doing then you are not writing a Unit Test. I.e. Unit Test doesn’t focus on interaction with external systems and software layers/dependencies.Test Doubles (for example Microsoft Fakes framework) comes into the picture to write unit tests which has dependencies on external libraries and systems etc.

   [ ]

Follow OOP Design and Adopt DI

Following Dependency Injection will allow to convert potential Integration Tests into small and quickly testable Unit Tests by taking advantages of Test Doubles (e.g. Microsoft Fakes, Moq, FakeItEasy frameworks etc.)

   [ ]

Should be thorough

Unit Tests are supposed to test all the possible areas of functionality that are subject to failure due to incorrect input/validation checks/boundary checks etc. for given function/method.

   [ ]

Must be Repeatable

Unit Tests must be repeatable for every build and must produce the same results. The development best practice suggests that if you are working on code that is impacting a Unit Test then you must fix the affected Unit Test as well and ensure that it passes.

   [ ]

Have to be Independent

Unit Tests must be independent of another test. In other words, no collateral damage. Hence, a Unit Test must focus only on a small aspect of big functionality. When this Unit Test fails, it should be easy to discover where the issue is in the code. I.e. can be tested in isolation

   [ ]

Keep it Professional

Even though at times Unit Tests may appear to be very simple and small, you must write Unit Tests with coding practices as good as you use for your main development coding. You may want to follow Refactoring, Code Analysis and Code Review practices and so on as for your Test Projects as well.

  [ ]

No Collateral Damage

Make Sure to Run all related Unit Tests after any dev code change big or small; to verify and ensure that no collateral damage occurs or has been introduced.

  [ ]

If you break it, You bought it

If you are working on a feature and to verify no collateral damage, as a best practice run all the Unit Tests. If you observe that some Unit Tests started failing because of your code changes then you own to Fix those broken Unit Tests to make sure that continue to pass.

  [ ]

Track and  maintain the tests

The test code changes should be tracked and maintained as on-going effort. Continue to follow thedesign principles and coding guidelines.

  [ ]

Code Review the Tests

Just like any other Dev code, Unit Tests also needs to be code reviewed by peer. Regardless of size of the test; follow the process.Code review might include reviewing the name of test method, scenarios covered, conditions checked, scope of assertions and code / design smells etc.

  [ ]

Abstract

Account Management is related to Sign-in feature; which was first time introduced with Visual Studio 2013. This feature has been helpful by various means, but Visual Studio 2015 even extends this experience with some enhancements.

Introduction

Account Management turned out to be very helpful feature, here are some points:

  1. Associate a profile (e.g. web development, C# or general) and synchronize your settings with the development environment once you are logged in to another workstation.
  2. Ability to select graphic themes (Light, Dark, Blue) for appearance of IDE, code and code editor window.
  3. Take direct benefits of MSDN subscription associated with ID, used to Sign In to Visual Studio. For example unlocking Visual Studio or manage licenses associated with Visual Studio.
  4. Automatic login to TFS service account; if subscribed to this. TFS Service is a Microsoft cloud based version of TFS.

Synchronized Settings

Visual Studio 2013 and 2015 allows the users to choose which settings to synchronize. Let’s first understand which Visual Studio settings are candidate for Synchronization.

  • Appearance I.e. Themes, Colors and Fonts.
  • Environment Aliases
  • Keyboard Shortcuts
  • Startup
  • Text Editor

Visual Studio 2013 Synchronized Settings will be as shown in the image below.

Visual Studio 2015 Synchronized Settings will be as shown in the image below.

 

Account Management

In Visual Studio 2013 and 2015; Account Management comes into the picture as soon as you click on “Sign In” option on the Top-Right of your Visual Studio IDE as shown below.

 Or Account Management settings can also be accessed via File –> Account Settings…

Improved Account Management with Visual Studio 2015

Microsoft has improvised Account Management experience for developers and made it better. The core change made in Visual Studio 2015 Account Management is the capability to store multiple accounts and have those listed and stored on that Account Setting page.

Immediate benefit for developers is the ability to log-in to Visual Studio with different associated accounts and work with different set of settings and projects.

Now question is what’s new in this; developers were able to this even with earlier version when it was introduced in Visual Studio 2013. Let’s see by diving deep into Account Settings.

 

Account Settings – Recap with Visual Studio 2013

When you Sign-in with Visual Studio 2013, your Account Settings page will open asking to Sign In.

After successful Sign-In Account Settings page will appear as follows.

 The very obvious issue here is related to developer productivity and a developer who switches between accounts, need to punch-in all different set of credentials repeatedly.

Enhancement to Account Settings in Visual Studio 2015

Visual Studio 2015 comes with an enhanced Account Management feature to enable developers to store multiple Sign-In credentials under Account Settings. Ideally, it would be productive to have multiple accounts registered and then switch easily from one account to another without re-punching all the credentials repeatedly.

Adding New Account

Clicking on “Add an account…” will take you to Sign In dialog as shown below.

After Successful credential validation the Account Settings page will display the newly registered account under All Accounts.

This feature enables developers to have a centralized place to manage accounts and Synchronize settings across every registered Microsoft account.

Abstract

 Many technical people have the dilemma at some stage in their technology career, whether they should choose a technological role, like Lead, Architect and so on or Managerial role like PM.
In my view all the roles are good and have many great career opportunities. But it’s up to you do decide what you want to become and what steps you have taken to fulfill your career aspirations.

Define your own Career

 In my view, it’s up to an individual to plan his/her career. It may happen that you are influenced to accept the role that you didn’t want to take. I believe that, rather than being influenced by someone, you should develop the skills to influence others and put you into that role.

 Any organization can define your Job, but only you must define your Career

 Job Vs Career

Many people don’t understand the difference between the two and that’s a very common thing. Let me help you.
A career is the pursuit of a lifelong ambition or the general course of progression towards lifelong goals that provides you a sense of fulfillment and comes out of you naturally with all your passion and creativity. Besides, you get paid well while doing that.
A Job is just an activity through which an individual can earn money. It is a regular activity in exchange for payment. But you have no passion for that work, it doesn’t matter if you don’t do that for a few days. You don’t miss it and you don’t seek any areas of improvement in that.

Situation Trap

 Many times people are influenced to become what they never wanted to be. In my long tenure in the IT industry I have learned that most people just accept a role because their manager told them to slide into that role and then that becomes their career path.
I am not saying that it’s totally wrong. I have been into such situations and I did all I could to detour from that and return to the right track and keep moving towards where I wanted to be.

“So it’s not always people who drag us into a situation; it’s us who must come out of it.”

How to come out of Trap

 I get many emails and messages from people saying that their employer is forcing them to become a test engineer, handle a team, work on maintenance and many other off-track tasks that they have no interest in.
Now, in many situations you can’t avoid it, because you need a job and money and this is a bitter truth of life. However, the key is what steps to take to get out of it.
  1. Before accepting such role/assignment, discuss the duration with your manager and so on.
  2. Provide yourself limited time to come out of that and share that with management; have it in writing and include HR also if you can. In many cases the company will say 2 months but you dragged yourself for 2 years in that.
  3. If nothing works then it’s time to move on.

Deciding Whether to Move On

 In general, people look out for options when they are frustrated and not prepared at all. Being not prepared causes a delay in getting shortlisted for jobs in the industry and this causes further frustration. People often end up in the same place and doing the same thing.
In my opinion, changing a job needs to be well-planned, unless you are lucky that you have the tendency to land into the right opportunity every time.

The following procedure will help you.

  1. Your decision to move must be driven by motivation rather than frustration.
    I have observed that many people just wait until appraisal and soon after that they look for a job change. Well, this is right, since as I said above, due to the need for money, but money is not everything all the time.
  2. Always have your resume/cv ready and updated, I still do that. I continually update it for the projects I do and new skills I develop.
  3. Have a LinkedIn profile, you can’t build it overnight. Seek good like-minded connections.
  4. Continue applying for jobs, even when you don’t want to change immediately. So you know if your CV / resume is getting some traction in the job market or not.
  5. Also focus on non-technical skills and continue to refine skills like communication and presentation and so on.

Techniques to work on your career goals

  1. Have a road map in place that defines all that is expected from your desired role.
  2. Think global, people often only focus on job-related skills that are local to their country. This again can’t help you to build a career.
  3. Invest in learning the right technical / non-technical skills.
  4. Find a mentor who can help you elevate yourself, preferably who has done it by him/herself. Learning from people who havn’t experienced what you want to be will lead you nowhere.
  5. Invest in learning, skills building and the right type of social networking.
  6. Your current job is the best place to learn and experiment with new skills you are building.
  7. Make yourself visible at the organizational level.
  8. Have a reputation in your company.
  9. Have a command of the English Language. You must be able to learn, listen, speak, read and write in English. You can read my article on 10 Rule of English Communication for Developers.
  10. Seek for opportunities and meet like-minded people.

What I do to take charge of my career

  1. Always focus on your career goals.
  2. Work on cultivating skills for that role
  3. Invest in learning
  4. Apply your learning and skills
  5. Set Targets

Always focus on your career goals

Let’s say you are a developer and you want to be a Tech Lead, or a Tech Lead wants to be an Architect. Then you need to understand what the industry expects from that role, regardless of what people tell you to be or become.

Work on cultivating skills for that role

You need to understand that each role requires some specific skills and personality traits and that’s why some people are in Sales, Marketing, Management, Technology Leadership and so on. They all have their own place and I believe that is what they always wanted to be.
But at least we need to try what we want to become, after knowing what we want. We need to start working on those skills, whether technical or non-technical. Be aware that each role in the industry expects some different level of technical knowledge and different personality and behavioral traits in a candidate. This is how people are offered positions like a Dev, Lead, Architect, Project Manager and so on. I highly recommend a proper road map for your desired career path.

Invest into Learning 

Investment in learning gives the highest return, not always in terms of salary but how people look at you and what perception they have of you. Every year I spend a good amount of money on books, courses, certificates, conferences and so on and many other things that keep me polished, sharp and competitive with the latest industry trends in my area of technology and career aspirations.
My latest accomplishment was the TOGAF Certified Architect level. This certification exam itself costs anywhere between US $495 – $640. What I want to share is that even after having so many Microsoft and other certificates I didn’t stop. Well, this is my personal thing and perhaps someone will find motivation from it. That’s’ all.

Apply your learning and skills 

After you have learned what the industry seeks in a candidate of your desired career goal then look for such opportunities to apply those skills. For example, a tech lead role demands the following:
  1. Participate in technical discussion with client and onsite manager
  2. Perform code review and resolve the team’s technical queries.
Now, if you are just a developer then start learning these things and see if you can either shadow or pair with your lead or silently observe how someone is doing it. Then look for the opportunity to do this by yourself. Make sure you don’t make a mess of a client call, so take it slowly.

Set Targets

You need to be a goal-oriented person, so set targets for yourself and ensure you are working on those goals, for example:
  1. In the next 30 days I will learn to communicate in English.
  2. In the next 15 days I will learn to kick off client calls.
  3. In the next 30 days I will make a sample application using MVC concepts.
  4. In the next 60 days, I will apply for jobs and see the response from companies/recruiters.

So, now you have a plan but remember “Plans won’t work until you work on the Plan”.

Don’t seek comfort

Sometimes, people think my job is all good and I am all set to be here as long as I want; you feel like you have just settled in. My last job was for 8.7 years in the same company. But I made sure that I kept moving and I made quite a shift in the organization that required similar efforts in terms of learning, applying for a job and being interviewed. I made my own way and made progress towards my career goals.So if you really interested in getting promoted and receive new shiny titles on your promotion letters and experience letters and so on then you must work hard, regardless of whether you are seeking that change within or outside the organization.

So always be restless, seek knowledge and motivation to get closer to your career goals and keep learning.

Best Wishes.

Read this on C-SharpCorner

Abstract

Many times this question comes to our mind that is one technology totally replaced by new release or new version of technology. In this article I will try to explain about such and similar issues and I will share my industry experience not only what I have seen in India (largest IT Solutions provider to the world) but also in USA.

I consider this to be a very hot topic and good candidate of debate rather; but I will try to share my thoughts on such a burning topic. In this article I am not going to highlight or defame any technology; I am just going to put my perspective as I have seen, experienced and advised to various clients and software teams.

Why new Versions

“Change is Only Constant” this principle applies very well to the Software Industry, and I respect this over-flow of information. Because this gives me reason to “Keep Learning and stay ahead of the Curve”. By saying so I didn’t mean that someone has to learn anything and everything you can get your hands on. NO, certainly not, but before I explain this any further let’s take a step back and understand “Why new Versions” keep coming.

We are fortunate that we have seen complete transition of the software industry from Desktop to Web to Mobile, upcoming generations may not witness this great and life changing shift. Also, I recall my days when I was working and studying software in 1995, no one imagined that there will be MVC, WPF, WCF, so many versions of .NET and SQL Server etc. Industry was happy with MS-Access, Fox-Pro, C, C++ and Oracle etc. But our needs keep changing, they evolved and then shell is broken to have huge expansion and today we have all kind of software technology and server products from client side to server side to mobile and hand-held and many more. We moved from on premise to Cloud, Machine Learning is helping to dictate patterns and suggest needs.

This is why software companies keep building latest and newest technologies to enable and empower the world to build for future. When they release a version of a technology or language and they discover some issues or new features in that then they release newer versions and this in a chain reaction process and it will not stop.

Oh, then I will die Learning

As per Darwin’s Evolution Theory “Survival of the Fittest”,”fit” refers to “best adapted to the current environment.Here you simply replace environment to Software Industry. I am one of you and I don’t recommend that everyone has to learn everything but what I suggest it stick to your technology of choice and have god knowledge on their offered tools and technologies and various versions and when to use which one.

Also, you don’t necessarily have to know every single thing. For example, I only focus on .NET and related technologies, if anything falls beyond this area then I am not bothered. To be more precise, I don’t know Microsoft CRM, SharePoint, System Center, SQL Server Database Administration and few more things like that.

But this is not my weak point because “I continue to build my .NET Muscle” and keep learning about what helps me build Enterprise solutions using Microsoft .NET.

So choose your area of interest and where you have invested and then keep learning in similar field and then you will no longer find it challenging; because if you observed new versions come after every few years and that has to be otherwise it will be No Fun!

Hmm, so Isn’t MVC Replacing ASP .NET Web Forms

Such decisions are not final and have no concrete answers. Yes, industry changed their needs and so new technologies such as MVC and WPF takes over. This definitely doesn’t mean that ASP .NET  Web Forms is replaced or it’s dead. If you know the Microsoft Web fundamentals MVC is based on ASP .NET and industry is trying to shift as and when they can from Web Forms to MVC and reap the benefits it offers.

Did you know that MVC is much older than ASP .NET? Yes, ASP .NET 1.0 was released in 2002 and MVC was created in 1979 originally named as “Thing-Model-View-Controller” but later simplified to be known as MVC.

In my view I consider that there are now two technologies to build Web Solutions using Microsoft and based on your need you can pick one which works well for you. Usually such technology selections are made by Architects assigned to the project.

So there is no such Golden Rule that every new or existing application has to be either created using MVC or migrated to MVC because MVC is latest and future of web. Though it is.

Architectural Thinking – Brownfield Vs

Greenfield Applications

All software applications you have worked or will work in future are either brownfield or greenfield.

Brownfield Development – When any existing or legacy applications needs to have new features or changes to address business needs; is known as brownfield. In such situations unless you are building new module or component you have less  / limited or no scope to use new architecture styles, patterns etc. Very reason of such limitations is because those old applications are build using old version of technologies and latest versions of one technology/framework many not be compatible with old versions.

Greenfield Development – When a brand new project is being envisioned and no previous work is done in that or related area then it’s called Greenfield. In software industry it doesn’t happen very often. But whenever it happens its Architect’s responsibility to figure out what is best technology to address business needs.

Hence, it’s not appropriate to say that because MVC is so new hence every new web application must be made using MVC or if WPF is available in addition to Windows Forms so every desktop application has to be made using WPF. Whatever is the case neither ASP .NET nor Win Forms can be totally ignored.

Why and Why not Latest Technologies

should be picked

First let’s discuss Why Not

  1. Its brownfield and new technology doesn’t fit anywhere.
  2. If new technology or versions are introduced it will case a lot of build errors due to outdates references of non-supported library references.
  3. Business goals and software quality are not compromised by continuing to use current and available technologies like ASP .NET Web Forms over MVC or Win Forms over WPF.
  4. You are not investing money in any extra off-the-shelf tools to handle issues which could have been handled by latest versions of similar area of technologies e.g., MVC instead of ASP .NET Web Forms, or WPF over Win Forms.
  5. Many times team might not have certain skill set which allow them to proceed with development using new technology options
  6. Many times budget allocation from client may impact your decision to use and develop using latest technologies.
  7. If core/bestselling features of new candidate technology (MVC or WPF) are not being used at-least up to 50% then you have not achieved anything.
  8. Considering how soon client and business wants to have application ready, turns out to be major factor o dictate technology of choice.
  9. Client and business doesn’t bother how you do it; what matters is end result and a workable / good – enough software.
  10. No way to use old legacy downstream applications with latest available technologies.

Why develop using Latest Technologies

  1. Greenfield software solution and no legacy or old piece of code is being used.
  2. Focus is more on Robustness, Testability, Object Oriented design and quality. (This doesn’t mean previous technology can’t accomplish these; it’s about ease and in-built features and offerings).
  3. Amazing team with great skills to learn new technologies and adapt the changes.
  4. Company’s vision is to showcase products build using latest technologies.
  5. Client themselves want the solution to be developed using latest technologies and have budget to support that.

Why MVC over ASP .NET Web Forms then

Note- this section assumes that you are aware of MVC benefits and general technical terms used below.

  1. Separation of Concerns is the core of MVC.
  2. Single Responsibility Principle is achieved by default.
  3. Unified and even better framework to work on WebAPI, Mobile, HTML 5, CSS3, Security, and Deployment (including Azure).
  4. Unit testing is easily achieved to have stable, robust and quality software solutions delivered continuously.
  5. Fast screen generation for CRUD operations via Scaffolding.
  6. Convention over configuration.

Summary

Based on my experience as an architect in industry I would like to summarize that it’s very hard for any organization to keep up with latest version and technologies all the time because by the time you become comfortable with one version the newer is around the corner.

So if you are working on MVC 4, then see if you can learn and try some application being developed on your own. Or if you just happen to be in ASP .NET Web Forms world until now then I would encourage you to try converting that application into MVC for your personal benefit.

This will enforce you to learn new technology and apply those learnings; if you made some progress in that then in next interview you can proudly showcase your MVC knowledge and say that you migrated ASP .NET Web Forms to MVC.

“Regardless of what you are using to make a living out of a job, you have to learn new ones to build a Career.”

Please do Comment, Like and Subscribe to my Channel.

Watch YouTube Vide Here…

Abstract

Agile is a software development methodology which I becoming popular day by day. It defines the mind set of many software development teams working across the globe. This article will walk you through the entire agile-scrum process and how as a developer you can contribute in agile way and deliver value. BTW, agile means ability to move quickly.

Agenda

  • Life Cycle of a Developer
  • Barriers to value delivery
  • Agile Adoption
  • Plan Driven Vs. Value Driven
  • Agile Manifesto
  • Scrum – End-to-End Process
  • Agile Estimation
  • Scrum Status Board
  • Agile Tools
  • Conclusion

Life Cycle of a Developer

 1st interaction a developer have is with BA, they are responsible to document, track and describe the user requirements. But many times there are gaps in understanding the needs; which causes issue by various means.  Image below shows what user wanted and what happened when it is implemented.

Stop the blame game

In many team settings, a developer is considered to be responsible for everything, right from understanding requirements to code to support testing, help in deployment and then resolve production issues. Well, I always believed that entire software development is a team effort. But at the end, in most cases developers bear most of the blame. So its no longer a Developer’s responsibility to own everything rather team owns it.

Team Barriers = Value Delivery Impediments

All .NET Development teams want to deliver value but on realistic grounds what are barriers which stops a team to deliver value.

Every team has dependency within and on people outside, the communication gap and lack of understanding of common goal is the root cause of Value Delivery Impediments.

Impact of Team Barriers

Well, most of the issues any software teams runs into has following outcomes:

Increased Cycle Times - This means that you have to work longer to get work completed.

Increased costs – More time means more money.

Dissatisfied users & Stakeholders – End user missed the milestone of feature being available and so it raises concerns for stakeholders as well.

Lost value opportunities – You are potentially not going to have more work from same client.

Agile Adoption

 

Agile-Scrum is most widely accepted methodology of Agile development. Term scrum is taken from sport rugby in which whole team works get the possession of the ball.

Plan Driven Vs Value Driven

 

Plan Driven (waterfall approach) is an old school which defines software development life cycle. Many teams are still doing that though but in waterfall plan takes precedence over value.

Value Driven (agile approach) is new way of building software, it gels teams, stakeholders and user very well and help them team receive early feedback and fail fast.

Manifesto for Agile Development

17+ people gathered in a ski resort and they came up with agile manifesto.

Understanding Type of Backlogs

In agile-scrum there are two type of backlogs

  1. Product backlog
  2. Sprint backlog

Product backlog is larger list of work items (in agile world known as User Stories), it is like a “Functional Specification Document” or System Requirement Specification Document or “Business Requirement Document” or whatever your organization likes to call it.

So whatever user requirements we have, all are stored in Product Backlog, backlog.

Sprint Backlog, Sprint is defined time, teams work on to deliver certain items from product backlog. But before teams start working on those items (User Stories), those need to be properly defined.

Scrum – End -to-End Process

Agile Scrum Ceremonies

Team works on a sprint for anywhere between 1-4 weeks. Ideal sprint duration is 2 weeks. So from Product backlog some User Stories are moved to Sprint Backlog and then team works on those for 2 weeks. During those two weeks following ceremonies are performed.

Sprint Planning, this is 1st thing which takes place before any work can begin. In this meeting team looks at User Stories which Product Owner thinks team should work upon in the next sprint. Team looks in detail at the given requirements, brainstorm, define/review acceptance criteria or the work, estimate and assign the work to team member(s).

Daily Stand-Up, this is status meeting among team(s) members, in this meeting each team member gives status on three criteria’s.

  1. What I did yesterday.
  2. What I will do today.
  3. Am I blocked?

Sprint Review, this takes place after each User Story is completed, so Product owner can accept the work.

Sprint Demo, this given an opportunity to the whole team and larger group of users to see all the work team has completed and see end-to-end functionality.

Sprint Retrospective, this gives opportunity to the development team to discuss three things

  1. What went well?
  2. What went wrong?
  3. What we want to improvise?

Agile Estimation

Agile offers two type of estimations:

  1. Story Points, this is most commonly used agile estimation technique.
  2. T-Shirt Sizing, some teams estimate User Stories in T-Shirt sizing.

Scrum Status Board

Agile, enforces daily status reporting and so many teams use various ways to track and show the progress on each user story. I found that a detailed board like following provides more visibility and track each task/activity related to a Sprint Item.

Agile Tools

There are many tools available for agile-scrum teams, but I have found TFS and rally widely used in industry. Both work on similar agile-scrum concepts and are very user friendly. Below are the screenshots of TFS.

Sprint View in TFS

Workflow for Task Status

Drag and Drop support for ease

Conclusion

Though agile seems very easy to understand and implement, but it’s very challenging to apply it correctly and many organizations are not in agreement with what agile brings and its way of delivering things. Startups are usually known to follow agile rather well established companies at organization level. I.e. In a company a team might be doing agile but various other teams or company’s mindset might still be waterfall based.  But agile is an amazing methodology to deliver more value; regardless of you are working in agile team or not it’s worth knowing about agile-scrum process.

We are uncovering better ways of developing
software by doing it and helping others do it.
Through this work we have come to value:

Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan

That is, while there is value in the items on
the right, we value the items on the left more.

Kent Beck
Mike Beedle
Arie van Bennekum
Alistair Cockburn
Ward Cunningham
Martin Fowler
James Grenning
Jim Highsmith
Andrew Hunt
Ron Jeffries
Jon Kern
Brian Marick
Robert C. Martin
Steve Mellor
Ken Schwaber
Jeff Sutherland
Dave Thomas

Source : http://www.agilemanifesto.org/

Watch YouTube Video here

Introduction

.NET Client Profile is supported by .NET Versions 3.5 and 4.0. It is designed for client applications like Console Applications, Windows Forms, WPF Applications and so on. As we all know there are many types of applications and hence what is required by one application may not be necessarily required by another type of application. For example, System.Web is only used by ASP.NET / Web apps, this is of no use for Windows Forms app. The Client Profile version of .NET Framework is a lightweight subset of the Framework. This enables quicker deployment and small installation packages.

Let’s see how Microsoft made the .NET Client Profile

Microsoft removed some of the features from the .NET Framework to make the footprints smaller and optimized. Microsoft chose to remove ASP.NET, MSBuild, Advanced WCF features and support for Oracle databases to reduce the framework into a smaller and optimized footprint. Web Applications don’t support the Client Profile version of the framework. Web applications are server-side and so full .NET Framework installation is recommended, unlike client applications. Microsoft has removed the Client Profile from the latest version of .NET Framework 4.5 and hence with .NET 4.5 there is no Client Profile as shown in the image below.

Why .NET 4.5 doesn’t have a Client Profile

Now if you think from a deployment’s point of view, you would want your installer to be as optimized and small as possible, so it takes the minimum required on the client machine and this can be done by the Client Profile flavor of.NET 3.5 and 4.0. .NET 4.5 is already optimized and tuned for quicker deployment and takes a small amount of disk space for all type of applications. Hence, no more .NET 4.5 Client Profile.

 Watch YouTube Video Here…

Abstract

Today’s IT industry is all about foreign clients, anyways you are dealing with them now and then, but working in their own land with them is a different experience altogether.  This article will help you learn about working in USA and many other related things.

Note- Please don’t write any comment or ask me for any Visa Sponsoring, how much money you can make particularly and what you can do to fly to USA etc.

Ways to Enter USA

There are various ways to enter USA, but as a “work” professional following are visa types which allow you to enter USA and either live for some time or live for long term and earn in US$.

Visa Type Who Sponsors It How Long Can you Stay Validity for Years Transferable to other employer
B1 Employer 6-12 months in one visit 10 years No
L1A Employer 7 years 7 Years No
L1B Employer 5 Years 5 Years No
H1B Employer or Self as an individual 6 years 6 years Yes

H1B visa allows you to change your employers once you are in USA, so if you don’t like CompanyA then you can transfer your H1B staus to CompanyB and continue to live and earn in USA.

L1 Visa holders can’t do this as L1 is intracompany transfer visa, means an India office of CompanyA is sending you to its US office for work.

B1 visa holders are usually those who travel for KT (Knowledge Transfers), conferences and client meetings etc.

What skills are required?

Well, my core skill are has always been Microsoft so I can share those with you, but skills can be easily discovered via some job site portals.

Technical skills - .NET, C#, MVC, SOA, Algorithmic/analytical thinking, strong coding, best practices, SQL BI, TFS, debugging and analysis, SQL Server, Architectural Principles.

Soft Skills – Good communication, listening skills, ability to present your ideas on whiteboard, team player, ability to collaborate with others within and outside team.

Cultural skills – Ability to bear culture shock, ability to communicate with local people and understand their accent and way of living, accept that you are far-far from your home land, ability to live alone for months with no one to talk (at-least until you make some friends).

Show me the money; honey

This is something everyone might be interested in; but salary range varies from job profile, experience and skills you have. Salary is also driven by nature of your company and your Visa type, for example,

  • B1/B2 visa travelers are paid approx. US$ 40-100 per day + Home Country Salary as is.
  • L1 visa travelers are paid in the range of $55K – 75K per year + No India Salary at all.
  • H1B visa holders are paid more than L1 and ranges from $55K – $140K per year or even more + No India Salary at all.

Expanses and Deductions from Salary

USA is an expansive country and you pay for everything and it’s pretty expansive. Let’s see some basic deductions and expanses per month

Expanse Type US$ Per Month
House Rent $700 – 1500 (Based on 1 bedroom, 2 bedroom and location)
Water + Garbage $75 – $110
Electricity $50 – $115 (bill is on higher side in winters)
Phone $50 – $120 (higher side is for two lines unlimited calling with in USA)
Internet $29 – $80 (based on speed you want)
Grocery $ 250 – $2000 (based on number of family members, their age [especially if you have kids then you have more expanses] & your life style)
Car $50 – $500 (depending upon your travel pattern and type of vehicle you own)

 

Deductions from your Salary per month. Amount will be based on your Salary
Federal Income Tax (in general it’s Income Tax, In USA you can’t show investments etc. to have some rebate. Like India has limit for 1.5 Lakh.)
Social Security Tax (tax deducted by government to pay people how have retired)
Health Insurance Premium – Optional (it is usually offered at discounted rate by employers)
Dental Insurance – Optional (it is usually offered at discounted rate by employers)
Vison Insurance – Optional (it is usually offered at discounted rate by employers)
State Tax (some states like New Jersey, New York and many others have extra deductions as State Tax)
401K – Optional (Like PF in India)

In USA medical is very expansive, a Dr’s visit can cost anywhere between $100 – 100,000. So it’s better to analyze your and your family’s health trend and take necessary insurance plans. Health and Dental are a must according to me.

How to apply for work permit (Visa) for USA

Well, easiest way is that your current employer send you on a project. But that is not the case in many scenarios and with some employers. Then you can file your H1B by yourself. H1B is lottery based and every year in April 65000 H1B visa are granted to selected professionals.

If you want to apply yourself then find a company (search on job sites there are many) who can file H1B for you. They will charge you approx. $5K – $6K to submit your H1B application. As H1B is totally lottery based so your application may or many note be picked in lottery. If your application is not picked then some employer may return some of the money and they may or may not return your money. So consider it a GAMBLE.

Do I have Job Assurance?

Well, even if you have got visa and travelled to USA; many times there might not be a job for you and that may last for months. I know some candidates who are on their own and have no job. Besides, to live in USA you need medical insurance etc. which is very expansive and other expanses you have for your living, food etc.

Work Life Balance

US work culture is officially 40Hrs a week, so in your timesheet you fill 8hrs per day. If you have a decent manager then you have a good life as many of them are. People here have a culture to work from home (not always unless you are a remote worker officially) on instance based scenarios, respect of family and personal needs, kids school meetings etc.

But all these freedom comes with great responsibility; and people are not supposed to abuse that. If you do so then you will be restricted and you may have to take holiday to fulfill your family or personal commitment.

What if I am not able to go to USA

Personally, I came to USA at very late stage of my career. So work on your skills, client relations, and many other things and be happy. Everyone has a different path to follow and destiny chooses people time to time. So don’t be disappointed that you are not selected, or couldn’t got to USA etc. Rather think what you can do to go to USA.

Save money, make some sacrifices, don’t buy expansive mobile phone, don’t eat outside, and don’t buy extra clothes, shoes, accessories and save money to apply your H1B next year.

Also, keep looking the pattern your company has, do they have client in USA, do people travel to USA from your company etc.

What happens when I return from USA to my home country

Well, in terms of your job and career; this certainly has a boost. I have experienced that personally. Besides that your way to seeing things and applying skills will change a bit.

Besides, many companies prefer candidates who has travelled and lived outside as this allows them to present themselves better to a potential client and showcase skills their team has in general.

You can also read this article on C# Corner

Abstract:

Today’s world is about distributed teams across the globe; a team member sitting in Indian Silicon Valley or a software company of financial capital of India might be reporting to a manager sitting in Microsoft Headquarters in Redmond WA. (a suburb of Seattle WA, USA). This is almost like you travelled how of the world. Hence, long-distance communication has become prominent over the last couple of years.

But I am Technically Strong; so how does it matter to me:

Well, if you are really interested to move up on the career ladder then communication is the key. For instance, if you want to be promoted to be a Tech/Team Lead; then Good Communication skills will help in the longer run.

Good communication demonstrates good leadership skills and so helps you to pave the road to new roles and responsibilities. Would like to send a software architect to a client or listen to him on phone when he can barely communicate; would you like to work with a team/tech lead or onsite coordinator who can barely communicate what client wants? I am sure NOT.

Why English has become so important?

Do I really have to answer it? If you are reading this article of mine, then you are on the same boat like me. I.e. software development field. English is a global language to communicate with anyone whom you don’t know how to connect with. Besides, if you are planning to travel, work abroad, deal with higher management in your company and pave your road in a highly competitive society then good command over English is like “Cherry on the Cake”.

Many deserving candidates are rejected every year for USA visa (H1B, L1B even study abroad) in their interview because they can hardly communicate well and can’t impress the consulate person who is interviewing the candidate?

Consider; even technical interviews; how do you express that you are good candidate and know the technology; that time is gone when you can cram the questions and spit those over to the interviewer; trend of interview has changed. For instance, now people don’t really ask difference between “Abstract class and Interfaces” instead they will ask you a scenario where you chose to implement an Interface instead of an Abstract class or vice versa. Even, based on your project description they drag you into a totally un-imagined situation and ask for your views. Such just in time situation, scenarios are hard to cram or even prepare for; so you end up sharing your thoughts or thought process during interview; do you feel little sweating in your palms or forehead J.

So what’s the technique to have good English communication skills?

Thumb rule- as it implies to those candidates whose mother tongue or native language is NOT English, just like me.

Don’t panic or afraid of English Communication; rather work on it. I can share how I (a small town’s boy of Hindi medium from northern India) made it possible.

Rule#1 – Focus on Learning English grammar to strengthen the fundamentals; if there is a need to improvise on English grammar then work on it for some time and remaining can be learned by listening and speaking with others. Here is a good E-Book to strengthen the fundamentals from basics to extreme expert level.

Rule#2 – Don’t focus on Accent (American, British etc.) immediately; instead focus on grammar for correct usage or words and accurate sentence formation. Accent will come automatically later when you work with people across the globe and have developed good grasp of language.

Rule#3 – Your skills building I.e. Learning must be using English only; For instance; I see some people prefer to learn technology in their native language; I don’t understand how learning .NET or any other topic will help you better in your native language; because most of the terms are English only; C#, CLR, Framework, Language, Compile, Code, Debug and so on. So why to worry so much for some of the plumbing/gluing words in the middle to make sentences.

For example, if I had to learn what is .NET then what is it you won’t understand in this “.NET is a platform and framework which allows you to build applications using many .NET Complaint programming languages and even deploy and run those on many non-Microsoft Platforms Oss”.

I am totally against of reading novels etc. to build English vocabulary; rather start a book of your choice MVC, .NET, C#, ASP .NET, WCF etc. cover to cover; yes, cover to cover read right from About the Author to About the Technical Reviewer to Acknowledgement, Dedication etc. to the chapters of your choice. I guarantee 1st few sections has a lot to teach you about general purpose English communication. So your time is better invested into building your skills with books of your areas instead of reading a 1000 pages fiction novel like Harry Potter especially for this cause.

However; if you wish to read a book other than your technical area then reach out to mea I can guide you for some good books which might be helpful in various ways.

Rule#4 – Listening is very important; when I was in college I heard people saying that listening to English songs will help you to learn English; well to be honest I never found time to double up my efforts to listen to English songs and then learn my study topics in English. BTW, I also don’t recommend listening to English music and trying to read English material at the same time; it could turn out to be pretty messy especially at the beginner level.

So listen to some of your favorite speakers for the topic of your choice; Listening causes great learning especially in terms of usage of words, sentence formation, accent, pitch, pace, sound quality etc. My YouTube channel MyPassionForDotNet has couple of videos from 10 minutes to 2+ hour long sessions.

In free time even listen to the people in your office, market, shops, conference calls, elevators, parking etc.

Rule#5 – No slang language; Say “Yes”, many times I have seen people saying “yeah” “bro”, “You know after each line”, “cool” and many more terms. Well, I suggest always say “Yes”; believe me this has an impact on your way of building skills. When you are good with English communication then occasionally usage of yeah is OK. Basically; this puts you into a habit of strictly respecting the core of the language and also teaching your tongue what to utter; which is very important.

Rule#6 – Hang out with right people, if you have someone who can help you to polish your communication skills then find such people if possible. Well, I was not able to find any because I grew with people like me J but time has changed. I am sure you might have someone around you.

Rule#7 – Think big, Start small; if you are in a discussion then start whatever you can using English and see how far you can go. Anyways; in native land we speak in Mix-mode (some English and some native language) so you focus on speaking the English part as precisely as possible.

Rule#8 – Go slow; I have observed that many people think that Good English Communication is all about speaking fast; actually it’s a myth; I have earned large amount of my professional experience working out-side India with people from various English speaking continents; one thing I found common in all of them is that they speak slow; soft and clear.

Rule#9 – Pronunciation, when speaking no matter what language you are using; way to utter a word is very important; it become very important when you speak in English. Here is a great pronunciation tool to help you learn how a particular word is pronounced.

Some examples; I would like you to try and see what you thought was and actually how these must be pronounced. E.g. Scythe, calcium, pronunciation.

Rule#10 – Come out of native way of pronunciation; our native place (town, city, country) has huge impact on our way to learn pronouncing a word; many times we continue to speak the same way; but the associated cost with this approach; if you have been speaking wrong is that it takes a while to practice speaking it right.

For example, Most of the Indian people even Drs pronounce Calcium as “Cal-Shi-um” but actually there is no “Sh” sound in it. It’s just a very small example of how our native culture have impact on our way of speaking. Many people have tendency of adding sound of other letters when speaking something. Try again how most of the people say “Pronunciation” and compare that with the tool I referred in Rule# 9

Such issues can be fixed with caution, awareness and practice. There is nothing a human mind can’t conquer or achieve.

So let’s summarize the rules:

Rule #1- Learn grammar for better English communication.

Rule #2 – Don’t focus on Accent immediately

Rule #3 – Learn Technology in English only; strictly (books, audio, video etc.)

Rule #4 – Listening results in great learning.

Rule #5 – No slang, use words which reflects respect for the language.

Rule #6- Right company, connect with people who speak good English.

Rule #7 – Think big, Start small.

Rule #8- Speak slow but steady and you will win the race.

Rule #9 – Pronounce right; this is impressive in its own way.

Rule #10 – Go global; to some extent; come out of native tongue; way of pronunciation.