8th June 2010

5 Tips For Effective Leadership

Unfortunately, most of my previous leaders have led by example of what NOT to do and how NOT to be an effective leader.  Currently I have good leaders which has been a wonderful change.  Below are 5 simple steps for becoming a better leader.

  1. Admit when you are wrong: There is no more sure sign of weakness in a leader than one who cannot admit when they are wrong.  It is a sign of cowardice and foolishness.  Ironically, they believe it is a sign of power and authority; however, since others know they are wrong it ends up proving that they are egotistical and cowardice.  It is very easy to admit when you are wrong.  No one expects you to be perfect and most people prefer a leader who is honest and humble with them so admitting when you are wrong is the first step to being an effective leader.  My previous “leader” taught me this lesson very well by being the opposite of what he should have been.  See here.
  2. Do not lie: One would think this would be obvious but it has amazed me at how many leaders believe lying is good.  There is a difference between not telling the complete story and lying.  It is not always necessary to share every piece of information with employees as sometimes the information may be confidential but there should never be a reason to lie.  My previous “leader” called a company meeting to chew everyone out because a database had been lost.  The network services team had not been doing the backups they were supposed to be doing and the sandbox server crashed.  My “leader” tried to make us all feel bad for screwing up by telling us that we had lost $1200 per person of profit sharing because we would have to give money back to the customer.  To make a long story short it turns out we found an old backup of the database which was exactly what we needed and even funnier was that the backup had been emailed months ago to our “leader” per his request and he had forgotten.  Not only did he never apologize but he never paid out the profit sharing since he did not now have to pay back the customer.  He never had any intention of paying us that profit sharing, he just wanted us to feel bad.  Don’t lie.  Eventually it will bite you.
  3. Provide clear vision of direction: The main function of a leader is to “lead”.  Leaders need to let people know where they are going and then to lead them there.  At my previous job we never had clear direction of where we were going.  We simply worked on project after project and none of them related to each other in any way so we always felt like we were bouncing around.  Leaders need to lead.  Employees will be much more effective if they understand what they are working towards.
  4. Communicate effectivelySee a recent Dilbert strip.  My previous “leader” was terrible at this which is why it has made my top 5 list.  We could rarely understand what he wanted and were always confused by his emails since he very often contradicted himself in the email.  Unlike the Dilbert strip, my previous “leader” was very technical and should have been able to communicate with us well.  He was full of fancy wording but never really said anything.  Often I would send an email that required a one word or one sentence response and would get several paragraphs of “marketing” material back.  In fact, I was supposed to have been given a raise and had not yet so I asked him in email when I would and his response was “we are making minimal adjustments among managers to create additional parity.”  When I asked him to explain he quoted himself and said he had already answered me.  That was an answer?  Wow.  Turns out the answer was yes, I was getting a raise and it would be in the next paycheck but it took many paragraphs and several back and forth emails to finally get to that simple solution.  Too funny.  Even funnier was that he often lectured our team on needing to do a better job of communicating.
  5. Be a team player: You win as a team and you lose as a team.  A former “leader” of mine claimed that “When we win, I give you all credit and when we lose I take all of the blame.”  That is a great statement; however, in this case it was not true.  Years ago when I worked in the grocery business I had the best manager I have ever seen.  He worked right along side of us and truly lead by example.  He was a team player and because of that he was greatly respected.

These 5 steps are easy to implement and should be done.  Effective leaders will self-assess from time to time and make adjustments as necessary.

posted in Management | 1 Comment

5th June 2010

jQuery Conditional Formatting

The jQuery contains and not functions are great for doing conditional formatting.  Along with the power of chaining in jQuery you can easily change the look of something in the browser window through a simple jQuery call.

