As A Good Technical Lead

/* DISCLAIMER: This blog post is purely based on my personal observation and experience. The views expressed are mine alone */
Whether you call it Technical Lead or Dev Lead or Team Lead or Lead Programmer, this blog post is about the role and some of the characteristics Good Technical Lead must have.

A Central Role

Trust me, Dear Reader, if you are a technical lead or in a similar role you really have a central and significant position in the overall software development life cycle. Being the owner of the technical solution, your job is to ensure the smooth execution of development activities at least till the project is handed over for production.

 You are not only face to the management but also a bridge between different groups such as software developers, architects, Testers, End users etc. You are also responsible for compliance of standards such as coding and design standards.
However, a reality is that this job role is more towards management and less towards technical.
As a Good Technical Lead…
 
To discuss the must have attributes of a good technical lead, let’s divide the title “Technical Lead” into two areas:
  • Technology
  • Leadership

Technology

Know the every bit of the solution you are working on. Dive deep and understand the big picture of the technical solution and the customers’ need. This will help you contribute not only in the features/functionality proposed but also you will be able to guide developers in a better way.
Okay you neither have time in hand nor cost, the only thing you have in your hand is project/feature scope! Rule it!!!
Act as true mentor. Yes you did well when you was developer, now it’s time to share your knowledge with juniors, try to replicate your knowledge, your experience. Help them in managing themselves and their day to day development tasks.
Embrace new technologies and believe in continuous improvement. As a technical lead, you are required to always look for continuous improvement in software construction. Adapt new tools to improve approach and productivity over time. This will help develop learning agility in the team.
Ensure better design. Try to make good design and coding habit of your team.
Delegate the overall development tasks effectively. However, at times, it is suggested to do some percentage of coding as well. This will add more respect in front of your team.  
Your passion towards technology counts! after all it’s software engineers you are leading.

Leadership

You will be interacting with different set of people with different attitude, different temper and different background. As an good leader you should have strong ability to listen people and listen them very well. Be clam and humble to hear their concerns and resolve them in best possible way.
As a lead developer, your every act should be inspiring for your team members. Also, It is important to walk your talk. We would definitely not like managers who does not act upon his own principles.
Know your team, their interests, their concerns, their strengths, their weaknesses and their growth.
Encourage team work and discourage blame game at least within the team. This will help people focus on the ultimate goal and will forgive each others mistake. Let them realize that they all win together and they all lose together.
Your ability to look in the cloudy future will reflect your proactive approach. Looking ahead of time and think what can go wrong will help you prepare for better execution tomorrow.
Maintain a positive environment and ethics within your team.
**********************************************************************************************************************************
These are some of the attributes I think as a good technical lead one should posses. Please feel free to comment your experience or what you believe a good lead should have?

Debug Class in .NET

One of the alternative yet under utilized way to debug code in .NET is using Debug class found in System.Diagnostics Namespaces. This class really gives bunch of functionalities to developer that are very useful for debugging and I wonder why but I have observed that fewer percentage of developers use it. So I thought to share the usage of Debug class with developers out there as I found it very useful.

I will directly jump to code snippet demonstrating the functionality of Debug class:

using System.Collections.Generic;
using System.Diagnostics;
 
namespace DemoDebugClass
{
    public class Customer
    {
        public int    Id   { get; set; }
        public string Name { get; set; }
        public int    Age  { get; set; }
    }
 
    public static class CustomerExtensions
    {
        public static void PrintCustomersBelowAge25(this IEnumerable customersList)
        {
            foreach (var customer in customersList)
            {
                Debug.WriteLine(string.Format("Customer Name: {0}", customer.Name));
                Debug.WriteLineIf(customer.Age < 25, "Required Customer Found!");
            }
        }
    }  
 
    class Program
    {
        static void Main(string[] args)
        {
            List customersList = new List();
            customersList.Add(new Customer { Id = 1, Age = 30, Name = "Customer A" });
            customersList.Add(new Customer { Id = 2, Age = 15, Name = "Customer B" });
            customersList.Add(new Customer { Id = 3, Age = 20, Name = "Customer C" });
            customersList.PrintCustomersBelowAge25();
        }
    }
}

In the above code snippet, we have a customer class and assume that we are interested in finding customers below age 25 as shown in code snippet above. With the Debug.WriteLine you can print data to Output Window in Visual Studio (View –> Output Window) and even conditional data as well, as depicts in image below.

Output Window

Now this is really interesting because it gives liberty to developers to debug the program and data without using breakpoints as most of us used to do. Further these lines are only executed when the program is executed in Debug mode. Besides, this also allows you to easily share the output log with your colleagues.

So go ahead and give it a try! If you don’t use it for some reason then please share your remarks in comments below. Happy Coding!

Sessions on Web Development

Good Job NED Volunteers Thumbs up 


Source: http://www.devnextug.org/2011/04/sessions-on-web-development-using.html

On request of students from NED University of Engineering and Technology, DevNext User Group recently organized two day sessions on Web Development using ASP.NET at NED University. The sessions were held on 12th and 19th March, 2011.

The purpose of facilitating such sessions was to provide students firm understanding of web architecture and development using HTML, JavaScript, CSS and ASP.NET.

We would like to thank speaker and our volunteers at NED University for organizing such useful sessions.

About Speaker:

Mr. Anas Raza is a graduate in Computer and Information System from NED University and currently working as Software Engineer at ITIM Pakistan.

About DevNext User Group:

DevNext is a user group which has been created with the intention of providing a platform for the Next Generation Designers & Developers sharing and discussing knowledge regarding different tools and technologies. Our mission from inception has been to develop a peer group of developers, designers, architects, and managers who are interested in learning, sharing and growing their knowledge and capabilities. The group’s vision is to provide members with a forum to hear top industry experts speak, learn and teach others who are interested in the same technologies as you and are facing the same challenges.

Interested in organizing technology sessions in your University? Please contact us at contact@devnextug.org and we will be happy to assist you.