The trouble with Agile thinking

I work with numerous dev teams and clients in various industries and find that it is extremely challenging for many companies to function in an agile fashion. The trouble is that it is easy for people to talk about and use tools but it is extremely difficult to change behaviour. As a tech person myself I also love the bells and whistles that come with new technology or new approaches to solving problems but all over the world tech people (engineers) are the people that shape the future of the projects and solutions that needs to be built and struggle to change the way they deliver these projects in a way that fits the requirements of the solution rather than fitting their hunger to try new exciting things during the delivery of the task at hand.

When we are empowered by technologies such as VSTS (Visual studio team system) / TFS / JIRA or similar Agile management and delivery software it makes us think that we can now control the outcome of our solutions in a more structured way because we have the tools to make us more agile. We can sit down with business and not commit to timelines because we are sizing the work that needs to happen on complexity and not on commitment of time. We are in control because we determine what happens in the next sprint and we can keep tabs on our progress everyday and in every sprint or release. When something slips we assume the stakeholders will know since they have access to what we can see from a reporting perspective. All of these are part of various topics and aspects we might think about once we are empowered by tools as mentioned , but we forget the most important principles.

  • Tools don’t make us AGILE  ,Team work does.
  • Being AGILE  does not mean that there is no structure, in fact there is more structure and control than before.
  • Being AGILE  means that we look for opportunity to continuously improve ourselves and our teams and improve the quality of the product and the value that we deliver to our clients.
  • Being AGILE  means that we should communicate about problems when they occur and adapt to them as quickly as possible.
  • Being AGILE  means we need to add value right from the beginning. We should listen to what the client/ product owner requires and not what we think is the best thing to do.
  • Being AGILE  means that you have to share your experience with other. TEAMWORK is a very important important aspect of the success of a project (A team is only as good as the weakest point within it)
  • To be AGILE  you need to be willing to learn things that are outside of your comfort zone because that’s how we improve the team itself and also build contingency for the future
  • To be AGILE you need to be consistent.
  • To be AGILE you need to be focused on the task at hand and not worry about what is coming 6 months along the line.

In my opinion the recipe for being agile is talking a ubiquitous language within your teams so that everybody is on the same wave length when it comes to communication and understanding. Your teams also needs to move away from old ways of thinking and this takes some serious effort from the entire team including both the tech staff and business staff.

The process of becoming AGILE is a learning curve for everyone and remember it does not happen over night. But the most important aspects to remember is that we have to think about PEOPLE FIRST as software and solutions are not built by tools or processes but by PEOPLE.

Share your opinion, I would like to hear what you think

Advertisements

A new leaf

newleaf

I have never been good at writing out the knowledge stuck in my head to share with people, I usually opt for the face to face type conversation to share ideas and thoughts as it is a bit more interactive.I also love presenting at conferences and really engaging with peers and fellow technology enthusiasts but this year however I have decided to try and refresh my Blog by sharing more knowledge on it related to my technical experiences and findings in the field embracing the technology we preach on a daily basis.

In the coming months I will share info around ALM  / AZURE / IOT and various aspects of my technology passion. Stay tuned and remember comments and questions are always welcome.

 

Microsoft Re-naming Hell

Had to install SSIS dev tools today, and realized that Microsoft has changed the name of the tools to “Sql Server Data Tools” for Visual studio 2012. All nice and dandy, but what they did not tell you is that there are 2 packages that do different things with the same name. aarrrrrgggh.

Soooo, for the people that are looking for the tools formerly known as Business Intelligence studio here is the links to the different products.

Hope this clears up the confusion for some.

Till next time.

Installing Node.js on the Raspberry PI

I’ve been playing with one of my raspberry pi device quite a lot lately and though that it can actually be the perfect little dev server for me as it is quite portable and really powerfull. I bought a multitude of SD sticks for it and even got it to go off a USB flash stick. Its a realy nice tinkerer’s device.

To get straight to the point I though I would share a script I wrote to get the latest node js (Well at least currently version 10.0.5) going on your box. With previous versions you had to compile it on your pi and do all kinds of interesting things to actually get it to compile. They have made it really simple at this point and to get it going , you have to do the following easy steps:
  • You have to download the Pi specific version.
  • You then have to unpack it.
  • You then add it to your bash.rc as an extra path paramater to the extracted node bin path (if your not using bash, it should be similiar in your shell).
And thats it. 🙂
I have also provided the script here to simplify your life.
Hope this helps at least someone out there. Did the trick for me 🙂
#!/bin/bash
#Get all the prerequisites needed
echo "===== Get all pre req's ! ====="
sudo apt-get install python2.7 make
echo "=== Go to the local folder where we will deploy. ===="
cd /usr/local
sudo mkdir node
cd node
#Get the latest version of Node for PI - at this point in time it is 10.5
echo "===== Downloading Node ! ======"
sudo wget http://nodejs.org/dist/latest/node-v0.10.5-linux-arm-pi.tar.gz
echo "===== Unpack the archive ! ====="
sudo tar xvzf node-v0.10.5-linux-arm-pi.tar.gz
echo "===== Rename folder to a simpler name ! ====="
echo "===== (RENAMING THE FOLDER IS OPTIONAL) ====="
sudo mv node-v0.10.5-linux-arm-pi node-v10.5
cd node-v10.5/
#echo "===== Configure it ! ====="
#sudo ./configure
#echo "===== Compile and install ! ====="
#sudo make
#sudo make install
echo "==== Add link to path as v 10.5 is compiled already ====="
sudo echo 'export PATH=$PATH:/usr/local/node/node-v10.5/bin'>> ~/.bashrc
echo"==== Now we will check if it is all there ===="
node -v
npm -v
echo "==== DONE ===="

