Ultimate Web Development Cheat Sheet Guide

So you’re sitting there on Saturday morning, sipping on a nice warm cup of coffee or tea. You smell the freshness of the morning, and whipping up some html, CSS and trying out some new AJAX programming.  You’re stuck on something! You wish you had a quick cheat sheet to get you back on track.  Look no further if you’re a web developer!  This is the Ultimate Web Development Cheat Sheet Guide!

Check Out Part 2 of this List!
Ultimate Server-Side Web Development Cheat Sheets – As Promised! Enjoy!

10 of The Best Wed Development FireFox Extensions!

10 Must Have Web Development FireFox Extensions – Check it Out!

JavaScript

JavaScript Cheat Sheet

Addison-Wesley’s JavaScript Reference Card

JavaScript Quick Reference

JavaScript and Browser Objects Quick Reference

JavaScript in 10 Minutes – Thanks Joseph

CSS

CSS Help Sheet

CSS Shorthand Guide

CSS Cheat Sheet

Cascading Style Cheat Sheet

CSS Cheat Sheet

CSS Quick Reference

Leslie Franke CSS Cheat Sheet

Design 215 CSS Quick Reference

CSS Level 1 Quick Reference

CSS Level 2 Quick Reference

CSS Property Index

HTML/XHTML

HTML Help Sheet

XHTML Cheat Sheet

HTML Cheat Sheet

HTML Character Entities Cheat Sheet

PDF HTML Cheat Sheet

Character Entity References in HTML 4 and XHTML 1.0

HTML & XHTML Cheat Sheet

HTML Tags

HTML Quick Reference Guide

A Simple Guide to HTML

Reference HTML Cheat Sheet

HTML Tags Cheat Sheet

AJAX

What’s Ajax? Cheat Sheet

Prototype Cheat Sheet

Scriptaculous Combination Effects Cheat Sheet

Scriptaculous Cheat Sheet – Thanks Joseph

AJAX for ASP.net Cheat Sheet

ASP.net AJAX Client Life-Cycle Events

MooTools Cheat Sheet – Thanks Joseph

Colors

RGB Hex Color Chart

Interactive Color Picker

HTML Color Codes

Color Reference Guide

Microformats

Microformats Helper Cheat Sheet

Microformats Cheat Sheet

Jack Daniel’s Microformats Cheat Sheet

Browser Compatibility

W3C DOM Compatibility Tables

Browser Compatibility Interactive Table

XML

Fusebox 4.1 XML Cheat Sheet

VoiceXML Reference

MathML Reference

XML Schema 2001 Reference

XML Schema 2000/10

XSLT Quick References

XML TopicMaps 1.0 – Quick Reference Card

XML Quick References

XML Schema – Structures Quick Reference

XML Schema – Data Types Quick Reference

XSL FO Reference

XSLT Quick Reference Card

XSLT Reference

 

Check Out Part 2 of this List!
Ultimate Server-Side Web Development Cheat Sheets – As Promised! Enjoy!

10 of The Best Wed Development FireFox Extensions!
10 Must Have Web Development FireFox Extensions

 

Technorati Tags: ,

Make One Mistake Next Week!

Software Development

I’m going to start “Next Week’s Challenge” on my blog.  Over the next few months, if you follow along with the challenges, together as a group of software developers, we should all grow, and as a whole, improve the software development world! 

At the end of each challenge week, I will ask you to post your feedback, so we can all grow together on how things went!  Sound like a good idea?  Let’s begin!

My Challenge to You

Here is an interesting challenge to get things moving! I challenge you to make one mistake next week.  If you reading this on Friday, think about it over the weekend, and try of think of something that might end up as a “mistake”, and just do it.  Don’t be afraid to fail, just do it!  This is my challenge to you.  Weird Eh?  This could have two possible outcomes:

You will be forced to try something you might not have tried, and you will do it:

  1. and nothing will fail, and you won’t have made a mistake, and you will be rewarded by your awesome accomplishment!

    or

  2. and you will fall flat on your face!  If that happens, make sure you write down in detail what your execution plan was, and what went wrong.  Step back and think about it, and write down 3 things you could do differently next time.

Mistakes Make You Grow

