Development Team Relationships

This week I pushed out some old blogs outlining the relationships between senior and more junior developers. I did this because I thought it was very important to listen to each other. We can all learn from old and new experiences. Continue reading Development Team Relationships

Enhance Your Technology Career By Learning To Speak

Have you ever had a customer, co-worker or manager look at you as if you had two heads? When an IT Professional, speaks it is very important that who we speak to understands what we are saying. You cannot sell an idea, explain an issue or develop a project plan if you who you are speaking to does not understand. The use of jargon is the biggest obstacle that IT Professionals face. Continue reading Enhance Your Technology Career By Learning To Speak

Clean Your Desk and Your Office To Stay Focused

A Clean Desk Is a Clear Mind. How can you be productive with a messy desk? Than answer is you cannot! A messy desk is a major distraction to you. A messy room is even more of a distraction. It inhibits your focus that you are trying to apply to your work. Continue reading Clean Your Desk and Your Office To Stay Focused

Keeping a Cool Head

Recent events at work caused 3 days of fire fighting to keep systems going. It was a lot of work and was not easy. Stress levels were at an all-time high. While showing the rest of the staff that I was dedicated to fixing the issues, I managed to keep a cool head and work systematically. It’s not easy to keep a cool head, but a lot more problems can occur if you do not. We had one incident when I was in a meeting, a mistake was made that cost me a loss of 2 hours and it could have been prevented by pausing for a second. Continue reading Keeping a Cool Head

Senior should be a Junior for a Day

There are times where a Senior Developer should take a step back and become a Junior Developer.  There are times when a Junior Developer can teach a Senior Developer new skill, thoughts and patterns.  Granted there are a fair number things that Senior Developer can teach a Junior Developer.  In this blog I will discuss why a Senior should become a Junior – for a short time.  Continue reading Senior should be a Junior for a Day

Getting Out Of My Comfort Zone

I have often lived in my own little bubble as most technology-geek-type people do.  I hardly stepped out, stretched myself and joined the world outside.  In the last little while I have had the opportunity to expand my world and I took it.  I was asked to attend a networking function with a friend.  I had probably met a half dozen professionals from various disciplines.  Again this week an opportunity arose where by offering to help pay for a website renewal, I had the opportunity to hide in my bubble and pay with PayPal or go hand deliver the money and meet someone new;  I chose to meet someone new. Continue reading Getting Out Of My Comfort Zone

Driving to Your Goals

Monday night at London Western Toastmasters, I gave a speech about getting the momentum going. It was geared to getting used to speaking, getting in front of the club and practicing. I had equated it to driving a 5 speed transmission car. When we start looking at our goal, we are stuck in neutral. Continue reading Driving to Your Goals

How I Achieved Decent Search Ranking

I recently showed my hit stats for my website to a friend, which include the GOOGLE and Yahoo queries. I was asked how I achieved my ranking. I typically see a rank between 3 and 20, which I consider respectable. Most of my ranking is under 10, which is really good.   I am actually surprised how people find me as it can be a very obscure search.

Could it be better? Probably, but this seems to work for me

Example ( real rankings 11/03/2011 ):
Ranking 22: www.google.co.uk — c#/ .net blogs in london + cv
Ranking 02: www.google.ca — software developer london ontario
Ranking 05: www.google.com — how to use equalsignorecase in javascript
Ranking 01: wwww.google.lv — excel interop in web service
Ranking 14: www.google.ca — london ontario computer programmer

Here is how:
1. Fresh Content ( Blog, Twitter Feed, Other Dynamic Content )
2. Have description and keyword meta tags relevant to your content on the page ( Each Page should be unique )
3. Put title attributes on links / menu items
4. Put alt attributes on images describing the image
5. Have unique titles on each page
6. Do not use tables to structure your web page
7. Use H1 and H2 tags for page and paragraph titles
8. Optimize your webpage and images for speed.
9. Have a site map ( link page ) outlining links to your content
10. Use GOOGLE’s and Yahoo’s webmaster tools for site maps and analytics
11. Use and understand GOOGLE Analytics tool
12. Have other sites link back to you that our relevant to your site.
13. Use Twitter, LinkedIn and Facebook to promote your fresh content.

Building a C-Sharp Class

I have created this example of a C# class to demonstrate one way of creating a basic class cbject representing one employee.  This class could be used as a starting point for just about any object.

Take note that there are no business rules in this example.  It is of my opinion that you create a basic object first and create a business class second which extends the basic object.  In the business class you may put an EmployeeNumber generator, MaxLength controls on the fields, Phone number validation and other rules that may apply based on your business practices.  A business class will be demonstrated in a later blog.