Entity framework membership and role provider for MVC 3 and bootstrap

 

I recently started on a new implementation built on Microsoft MVC3. The problem I had was using the ASP.Net role and membership providers that ship out the box. They depend on a database created and configured using the ASP.Net forms auth tools , and sit in there own little database on sql server(or express or compact, whatever you are using). You can get around that by adding your data to the standard created database , but that’s kind of a hack(Not so cool Sad smile )and the fact is that I am using EF-Code first that provides me with some nice features for rapid development and proto typing of needed functionality thus the schema of the database will change quite a lot during the development process.

Digging a bit deeper into the out of the box forms auth , I found that there is also quite a lot of functionality that I would not use and thus the whole idea of using the out of the box forms authentication went out the window. Managing 2 databases (the forms auth one and then my own one) = not cool. Bloated code that has no use in the context = not cool.

So I decided to write my own providers to simplify my life for this project and for future projects with similar requirements (there will be plenty of them I’m sure.) I implemented 2 classes that inherit from the default providers to roll my own simpler authentication namely:

    public class CustomMembershipProvider : System.Web.Security.MembershipProvider   {}
    and
public class CustomRoleProvider : System.Web.Security.RoleProvider   {}
    NOTE: You have to then implement all the base methods from the abstract class inherited from and hook them up to the web.config and controllers, but its left out of this post as it is beyond the point that I am trying to make.
    I hooked it all up using Entity framework for storing the data in my own data structures, replacing the default providers with my own in the configs , and modified the default account controller in the MVC 3 template as provided and SHABANG !!!!!! ALL DONE.
    It all worked like a charm and provided a simplified mechanism with exactly what I needed.I then read up a bit about simple UI and designs for MVC (since I am not a design guru I generally try and see how other people do it Smile) and I came across an article of a gentleman by the name of Ryan Hayes. He has created a nifty little mvc3 template for VS2010 that contains an implementation of the open source EF-Code First Provider  membership provider that does pretty much exactly what I wanted. (Nice timesaver for people interested).
    He also made use of a very nice little framework from the guys at twitter called Bootstrap that helps quite a lot with look and feel for technical people like me. I found it very nice and useful for making your apps look quite slick when you are artistically impaired like myself.

How to make your MAC-OS shell look pretty

If you are from the Linux world or maybe familiar with the Ubuntu shell (or any other distro you prefer) like me, then you would find the Mac OS shell quite dull. It is pretty much black text on a white background by default and that is not always nice when executing commands or when spending some time in the shell. For example , when you run the “ls” command you would like to see the highlighting in differences between files and directories, or read-only and executable files. This functionality is default in Linux but in Mac …….. well……. not so much.

I will explain in some detail in this post how to make your Mac shell a tad more nicer with some colouring via some screenshots taken on my Development box.

(Note: to take screenshots on MAC you can use the following commands :

  • Command-Shift-3: Take a screenshot of the screen, and save it as a file your desktop
  • Command-Shift-4, then select an area to capture and save it to the desktop
  • Command-Shift-4, then space, then click a window and save it to the desktop
  • Command-Control-Shift-3: Take a screenshot of the screen, and save it to the clipboard
  • Command-Control-Shift-4, then select an area and save it to the clipboard
  • Command-Control-Shift-4, then space, then click a window and save it to the clipboard )
  • We first need to open up a terminal and then type in the command to open up the profile file (Very important that if this file does not exist you would have to create it in the root of your home folder). This is done by executing the command “edit ~/.profile”
  • Screen shot 2011-08-12 at 11.03.06 AM

  • You can then add the following exports as depicted in the image below to add colouring to the commands of your terminal for your profile.       Screen shot 2011-08-12 at 11.03.33 AM
  • You can then close your terminal, and open up a new instance.
  • Then run the following command “ls” to see the colouring magic applied on your terminal.
  • This is GREAT, but we are still stuck with the burning white as a background in the terminal. To change this you need to click on the preferences of the terminal once a terminal is open.Screen shot 2011-08-12 at 11.07.35 AM
  • When presented with the preference screen , you can select your theme (mine is set to homebrew) and set that as default.Screen shot 2011-08-12 at 11.08.12 AM
  • Then close your terminal , and open up a new instance.
  • You will then see the colours has changed, and when you run the “ls” command you will see the colouring on terminal commands as well. Screen shot 2011-08-12 at 11.09.00 AM

That’s it for changing your shell to look similar to the Linux one. Have fun , and let me know if you struggle.

 

NOTE: If my images look funny that’s because I blocked out the computer and user name from the shell with the red block, so yours will definitely look different there. Smile