Don’t be afraid to make mistakes.  Some of the most significant advancements in science and humanity have been because of mistakes.  Unfortunately as software developers, we are trained to not make mistakes.  Heck, any mistake we make in code at the very least will cause a bug and testing time.  In the worst cases, you cause systems to go down and create extremely unhappy managers and customers.  However I challenge you today, to not be afraid to make them!  Just make sure you learn from them quickly, and adjust your approach, and keep going! 

Some of the most successful software companies have made disastrous miscalculations that can be conceived as mistakes, you can see some of them on my other blog, 10 Biggest Computer Flops of All Time.  Now, although the title says they were flops, and they were at their time, you could argue that all of these “flops” had huge contributions to our software and technology industries. 

Where Does the Problem Start?

The problem starts in school, where you are taught to not make mistakes.  You are basically punished if you think outside of the box, and make mistakes.  We are trained in this manor for at least twelve years of our lives.  While this is good while we are learning, we need to make a transition to being ok with making mistakes as we grow.

I would rather my software developers make a mistake, and learn from it, than sit there all day and not come up with anything original.  When a mistake is made, I simply ask that they try and not do it again.  The key here is not just trying to not make mistakes, but to put measures in place so that you can’t make the mistake again!  Or so it’s harder to make the mistake. 

Some Personal Examples

I make mistakes all the time!  But I never make the same one’s twice, and I try and improve things and learn all the time, constantly!  Let me pick a few examples that have happened on my blog in the last few weeks so you can follow along!

In the last two weeks as I dedicated more time to my blogs to take my mind off of some family issues.  My aunt is struggling with a battle with cancer, in and out of the hospital, cancer is brutal, nobody deserves to suffer like that.  I hope one day to make a difference in that area.  Anyway, during the constant postings, I learned a lot about other people through emails and comments.  For example in the post of “How to Win Friends and Make Developers happy“ I deleted someone’s comments because someone else was attacking them for bashing the post.  I was trying to be nice and avoid conflict, but soon got huge backlash for pulling the comments.  So I put the comments back, because I honestly liked the post, it was just I didn’t want conflict on the blog. 

The lesson learned here:  If you’re going to run a blog, just let people say whatever, and if they start fighting with each other, oh well.  Don’t delete others posts if you ask for their ideas.  Also, blogging might not be the best way to de-stress :) .

In the post yesterday on normalization, I was trying to make a point that JOINS are slow, and in some cases, denormalization could be ok.  I found it interesting that some new Web 2.0 companies were following this path, and I wanted to let my readers know.

Lesson learned was:  “Don’t over simplify a hot topic” because you will get flamed.  Also, be careful with titles, some people will not read your post, and just read the title!  Fair enough, I asked for it I guess.

Other lessons I’ve learned is not to use so much bold and highlighting in my posts, some said that it looked like someone spray painted all over it lol.  I thought that was clever, what does everyone else think?  What’s a better way to draw attention to certain areas of the text?

So Don’t Be Afraid, Just Learn From Your Mistakes

See, some people will follow the rules, be afraid to be out there, to grow their minds, to challenge the status quo.  They are afraid to say what’s on their minds, afraid to be themselves, afraid to ask that girl to dance!  Others will challenge approaches to problems, create new innovative ideas, and ask the girls to dance!  When they are shut down, they will be ok with it, and change their approach.  They get better and better at it, and then you look at them and go “oh, they are naturals at that, I hate them!”.  The trick, or sleight of hand, is that they fail 9 out of 10 times, but you don’t see those mistakes because they handle the mistake properly, learn, and get better at it!

So be one of those people that makes mistakes, gets back up from the mistakes, learns from them, and try’s a new approach. 

Sounds simple, but 90% of the people out there will either never try anything new because they are scared to make a mistake or fail.  The others will try something, make a mistake, not change their approach and try again, fail, and continue that vicious circle over and over.  A very select few will actually make mistakes “correctly”.  This is great news for you, because if you learn this skill, you are far ahead in the race!

So What!  I’m A Software Developer, Not Thomas Edison

As software developers you might be thinking at this point, well, I’m a software developer, I’m not trying to be Thomas Edison.  That’s fine, what I would say to you is, there must be some other area in your life that you can improve this very second, this very minute, if you were try a different approach.  You might be scared to do it because of the fallout of making a mistake, but why not try it and see what happens!  You can always take corrective action after, and the next time you get another idea, you might get it right!  The lesson should not be “Never Try”.

Everyone makes mistakes, you just learn from them.  That is the key.  Easier said than done!  But if you read this blog, and read as far as you have read on this long winded entry, you must want to improve yourself!  So just do it! 

