Showing posts with label User group. Show all posts
Showing posts with label User group. Show all posts

Thursday, February 11, 2010

Agile Best Practices : Refactoring

Yesterday, 10th Feb 2010, i was invited to speak at a Techies UG event, here in Dubai, UAE.

I started off the discussion with defining the practice of refactoring and i quoted Martin Fowler's blog as following


•Refactoring is a disciplined technique for restructuring an existing body of code, altering its internal structure without changing its external behavior.

•Its heart is a series of small behavior preserving transformations.

•Each transformation (called a 'refactoring') does little, but a sequence of transformations can produce a significant restructuring.



After this we moved on to the best practices for refactoring classes. Following is a list that we discussed:-

  • Comments
  • Long Method
  • Long Parameter List
  • Duplicate Code
  • Large Class
  • Type Embedded In Name
  • Un Communicative Names
  • Inconsistent Names
  • Speculative Generality

The session was very intense with everyone chipping in with their comments and i thoroughly enjoyed hosting it. Towards the end Anton and I wrote couple of code snippets to check the Andrew idea of using Interfaces (more on it later on). Rolf also chipped in with his comments and critiques. Notable absentees were Ron and Zubair and it would have been much more fun had they attended the event.



ps: watch out this post for snaps from the event.

Edit#1: Rolf's blog post on the event is live http://techiesleaders.spaces.live.com/Blog/cns!50531D3D6442376A!214.entry

Monday, January 25, 2010

Agile Discussion - Part 1 of X

Last week I was invited by @RolfEleveld to participate in an Agile development discussion for his user group (TechiesUG) event. It was fun sitting with a bunch of geeks and having an open discussion on what is Agile development and how to convince stake holders (including customers/senior managers) to adapt to it. During the discussion following questions were raised (specially by ZubairDotNet)...


- Which one is the best Agile APPROACH?
- How often should we do Code Reviews, Does it slow you down?
- How does Agile work for Consultancy scenarios?
- What if the client is not part of the team, who acts as a proxy in Agile team?
- Whats the role of an Architect in an Agile team?
- How does estimation work in an Agile practice?

Before I move on to answering these questions, to set the context right, i would like to bring your attention to "The Agile Manifesto", it says:

  • Individuals and interactions over processes and tools
  • Working software over comprehensive documentation
  • Customer collaboration over contract negotiation
  • Responding to change over following a plan
Now let me try and answer these questions, one by one:-

1- Which one is the best Agile APPROACH?
There are a bunch of available methodologies:-
Scrum
Extreme Programming (XP)
Agile Unified Process (AUP)
DSDM
Essential Unified Process (EssUP)
Feature Driven Development (FDD)
Open Unified Process (OpenUP)
Lean software development
etc.

IMHO, generally, the combination of SCRUM and XP works the best. In this combination, SCRUM dictates management aspects whereas XP rules software development practices like, Pair Programming, Refactoring, Continous Integration, TDD etc.