You may also want to create a collection class.  A collection class or a manager class would manage a collection of objects with Add, Remove, Select, Sort type functions.  This too will be demonstrated in a later blog.

    /// <summary>
    /// Class Object Representing Employee
    /// </summary>
    public class Employee : Dictionary<String, Object>, IEmployee
    {
        // ***********************| Properties |***********************
        /// <summary>
        /// Employee Number
        /// </summary>
        public String EmployeeNumber
        {
            get { return (String)this[GetName()]; }
            set { this[GetName()] = value; }
        }

        /// <summary>
        /// Employee's First Name
        /// </summary>
        public String FirstName
        {
            get { return (String)this[GetName()]; }
            set { this[GetName()] = value; }
        }

        /// <summary>
        /// Employee's Last Name
        /// </summary>
        public String LastName
        {
            get { return (String)this[GetName()]; }
            set { this[GetName()] = value; }
        }
        /// <summary>
        /// Employee's Address Line 1
        /// </summary>
        public String Address1
        {
            get { return (String)this[GetName()]; }
            set { this[GetName()] = value; }
        }

        /// <summary>
        /// Employee's Address Line 2
        /// </summary>
        public String Address2
        {
            get { return (String)this[GetName()]; }
            set { this[GetName()] = value; }
        }

        /// <summary>
        /// Employee's City
        /// </summary>
        public String City
        {
            get { return (String)this[GetName()]; }
            set { this[GetName()] = value; }
        }

        /// <summary>
        /// Employee's Province / State
        /// </summary>
        public String Province
        {
            get { return (String)this[GetName()]; }
            set { this[GetName()] = value; }
        }

        /// <summary>
        /// Employee's Country
        /// </summary>
        public String Country
        {
            get { return (String)this[GetName()]; }
            set { this[GetName()] = value; }
        }

        /// <summary>
        /// Employee's ZIP / Postal Code
        /// </summary>
        public String ZipPostal
        {
            get { return (String)this[GetName()]; }
            set { this[GetName()] = value; }
        }

        /// <summary>
        /// Employee's Home Phone Number
        /// </summary>
        public String HomePhoneNumber
        {
            get { return (String)this[GetName()]; }
            set { this[GetName()] = value; }
        }

        /// <summary>
        /// Employee's Cell Phone Number
        /// </summary>
        public String CellPhoneNumber
        {
            get { return (String)this[GetName()]; }
            set { this[GetName()] = value; }
        }

        /// <summary>
        /// Employee's Full Name ( ReadOnly )
        /// </summary>
        public String FullName
        {
            get { return String.Format("{0}, {1}", FirstName, LastName); }
        }

        /// <summary>
        /// Employee's Start Date
        /// </summary>
        public DateTime StartDate
        {
            get { return (DateTime)this[GetName()]; }
            set { this[GetName()] = value; }
        }

        /// <summary>
        /// Employee's TerminationDate ( Nullable )
        /// </summary>
        public DateTime? TerminationDate
        {
            get { return (DateTime?)this[GetName()]; }
            set { this[GetName()] = value; }
        }
        // ***********************| Constructor(s) |***********************
        /// <summary>
        /// Constructor
        /// </summary>
        public Employee()
        {
            Initialize();
        }

        /// <summary>
        /// Employee
        /// </summary>
        /// <param name="employeeNumber">Initial Employee Number</param>
        public Employee(String employeeNumber)
        {
            Initialize();
            EmployeeNumber = employeeNumber;
        }
        // ***********************| Methods |***********************

        /// <summary>
        /// Initialize the Class
        /// </summary>
        private void Initialize()
        {
            EmployeeNumber = "";
            FirstName = "";
            LastName = "";
            Address1 = "";
            Address2 = "";
            City = "";
            Province = "";
            Country = "";
            ZipPostal = "";
            HomePhoneNumber = "";
            CellPhoneNumber = "";
        }

        /// <summary>
        /// Get Method Name
        /// </summary>
        /// <returns>First and Last Name</returns>
        public String GetName()
        {
            StackTrace stackTrace = new StackTrace();
            StackFrame stackFrame = stackTrace.GetFrame(1);
            MethodBase methodBase = stackFrame.GetMethod();
            return methodBase.Name.Replace("set_", "").Replace("get_", "");
        }

        /// <summary>
        /// Re-initializes the Class
        /// </summary>
        public void Reset()
        {
            this.Clear();
            Initialize();
        }
    }