I look forward to hearing your “success’s” next week, and even if you do make a “mistake” it will be a success because you will learn from it!

 

To Normalize, or Not To Normalize

Database Denormalization
 

Why You Shouldn’t Always Be Normal

Before you read on and jump quickly to scream foul, please make sure you realize that I write this with some humor, to try and get at the point that “In certain situations, de-normalization is good!” I am not suggesting that we throw away normalization!  Are you kidding me?  Might as well go play Russian Roulette!  However, I think this is an interesting trend among large Web 2.0 companies that are heavy on read, and low on writing.  With that said as my preface, read on and joy.

I’m just going through the process of designing a database architecture for a Web 2.0 site we will be launching in a few months, and the first thing the database architect talked to me about at a review was “Don’t worry, this design your about to see is going to rock, we have really normalized the data, its hot!”.  I was happy he said this, but at the same time, it got me thinking about a lot of things.  Synapses started flipping through my brain as they do at night when I can’t sleep (probably due to the Starbucks I was sipping on).

See, I have never seen eye to eye with database designers on their “Normalization” Zen.  When I first started getting into databases and teaching database design and architecture, I always thought to myself “Why all this normalization?”.  I know, I’m treading into dangerous territory here, but I feel it has to be said.  What is dangerous about this topic?  I guess the fact that I think we should NOT normalize data for the most part in a Web 2.0 world.   Inexperienced DBA’s I guess will find this completely incorrect and question my brain capacity, but I would bet experienced DBA’s after thinking about what I’m saying, would agree with me.  I’ll tell you why…

The Argument Pro Normalization

I won’t go into too much detail, because all of you know that a proper database is normalized.  My guess is at least 80% of web sites out there are running on normalized relational databases.  In the current world of relational databases, we have all been taught that you must normalize your data to ensure data integrity by minimizing duplicate data.  By doing this, you are ensuring that no application can write data in one location, and not updating another location, and creating two different records, for the same data!  This is supposed to also simplify software development, by putting all the data integrity logic at the database layer.  You can user stored procedures, views, joins, and have fairly applications that rely on the database to keep the data integrity.

The Argument Against Normalization

How many freaking joins do you have to do to get all the data you want?  When I first started my career, I could write ASP pages amazingly fast, with simple databases in the back end.  As I started learning more and reading on “Normalizing” your data, I started feeling crappy about some of my designs.  I didn’t use any joins, didn’t really have any transactions, and had very few tables.  But, I wrote applications very fast, got results, and never really had any speed issues.  I never really had issues bad data either, but whatever.

I Learned to Normalize

I started writing more “enterprise” applications, and had to do more joins, left, outer joins, had to worry about transactions, and had layers upon layers of data access to go through in order to add a new customer.  I was told that “It’s the databases job to maintain data integrity”.  Ok it all made sense, I did this.  My code became way more complex, my database designs became way more complex, and you couldn’t put bad data into the database.  Hot!  But, it took FOREVER to write the applications to put the data into the database.  Not only that, but now, if I needed to scale the application, I couldn’t simply add more web servers!  I now had to worry about database replication, transactions, and indexes.  I soon realized that doing joins took an INSANE amount of processing power.

Normalization Is Slow To Design

Are you still with me?  Splitting up your data into small chunks and insuring that no data was stored twice, made writing even the simplest web forms super complicated.  Sure I could call a stored proc, but if it wasn’t written, I had to get the DBA to write it, or write it myself.  If I had to get new data in a certain way, I had to create views, which I was told was fast!  Not (Ok, getting better… but still).  For one simple form, or simple display page, you could have an INSANE amount of joins!

Normalized Applications Are Slow On A Huge Scale

Why couldn’t I just have a table, with all the data I needed for that page?  Then for other pages, I could have the same data duplicated!  This would actually take stress away from the JOIN, and just let me get data from either location.  When an update was done, say the user updates his address, it would be updated in two locations.  Is that all that bad?  I don’t think it is.  Just add some constraints, and make sure the application layer follows the constraints.

If Web 2.0 is all about sorting data, indexing our knowledge, sharing our knowledge, speed in development, speed in viewing Web 2.0 applications, and scaling your sites quickly should you’re site become the next YouTube, I challenge you to do this successfully with a normalized database full of joins, stored procs, views, and transactions.  You might do it, but you will need an army of rocket scientists to do it.