For example, suppose you have a grid view and you are grouping by a certain column and you need each group to total 100% in one of its columns.  (Note: I am not going into detail of which grid view control you use.)  You could do these 2 lines of code:

  1. $(”tr[type=TotalRow]:contains(’100.00%’)”).addClass(”Valid”);
  2. $(”tr[type=TotalRow]:not(:contains(’100.00%’))”).addClass(”Invalid”);
  • $(”tr[type=TotalRow] - This will select all table rows that have an attribute named type which has a value of TotalRow.
  • :contains(’100.00%’)”) - This will further filter the list of table rows returned by ensuring that they have the text ‘100.00%’ in them.
  • .addClass(”Valid”); - This adds a CSS class of name ‘Valid’ to every table row that met the criteria.  In this case, every table row that has an attribute named type and a value of TotalRow as well as having the text 100.00% will have the ‘Valid’ CSS class applied to it.

The second line of code simply uses the not function so that it finds any table row that IS of type TotalRow and that does NOT have 100.00% in the row somewhere and then adds a CSS class named Invalid.

Pretty simple and easy to do.

posted in jQuery | 2 Comments

3rd June 2010

Just Be Wrong

My favorite Dilbert strip is http://www.dilbert.com/strips/comic/2009-09-04/.  At my previous job this comic strip sums up my old boss perfectly.  He was a great guy but he never could be wrong, even when he was wrong.  He was the type of guy that would change the rules just so he could be right.  I have email after email of proof where he says one thing and then changes it later in the thread and then denies it and then will not even admit he was wrong.  It got to the point to where it was very funny actually.

I think humor really is the “best medicine” for situations like this.  We cannot expect anyone to be perfect but it should not be too hard to admit when you are wrong.  Pride gets in the way but it is even more damaging when you do not admit it because it is clear to everyone else that you are wrong and yet you continue to insist you are right.  At that point, you just look like a fool.

When I first started my previous job there were just 5 of us.  Myself and another developer would often get emails from the boss that would not make any sense or that contradicted himself within the same email.  I used to ask what we were supposed to do and the other developer would just shrug it off.  He was used to nonsense emails from the boss.

2 pieces of advice:

  1. When you are wrong, just admit it.  It is not that hard to do.
  2. If you have to deal with people like this especially if it is your boss I suggest you find humor in it or else you may lose your mind.

posted in General Software Development, Management | 1 Comment

22nd May 2010

How To Use jQuery To Call A Function in iFrames.

The jQuery .each() function is a great way to iterate over elements and even perform a function against them.  For example, if you have a web form that has multiple iFrames and you want to validate each of the forms all at once you can do the following jQuery call.     $(“iframe”).each(function(index) { try { this.contentWindow.Validate(); } catch (e) { } });1. $(”iframe”) - will select all iFrames in a given page.2. .each() - calls a function for each iFrame3. “this” inside of the each() function actually refers to the iFrame in this case.4. function(index) { try { this.contentWindow.Validate(); } catch (e) { } } - This accesses the actual page of each iFrame by calling contentWindow and then the name of the function Validate.  This means that each page that is loaded in an iFrame has its own Validate JavaScript function either directly or through an includes file.5.The call to Validate() is inside a try/catch block in the event that one of the pages may not have a Validate event.  That will throw an Exception which is not important for this example.

posted in jQuery | 4 Comments

21st May 2010

Employee Ownership

I used to believe that Employee Ownership was a great incentive to work for a company.  In fact, that was the deciding factor of my previous job.  I had three other offers besides the one I took and what really made the decision for me was that I would be a part owner of the company.  I took the job.

I then found out my boss had lied and that I would not have ownership, which is a different story altogether; however, when I found out the details of the ownership I was no longer upset about not getting ownership, I was only upset for ever taking the job.

The deal was you had to pay money to get the ownership.  How is that an employee benefit?  It is not.  I can own a part of any publicly traded company in the world including Microsoft, HP, IBM, etc., if I pay money.  That is referred to as buying stocks.

So, employee ownership can be a great benefit but not when you have to pay for it.   My previous job had supposed “employee benefits” but at the end of the day none of them were designed to benefit the employee.

posted in Management | 2 Comments

28th April 2010

CodeBubbles

Andrew Bragdon has come up with a very interesting way of working with code.  Check out CodeBubbles.  CodeBubbles helps bring fragments of code together instead of having to open up multiple files and solves the issue of having to trace through different files when looking for something in code.