2 - How often should we do Code Reviews, Does it slow you down?
There are two common types of code reviews. One is formal code review which comes with all the bells and whistles (i.e. all the formality of setting up schedules, e.g. weekly code review by so and so to check this and that etc). Purists/Agilists tend to steer clear of this type of approach. The second approach, which is inline with heart of agile, is lean and mean.
If you are following XP then you are, by virtue of pair programming; pretty much getting code reviews all the time.
IMHO, in practice, its good to have atleast daily code-reviews (i.e. if you are not doing pair-programming 24X7). It also makes sense to run automated constraints at check-ins/builds (and validate some coding/design principles with the help of tools e.g. TFS's code analysis check in policies)
This is one of the classical scenarios where Architects come in handy (more on it later).
In a nut shell, code reviews dont slow you down, if anything, they help you with the quality of the software which makes it easy to maintain and undestand as well as less pain to change later on.

3- How does Agile work for Consultancy scenarios?
This is a bit tricky question. In a nut shell, it depends on the client. If we cast aside some misconceptions (like agile means no documentation, no planning, no up front design etc) about Agile then we can certainly benifit from it for most of the software development scenarios. As consultants we should definately try and sell our side of the story.
However in practice, we will win some and we will loose some.

4- What if the client is not part of the team, who acts as a proxy in Agile team?
It's generally accepted that If you dont have customer then you have to invent one. I would say it makes sense to invent more than one, infact ideally, each developer should understand the domain of the business problem. Practically some one senior (read 'Architect', more on it later) from the team should/could act as a so called proxy.

5- Whats the role of an Architect in an Agile team?
6- How does estimation work in an Agile practice?
to be covered in separate dedicated posts.

I will need to sign off now and hope to answer the remaining questions sometimes tomorrow.

Untill then happy reading and feel free to post your comments/questions and i will make sure that i will get back to you ASAP.

you can also follow me on twitter @ http://twitter.com/hammadrajjoub

Edit 1: fixed the links.

Monday, August 31, 2009

Gulf Developer Podcast Series - updated

I am extremely pleased to announce the very first 'Microsoft.Net focused podcast series in the Gulf'. Let me give you a little bit of background first and then we can drill down into the details of who, what, how and when.

History
Having been in Dubai, on and off, for past 4-5 years and being Microsoft MVP all the while has given me an oppurtunity to work with local developer communities here in the Gulf. In terms of dev communities, Kwait (with dotnetboom http://www.dotnetboom.net) and Qatar (with oryx dev http://oryxdev.com/en/default.aspx) have been successful with setting up their user groups. Unfortunately we dont have similar success story for the UAE in particular and the rest of Gulf in general.

The Motivation
This lack of dev community itself is a biggest motivation for trying to bring all the developers on a common platform. Objectives include empowering regional Microsoft developers with relevant technical content on Microsoft Platform, presenting topics in English/Arabic, sharing ideas, learning from each others experiences/mistakes and above all finding an oppurtunity to get in touch with like minded professionals across the region.

The Idea
From years of experience we have learned that its difficult to get developers to come and attend user group events in the emirates. Generally this is attributed to problems related to 'commuting' to and from the event venues as well as lack of well designed event calendar(schedule).
To mitigate these potential issues, initially, myself and Anton (from Microsoft Dubai) agreed on hosting a developer podcast series. The idea was discussed when Somasegar was visiting Microsoft Dubai and hosted local dev community for an informal talk/lunch at Microsoft Dubai office in DIC - Dubai Internet City last month.
Later on Anton introduced me to Ron and we became partner-in-crime and started co-hosting the podcast series.

The Plan
The plan, as i said, is to host a series of sessions targetting regional developer community. Come up with a clear agenda and share the detailed schedule with the developers so that they can mark their calendars and look forward to the events that they think are most relevant for them. Ideally, try and host these podcasts to MSDN Channel 9 so that the content can be downloaded easily and reaches the broadest possible audience (and yes, be listened to while driving on Sheikh Zayed Road ;)).

The Schedule
Following shows have been recorded so far:-

1- Agile Development 101 (myself and Ron)
2- Localization in .Net with Dina Lasheen
3- Understanding Microsoft Enterprise Project Management with Bilal Okour
4- Understanding Sharepoint 2010 with Mostafa Arafa.
5- Inside Sharepoint for Arabs Part 1 with Aymen El Hattab
6- Inside Sharepoint for Arabs Part 2 with Marwan Tarek


Whats Next
- Look out for preview release in about week's time (we will be releasing at least 2 episodes for free public access)
+ Watch out for special Tech-Ed focused episodes
- Hosting key speakers and asking them what to expect in their Tech-Ed talks
- Talking to people who are working behind the scenes and making this event happen.
- A dedicated episode on .Net Community in Jordan
- Follow us on Twitter for instant updates. http://twitter.com/DotNetMEPodcast
- Provide us with your feedback on twitter or this blog post

Sunday, April 06, 2008

User group event: Web 2.0 in Enterprise

<dotNetBulls/> hosted their first technical event on 11th of March, 2008. Topic for this event was "Web 2.0 in Enterprise" and it was hosted by Linda Chong, from Microsoft. Linda Chong works for Microsoft in the capacity of Architect Evangelist and she has 12 years of extensive experience on management, consulting, evangelism, architecture design/review, pre-sales engagement and systems integration in the areas of SOA, Web 2.0, e-business/e-commerce and enterprise application integration (EAI). Event started with Hammad Rajjoub introducing <dotNetBulls/> and speaker.


Linda started off with talking about Software + Services and Web 2.0 and where it stands today and then moved towards Microsoft's Silverlight and its applications in local/international market. It was a successful event that saw a conference room filled with geeks, snacks (thanks to SDC) and guest speaker engaged in technical dialogue for more than an hour.