Final Thoughts

Do whatever works for your environment.  In an enterprise environment where you are working with financials and maybe have 1,000 people entering data and reading data, by all means, normalize your data.  If you are writing an application in the web world, where one day you might have 100 users, and a month later, 10,000,000 users, you better have a quick way of scaling!  If you have kept your database de-normalized, and just have tables, and your database is basically a storage area, and has no business logic whatsoever, you will be able to quickly scale your web application by adding servers, replicating code across your web farm, and even putting in cool appliances like BIG-IP in place to cache data and load balance your web farm.

Good luck doing this in a normalized database.  You will be able to, you will just be crying the whole way.

So, What Should We Do?

If you are doing more writing than reading, stick to normalized databases.  If you are doing more reading than writing, still normalize… but then denormalize your data!  Look at the web forms and pages you will have, and see what data will always be displayed, and if you have 18 tables needed to display a users profile, denormalize the data!  Imagine what would happen if you have 10,000,000 users reading profiles and running joins on 18 tables.

One of the Reasons for Web 1.0 Failure

I would argue that a big reason Web 1.0 companies failed was because you had an army of people getting money from VC’s, getting expensive DBA’s, armies worth, to write complex normalized databases, then getting web guys to create the application layers for these complex databases.  Why is this the reason for failure?  You had slow performing sites that didn’t scale.  You had tons of bugs, bad performance, and sites and ideas that never even launched because they were “in development” forever!  In Web 2.0 you have things like Ruby on Rails, AJAX, and companies like eBay that rely on denormalized databases to scale.  You have good looking, fast performing, scalable web sites that are built fast, and not on overly normalized databases.

If you have read this far, I should share some sites with you that give me some legs to stand on for my arguments:

Let the comment bashing on denormalization begin!

 

10 Tips to Ace a Software Development Interview

Software Development

I’ve conducted hundreds of software development interviews over the last few years, and been interview more times than I can remember as a consultant.  My wife is now an HR Manager and a recruitment consultant, so I’ve been spending the last few days contemplating what goes well in an interview, and what goes terribly bad. 

This posting is an attempt at helping software developers land that awesome job they deserve!  In an upcoming post which I have been working on and editing, I will focus more on the actual technical side to the interviews. However, to be honest, at least 80% of the reason you will get the job, or lose the job, is covered in the tips below.  The other 20% is your technical Ability.

The Secret

There is one thing that you have to know, that will improve your interviews instantly!  It’s something that some of you know and think everyone knows, but sadly, 90% of you have no idea!  What is the secret?  It’s simple.  The secret is that when you come in to see me for an interview, you already have the Job!  I want you to do well!  The job is yours to lose!  So be confident and strut your stuff.

1. Arrive Early

This is an easy one, but for some reason, some of you insist on letting me weed you out before you even let me start the interview.  No amount of excuses is going to save you if you arrive late for an interview.  Arrive early, that’s all I’m going to say about that one.

2. Dress Professionally

I’m expecting some flack on this one, but honestly, dress with at least dress pants, dress shirt, and if you want, a tie, or suit jacket if you have one.  Now on the flip side, one thing you could do is do your research on the company you want to work for, and see how they normally dress.  If you are applying at a Web 2.0 company that has everyone dressing in blue jeans and Abercrombie t-shirts, by all means, dress the part. 

All I’m saying is dress it professionally and clean.  Clean shaven, nicely cut hair, etc.  All these things help.  For example, even if it is a casual work environment, for the interview, wear some nice jeans (no rips), a nice casual dress shirt, nice belt, put on a blazer, and wear some dress shoes. Ok, now that I said my peace on the dressing professionally, let the flaming begin lol.

3. Show Your Passion for Software Development

If you read my blog regularly, you know passion is something I’m pretty much obsessed with.  If you are one of those developers that stay up all night long thinking about the solution to that insane software development problem at work, I want you to work for me!  Do you try and read every blog you can about software development, and stay up to date with everything you possibly can on technology, I want you to work for me!  Do you genuinely love software development?  Well?  I’ll tell you what, if you do love it, it’s going to show through!  It’s hard to hide! 

Every time you answer an interview question, your face will light up because you know the answer.  Every time you talk about a past experience, you voice will speed up, and you will forget you are in an interview for a few minutes.  Don’t be afraid of this!  Let is shine through!  It separates you from the average developer that is in it for the money or the job.  And you better believe that YOU are the one I want on my team.