It runs on top of Eclipse so it will not work with Visual Studio but it would be great if Microsoft created a feature similar to this in the next version of Visual Studio.

I wonder how well it works with larger and more complex functions.  Either way, I believe this is a great step towards improving developer efficiency.

posted in General Software Development | 0 Comments

27th April 2010

Visual Studio 2010 Multiple Monitor Support

It is about time.  Visual Studio finally supports multiple monitors.  Most developers I know use multiple monitors as we switch between Visual Studio, email, SQL Management Studio, the Internet, etc. but now we can split code up between multiple monitors using Visual Studio 2010 and floating windows.  http://msdn.microsoft.com/en-us/library/z4y0hsax(VS.100).aspx

posted in General Software Development, Microsoft .Net | 0 Comments

10th April 2010

jQuery and ASP.Net

As a new user of jQuery I find the syntax very hard to follow.  From some of the samples I have worked with it is extremely powerful.  Microsoft has announced plans to support and contribute to the jQuery effort.  That is great news and I believe that will mean better integration into Visual Studio and IntelliSense making jQuery much easier to use.

posted in Microsoft .Net, jQuery | 0 Comments

9th April 2010

Confrontational And Immature Bosses

What do you do with a confrontational boss?  At my previous job one of the owners always had issues with me.  I believe it was because I held him accountable.  If he said he would do something I expected that he would do it and when he did not do it, I would follow up.  I was polite in my follow up but apparently it was too much for his ego.

In a recent meeting he was upset at me for not being available at 11:00 PM to do a deployment of code to production.  The deployment had not gone well and there were errors with a few components.  I had sent an email that morning at 8:00 AM with some things to try.  I followed up at 11:30 AM with a question as to if my suggestions had been followed yet.  Still no response.  I sent another email at 1:00 PM asking if anyone had done what I suggested.  Still nothing.  Then at 10:30 PM my boss starts sending emails panicking that no one can get a hold of me (they hadn’t even tried.)  They finally tried what I suggested sometime after 11:00 PM but I was no longer available.

In the meeting I kept asking the Director of Network Services, who is an owner, why he would not do what I suggested and why he would not respond to my emails.  He kept trying to put the blame on me for not being available at 11:00 PM but I kept putting the ball back in his court asking why he wouldn’t do what I suggested.  He never did answer me.  The fun part though was that he started to stare me down, literally.  He is a former cop and believes he is tough and since he does not know how to handle conflicts without a gun he stared me down like a 5th grade schoolyard bully.  It was very funny.  I finally stared back at him for about a minute and then looked away and then he finally looked away.

I am glad to be gone from that company.  Childish owners and egos so big there was no room for me.

Unfortunately both owners of the company were very similar like that.  I tried working with them but after 4 1/2 years it was clear there was no room for anyone who was not willing to be subservient to them.  Their egos were just too big.  It’s a shame because they really could do well.

posted in Management | 0 Comments

8th April 2010

Microsoft CRM 4.0 Filtered Lookups

Apparently CRM 5.0 will natively support filtered lookups; however, for CRM 4.0 there is an excellent plug-in available at http://mscrmfilteredlookup.codeplex.com/.  To use it follow these steps:

  1. Go to the Source Code tab, http://mscrmfilteredlookup.codeplex.com/SourceControl/list/changesets
  2. Download the source code and unzip somewhere on your disk.
  3. Use Visual Studio to compile the code.
  4. Register the plug-in following the steps listed in the readme file that comes with the download.
  5. Add simple JavaScript code to any entity you want to have filtered lookups.  Readme file explains the JS.

I tested this plug-in and it works great and is really easy to use. 

Note: You will need access to Visual Studio and to the Plug-in Registration tool to be able to do this.  At the time of this post the only thing you could download was source code, not any dlls.

posted in Microsoft Dynamics CRM | 5 Comments

  • Links

  • Calendar

  • September 2010
    S M T W T F S
    « Jun    
     1234
    567891011
    12131415161718
    19202122232425
    2627282930