Tuesday 19 August 2014

7 Signs Your Company is Agile

The Agile methodology (www.agilemanifesto.org) very clearly focusses on producing customer-ready software in the shortest possible time.  Almost every software development company these days seems to claim to be ‘Agile’, but what does it mean to truly be ‘Agile’?  

Here is a checklist to determine if your organization is in fact, Agile.



Cross-Functional, Self-Managed Teams

Developing software cannot be done in a silo; it takes different people with different skill sets working together to get the job done.  Whether business or technical, front-end or back-end, developer or tester, all roles are required to get your software to your customers.  A stream-lined process has all these people working together on a piece of software until it is ready to be delivered to the customer.  Team members need to feel free to voice their opinion, and provide corrective criticism.  There is no ‘leader’ of the team, just team members with varying skills, jobs, and experience.

Backlog

The Backlog is an ever-present list of features and / or tasks that are prioritized by management or company executives.  This serves as the basis for what the teams will be doing in each Iteration.  If you do not have a Backlog, your company is not ‘Agile’.

Acceptance Criteria

In order to meet the small time intervals with customer-ready quality, each item in the Backlog MUST contain Acceptance Criteria.  This ensures that all stakeholders are informed on what the tasks are, and what the software will need to do.  Without this, Developers don't know what to produce, Testers don't know what to test, and therefore work estimates cannot be given with any degree of accuracy.  If the items in your Iteration do not have Acceptance Criteria, your company is not ‘Agile’. 

Backlog Grooming

Backlog Grooming is vital to the success of the team, and is very commonly overlooked.  This is where the team reviews the next several items in the Backlog, ensures that they contain adequate Acceptance Criteria, and provides an estimate as to the complexity or effort of work that the Backlog items will take.  If you are not regularly grooming your Backlog or tasks are being worked on without Acceptance Criteria or estimated effort, your company is not ‘Agile’.

Iteration / Sprint Planning

The ideology of Agile Software Development is to deliver quality, customer-ready software in short time periods (called Iterations).  Iteration Planning is where the team accepts the top-ranking items from the Backlog, and commits to finishing them within the time frame of the Iteration.  Each Iteration is different (given holidays, vacations, etc.), so this step is crucial to ensure the team is not over-burdened, or under utilized.  If you are not planning each Iteration, your company is not ‘Agile’.

Continuous Integration

If you work in groups of people, and in time blocks called ‘Iterations’, does that mean your company is Agile? in small time intervals.  At the end of any of these intervals, the produced deliverables can (and should be) reviewed with all Stakeholders (yes, even the customer).  If this is not being done, your company is not ‘Agile’. 

Iteration / Sprint Retrospective

Any functional relationship must consist of some self-analysis, and and Agile Development Team is no different.  Regular analysis and correction is vital to ensure that all people have a voice, and constant improvements to the team are put in place.  If your team is not conducting regular retrospective meetings, your company is not ‘Agile’.


Wednesday 19 March 2014

How to Start Working From Home

We have all heard the benefits of working from home (http://www.forbes.com/sites/kevinkruse/2012/12/18/benefits-working-from-home/).  But as an employee, how do you start the process of making it happen? 

The working from home relationship requires a great deal of trust from a Management perspective.  Management likes to see people physically sitting at their desks.  Having people working from home is a perceived loss of control.  So, it is up to the employee to make sure that working from home is not a negative experience for Management.


Make sure the company infrastructure supports remote connectivity
You need to be at least as productive from home as you are at the office.  If there are any applications, servers, databases, etc. that you cannot connect to from home, this will deter Management from allowing working from home.  This may entail having someone at the office set up a VPN (Virtual Private Network), but it will be worth it.  If you are unsure about the tools you need to access, try connecting from home at night.  Make sure you do some work where the timestamp is noticeable (i.e. sending E-mails), so they know you are working from home.  It doesn’t hurt to let people know that you accomplished work from home.  Plus, showing that you did some work on your own time from home shows great initiative.
Have a good reason
At first, working from home may be a no-go for your Management.  So, ease them into it by having a good reason that requires you to be home.  This can be days which you are sick (and not wanting to spread your illness around the office), to sick children, etc.  The choice for Management will then be to have you home and completely unproductive (like having to take a sick day), or home and working.  I’m sure they’ll choose to have you home and working.  Once they know that you are able to be productive from home (see point #1), it may be a good idea to leave this choice up to them initially.  Tell them that you have an appointment, so you will not be able to make it to the office.  Subtly hint that you are able to get work done outside of the time that you are unavailable.
Be reachable
It is vital that the office be able to get a hold of you when they expect you to be working.  If you get a reputation for not being available, you will not be permitted to work from home.  That said, If you know that you are going to be unavailable for some time, let them know ahead of time.  This shows that you are responsible for managing your time.  Also, some people like working ‘off-hours’.  9-5 doesn’t work for some people, and as long as you are getting your work done, then it shouldn’t matter when you do it.  If you are the type of person who wants to start work early and end work early, then make sure this is openly discussed and acceptable with everyone up front.  Instant messaging is a great way to communicate as easily as if you are in the same office.  So, make sure that you always have your Status set to ‘Online’ or ‘Available’, and answer text messages, instant messages, and E-mails as promptly as possible.  If it will take some time to put an answer together, simply send a response saying that you are working on it, and will get back to them shortly.
Be productive
You need to be at least as productive at home as you are at the office.  It is up to you to make sure that your work is done at least as quickly as when you are at the office.  To that end, make sure to remove distractions, or remove yourself from distractions that cannot be moved.  When I started working from home, I had to set up my home office in the basement.  When my kids saw that I was downstairs working, they left me alone (as much as kids can).  I also started ignoring the home phone as well.  If it was an important call, they’ll leave a message.

Initially, the amount of work you get done will be under scrutiny by Management.  They prefer to have people in their chairs where they can be monitored, so make sure your work gets done on time.  This may require more hours spent working initially (specially if you are working from home with sick kids), but the initial effort is worth it.    

Not only do you need to be productive, but the people you work with and for  need to know that as well.  When I commute, I tend to leave my computer in the bag when I get home, and it stays there until I go the office the next day.  When I work from home, the laptop is always there, open, and I am far more likely to pick it up once the kids go to bed to finish what I am working on.  I like to share that story around the office as an example as to how I am more productive from home.
Have support
If you are living with someone, they need to be on board with what it takes to work from home as well.  I am incredibly lucky to be married to someone who understands that working from home is still working, and that work that doesn’t get done during the day needs to be done at night or on weekends.  Also, she helps keeps the distractions to a minimum (reminding the kids that I am working, etc.).  Not only does she help with distractions, my wife also keeps me in check.  She is always asking if I had time to get work done, and makes sure that I know if I need time to get stuff done, she has no problem with that.  Working from home does have the added advantage of being able to help with the kids, as well as have lunch and coffee with my family, so there is net benefit for us all.
Expand gradually
Once you have laid out the ground-work and worked from home due to unavoidable circumstances, this can be expanded to days that you have appointments, or to avoid being stuck in traffic due to bad weather, etc.  Depending on your circumstances, you can even argue that you are more productive if you work from home on a regular basis.  I have a one hour commute (one way) from home to the office, so this is an easy argument to make.  I started by working from home every Friday.  After a while, I changed that to also include Mondays.

Randy May
Blaazin Software