4. Show You Like Them and The Company

During the interview, you should try and say nice things about the interviewer and the company.  I’m not asking or suggesting that you "kiss up" to the interviewer and the company, but what I am suggesting is:  If you want to work for the company, think it’s an awesome place to work, love their offices, love the personality of the interviewer, and love what you have heard from other people about the company, say so!  Honesty will get you far!

5. Avoid Discussing Salary and Compensation

Whatever you do, do not bring up compensation.  If it is brought up by the interviewer, ask it quickly, and move on.  Do not stumble on this question, or be the one to bring it up.  Once you have been offered the job, or just before you are, you will have a chance to talk about the compensation.  It should be avoided at all costs in the first interview.

6. Answer Questions From Experience

This goes for the personal and the technical side of the interview.  A lot of times I will specifically say "Thinking back on your experiences…", however if the candidate can bring up examples on his own, I usually start getting excited and start leaning towards giving the candidate some points.  If I ask a question like "What is Multi-Threading?" or "What is the difference between Finalize() and Dispose()?", don’t just answer the question like you are the human programming dictionary.  Instead, impress the interviewer by giving examples!  Start your answer with "It’s funny you brought that up, last week I was working on a project where we has to use Multi-Threading!  We had a situation where…" and go from there.

Not only are you answering the question, but you are also showing me that you have real world experience in working with the concept or technology!  Also (yes, there is more!), you are starting a more human like conversation with me, and we are talking and chatting!  You will become more comfortable, and I will also relax and get excited!  I will start seeing you on my team!

7. Ask Good Questions

When it comes time for you to ask questions of the company and interviewer, make sure you have some great questions!  Although it may seem like a great time to get to know the company, which it is, this is one of those rare golden opportunities that you have to put yourself over the top of probably 95% of every other person the interviewer has interviewed for your position.  Ask them about their quality assurance process, what kind of source control they use, if they use continuous integration, what they use for unit testing, etc.  In a future posting I will try and focus on just great questions to ask in an interview.

8. Do Not Be Negative

You would think nobody would have a negative attitude when going into an interview.  You would be shocked!  While you’re in the interview, take extra caution in not being negative.  There are a lot of people that fall into this trap.  One of the most common questions that gets a lot of potential software developers is "Why are you looking to leave your current employer?".  I don’t really want to hear things like "My boss was an *** ****", or "I was never given the promotion I wanted, it really pissed me off."  Even though those things could all be true, do not answer this question this way!  Be careful.  The better way to answer this question is "I’m looking for new challenges, learn new things, and I have learned so much where I am now, I’m ready to push myself further".  Saying negative things puts negativity into the air, and it will be there when they think about you later!

9. Constant Eye Contact

So many people have lost me here because they keep looking at their shoes, and not at me.  Even worse, sometimes there are a few people in the room and you need to look at everyone!  What to do?  Look at everyone!  Alternate!  But whatever you do, do not look at one person, and nobody else.  Or even worse, do not ignore one of the people, because you think they are less important.  A few times I’ve had interviews where I have a few of my senior developers in the room, and the candidate doesn’t even bother to look at them, just constantly looking at me!  While it can be flattering (I joke), you are demonstrating to me that you play sides, and view certain people higher than others. 

10. Do Not Appear Overconfident and "Know It All"

I’ve had so many interviews where the candidate was amazing, and I wanted to hire them so badly!  But they blew it!  How?  They were over confident. Every question I asked they answered with some attitude like they were saying "please don’t bother me with these silly questions".  Answering the question of "Name a time when you made a mistake or a misjudgement in timeline, and were going to be late on a milestone.  How did you handle it?" with "My estimates are always perfect, I have never been late, and I have always met all my milestones." does not impress me at all.

 

How To Win Friends and Make Developers Happy

Happy Software Developers 

They Should Jump Out Of Bed Every Morning!

How to win friends and make software developers happy!  Sounds simple, however, as most of you will know, managing software developers is tricky business.  Making them happy day to day is even harder. I would strongly advise that anyone managing software developers should be a developer first.  It is true that just because you are a great software developer doesn’t mean you should be promoted to a manager. However, I strongly feel that if you have not been in the trenches, on death march projects, or simply do not understand the developer’s mentality inside out, you will be at a loss when trying to figure out this “special” bunch of people.

I’ll try and take this from where my other post, The One Minute Software Development Manager left off because I had a lot more to say, and didn’t want to lose anyone in my boorishness.

I will try and touch on just a few areas you should always think about when you work with developers on a day to day basis.  The goal?  Make them jump out of bed, excited to get to work to solve problems!

Your Attitude

Managers that want to be mangers to boss people around, give orders, or think that if you make them a manager, they will suddenly be looked up to by people in the organization and team, are probably the worst managers you could ever have!  This is the wrong attitude!  You should never, never, never promote someone to a manager that craves the title, or the responsibility. Just look at what happens in the history books to people that craved power, and were given power. 

The Right Attitude

So what is the right attitude to have?  Managers should be facilitators of the development process.  If you hire a new manager, make sure they absolutely love software development, and understand software developers.  If you are promoting people from within, my preferred method, take software developers that are natural leaders, that have the team already looking up to them.  Take developers that have been doing development for years, and want to get more done by leading a team, and growing that team to succeed!

So, make sure you have the right attitude, be a 360 degree leader, and everyone will want to follow you.  People should want to be on your team because you are an awesome leader, motivator, and coordinator, not because you are a manager.

Challenging Problems

Software Developers want to work on challenging problems.  They love solving things!  They love puzzles, riddles, quizzes, new approaches to solutions.  If you make the mistake of assigning your developers non challenging problems, or worse, no problems to solve at all, you will see some extremely unhappy developers.  Getting developers to write documents, answer help desk calls, and create project timeliness is a crime punishable by death of your team.

At this point you’re thinking, well, I need status reports, and I need someone to answer the phones.  Again the finesse factor comes into play. Let’s try some examples shall we:

Scenario A:

“Hi Sean, I need you to answer some help desk calls for the week, we are totally swamped.”

Scenario B:

“Hi Sean, I have noticed an increase in help desk call volumes, and the help desk does not seem to be finding any patterns or rhyme or reason as to why.  I’d love it if you could take help desk calls next week, to help me find patterns and ultimately come up with a solution to why the spike in volumes!”

Which scenario is the right one?  B of course!  And you will probably get your software developer to solve some serious problems that sometimes get lost in the QA process through miscommunication from the help desk.

Micro Management

This is the deadly sin if you are trying to manage software developers.  If you start to use this tactic at any point, watch out, you will lose developers like the plague has infested you team.  The second you fall into this trap you are instantly questioning their ability, and their skills.  You have just managed to demotivate your team in the worst way you possibly could.

Project Delayed?

If a project is delayed, or a system is not functioning to spec, you can count on your software development team to be more freaked out about it, than you are probably.  The absolute best thing you can do is show them you are confident in their ability, and let them solve the problem. At the same time you obviously need to stay on top of the situation, and ensure that they are on the right path to solving the problem.  This is where prior programming experience is vital if you are going to be a great software development manager. 

You Must Have Software Experience

An experienced software developer will have that “blink” instinct to know if his team is on the right path, or the wrong one.  He will be in sync with his team when problems arise, knowing quickly if they are approaching the problem correctly, and will have it resolved shortly.  An experienced manager, with no software development experience, will be freaking out at the first sign of a problem with an application, because they simply do not know what is truly going on, and feel helpless as a team of developers is trying to solve a problem.  They will cause havoc, stressing out the developers, and ultimately causing them to make silly mistakes.

Trust Your Team

Showing your team you are confident in them, while at the same time staying on top of the situation and making sure that Titanic is not going to hit an iceberg requires some serious finesse, and software development experience.

Think about this for a second.  When you hire a software developer, or even a graphics designer, or a video producer, why do you hire them?  You hire them so you can have someone that is highly skilled (hopefully if you have done your job) focus on an area and exceed your expectations for the job!  Does it really make any sense for you to tell them what to do at a micro management level?  If you answer yes, it does make sense, then you have hired the wrong person.

Meetings

I hate to break this to you, but software developers view meetings as a complete waste of time.  Software developers are much more real time when it comes to things, and if you are sticking with Agile, you shouldn’t really have your developers in a whole lot of meetings.  Developers live by e-mail. They can easily review their emails, make sure things are complete, and move on.  Should an email come in that is far too complex to figure out without asking more questions, they will then go and ask the sender for more direction (at least if they are awesome developers).

Conduct Short Meetings

Stick to keeping your meetings as short as possible, and if at all possible, just have SCRUM meetings at the end of the day and that’s it.  Any time you have a few developers in a room to meet on something is seriously unhappy time for a developer.  The reason being they instantly start calculating things like:  How many lines of code could I have written already,  How many people are in this meeting that are not needed, How many man hours are we loosing per week in meetings. 

Run Efficient Meetings, Don’t Waist Their Time

I am by no means saying meetings are useless, but make sure they are action oriented, to the point, and do not involve a lot of people.  For example if you have 15 people in a meeting, and you only need 1 person at a time for 5 minutes at a time, do everyone a favor and just go to that person, then the next, and so forth.

At the end of the day, your team leaders can withstand more meetings than the software developers because they are trying to work on their management skills and executive skills, but your software developers want to program and solve problems!  Let them.

Teach Them New Things… Feed Their Brains

You don’t necessarily have to be the one teaching, but it would help if they had a mentor to look up to and learn new skills from.  If there is nobody in your organization setup as a mentor, create them, or feed their brains other ways! Let them buy any book they want, take classes they want, and take any certification exams they want.  Let your developers work on the latest platforms and give them the latest tools to learn their trade better!  The more you have your developers learning, the happier you will make them!  Let’s try another scenario:

Scenario A:

You have the best working conditions, nice office, great compensation package, free lunches and dinners.  Breakfast is waiting for your developers every morning.  However, they are all working on Visual Studio 6.0, with no add-ins, and developing on Windows 98 computers.

Scenario B:

You have your developers working in a basement, no windows, terrible compensation package, no free food at all, and no health benefits whatsoever.  However you give them Dual Core machines with 4GB of Ram, triple 22Inch LCD Panels, and have them developing AJAX applications, creating Web Services, learning ASP.net 3.0, PHP, Java, Web 2.0, XML.

Which one of these scenarios do you think a software developer would rather work in?  B of course!  Now sure I painted an extreme picture to make a point, but it’s true, and constantly forgotten!

Build Software That Matters

Something Steve Jobs has always done phenomenally well, is created a cause, and a purpose in his software development teams, and the companies he has managed.  People want to change the world; people want to do things that matter!  Being significant is a human need that we all need to fulfil! 

Create A Cause

If you create a cause in your team to want to be bigger than themselves, you will not only have amazing software, and probably do things that no other team can do, you will also have some of the happiest, motivated developers around working on your team!

Don’t expect to keep a developer around if all you have him doing is crystal reports, adding in new functions into programs that are 5 years old, and updating ancient stored procedures.

Highly Used Software

Get them to write software that will increase sales of the entire organization, and help the company grow and donate even more money to a local charity.  Get them creating new software interfaces that will make using your software easier, faster, and more efficient, helping the order entry team go home earlier on the weekends! Get them to build software that will get used by thousands of people, not by five users!

Help Them Find Their Passion

At the end of the day, when the dust settles, developers are on a journey to find themselves, to find out what they like doing best, and excelling at it.  Will they be a Software Architect, a Lead Developer, an Executive Vice-President, or a Business Analyst?  Will they choose Windows, database, or web programming?

If you can help your software developers find their passion, what they are truly made to do, you will be rewarded by having some of the happiest developers around.  You will also make friends with some of the c00l3st people you will ever meet!

The Conclusion?  It’s a Two Way Street!

I love working with software developers!  I give them as much respect, advice, leadership, responsibility, and personal time I can possibly give them.  They in turn, love working on our team and love getting up every morning.  Together we achieve some pretty awesome stuff! 

Going through both sides in the last 12 years, from help desk to pay for school, software developer, consultant, software development manager, to Vice President of Technology, I have definitely see both sides! I’ve had to do my fair share of firing and dealing with lazy programmers that think they are the second coming.  I just plain don’t accept that on my team, and honestly, neither do the other team members.  Nearly every member on my team scores extremely high in my 15 point, How to Rate a Software Developer, but is at the same time humble, compassionate, and caring.

If I had a flat tire, ran out of gas, or any other emergency, they would come help a the drop of a hat, and they would treat each other the same way.  When review time comes, they know how their reviews will go before we even do them.  In a competitive market, assuming you have the best developers, and assuming they treat you fabulously and with respect, you need to follow these rules, period.  The days of Laissez Faire leadership and Transactional leadership are over.  You need to be Transformational.