Add to Technorati Favorites

December 27, 2007

The Ultimate Guide To Not Choking Under Pressure

If you look back on your life, there are probably a few key moments that shaped your destiny.  Where you are today, is in great part due to how you handled these situations.  Many famous fighters have always said, it doesn't matter how many times you get knocked down, but how many times you get back up.

When you are faced with pressure, an obstacle in your life, how do you handle it?  Do you crumble under the pressure and the feeling being down for the count?  Or do you get back up and win the fight.  This article is all about teaching you to excel under pressure, and not succumb to stress!

image

8 Things You Must Do Right Now to Not Choke Under Pressure

  1. Avoid Negative People
    As soon you are faced with a challenge, be it in life, or in software development, there will be those people ready to kick you, and tell you how complicated the problem is, and how grim the situation is.  Avoid them at all costs.  They will only get you down.  Try instead to surround yourself with winning personalities.  That is people that thrive on success and positive re-enforcement.  The sad reality is chances are, by succeeding, you will be setting the bar that much higher, and possibly making the "negative" people look bad.  Get rid of them!  If you simply can't get rid of the negative personalities, ignore them completely!
  2. Assess the Situation
    What happened to get you into this situation?  What went wrong with your game plan?  Take a piece of paper (yes go old school) and draw a line through the middle of the paper.  On the left side write down everything that was done incorrectly.  Along the right side, write down everything that you did very well.  What is the point of doing this?  Your brain is going to learn exactly what to not do again, and what it should do more of.
  3. Do Not Get Caught Up On What You Do Well
    A lot of times people will fall into the trap of only doing what they do well, and not focusing on the things they do poorly.  Take the list you just wrote down, and for each thing that went badly, write down what you can do to change that behaviour.  See the problem is,  it's in your human nature to focus on what you do well, and ignore everything else, until it’s too late. 

    A lot of managers can get into this habit of always pushing what they are best at, and avoiding everything else as things someone else will worry about.  This is actually an untold story in management, where a lot of times, managers will stay on one area of the project, because they are most comfortable in this area, and never allow the project to move on, thus, slowing things to a crawl.  Anyway I digress, this is another story.
  4. Remove Distractions and Stay Focused
    Its crunch time, and there are distractions everywhere!  Other projects going on, lunch gatherings, after work events.  Just as a golfer is trained to focus on the hole, and not on the water hazards and sand traps, you must do the same.  If you have an office, close the door.  If you don't, make sure you have a good pair of noise isolating headphones.  Make sure the music you listen to does not have words if possible.  Words will only distract you.
  5. Remain Relaxed
    This is quite possibly one of the most important things to ensure you crush the competition, succeed in your journey, or finish that software project on time. I personally love to watch UFC, love playing chess, and studied martial arts for many years.  One thing you could always see in the winner prior to the fight, and during the fight, is a relaxed demeanour.  Remaining relaxed when you are on the 18th hole, one chip away, is the secret of champions.
  6. Create a Plan
    Once the pressure starts mounting, you will need a plan to fall back on when you are in dire straits.  A plan doesn’t have to be all encompassing either, just enough to serve as a guide.  You would be surprised how many people never bother to create a plan simply because they think it will take too long to do it, so they never start.  You can create a plan right now in fact, in the next 5 minutes, and then build on it.  You will be amazed how easy it is to do, and how much it helps.  Stop reading this article in fact, and take out another sheet of paper and write
  7. Be Prepared
    If you know the pressure is building up, make sure you take the time to get prepared.  Being prepared can actually reduce the feeling of stress under pressure, and help move you into the final stage of being confident and believing in yourself.  If you know you will need to implement some new technology, a new function to the application, etc.  Make sure you get ready!  Adding a new function to the application for accounting?  Go sit with them and learn their jobs as best as you can and figure out what they want to do!
  8. Be Confident and Believe in Yourself!
    You are in the position you are in because some believed in you.  Be confident in your abilities.  If you lose confidence, you as might as well pack it in.

Remember, times of pressure are a great time to shine and rise to the occasion.  This is the times when champions are made!  Will you rise to the occasion, or stay down for the count.

Is there anything else you do to ensure you succeed when you are under the gun?  Share with us!

September 01, 2007

Software Developers Guide to Managing Your Boss

Manage Your Boss

Learn to Manage Your Boss and be Successful

The most important thing to your software development career is the ability to create great code right?  Wrong.  Although this is important, one of the single most important things to your career is your ability to manage your boss.  The relationship you have with your boss is critical to your success, and how far you will go at the company you're at.  Possessing the skills required to "Manage Your Boss" can put you further ahead than anyone else at your company, and in your role within the software development lifecycle.

Raises, promotions, training, books, expense accounts, travel, are all dictated mostly by your boss.  Make sure you have the proper skills to manage your software development boss!

5 Things you can do next week to improve your career!

This article will focus on 5 key areas that you can take to improve your career and quality of life by managing your boss better.  Managing your boss you say?  Yes, that's right, your boss also needs you to manage them.  Do this well and you will get the raise you wanted, the new position you deserve, and be much happier at work.  We will focus on:

  1. Managing your boss's time
  2. Keeping your boss in the loop
  3. Promoting yourself and your projects
  4. Getting others to promote you
  5. Never bring up problems without solutions

Manage Your Boss's Time

Although a good software development manager will always make you feel like you are number one, the reality is the software development manager has a hundred things going on at any given time.  If you are having an issue, get it dealt with fast, however do not act as if it is the number 1 issue for the entire company, when the reality might be its only 2% of your boss's concerns.

What does this mean?  Simply, if you have an issue that needs to be addressed, and it is a simple issue, do your homework before taking up a lot of their time.  Clearly find what the problem is, what options can be taken to resolve the problem, and your suggested approach.  Make sure not to appear scatterbrained and confused when you approach your boss.  Make it clear, and keep it to the point.

Complex Issues Require Meetings

If you have a relatively complex problem that needs more time than just a 5 minute conversation, book some time in his or her calendar.  A follow up email also works really well explaining "I have booked xxx meeting for xxxx date.  I would like to discuss xxx.  Below are my notes on the topic.  Looking forward to meeting with you.".

By following this approach, you are not just barging in and taking up 20 minutes, and possibly side tracking something more important, or worse, making something important get brushed off because they had something else already booked.  Sending the email with the details of the meeting (which should also go in the meeting request), enables the manager to review the reason for the meeting, and move the meeting up closer if they see it as critical.

Keep Your Boss in the Loop

Most software developers hate creating status reports.  This is really unfortunate as it is one of the best times to keep your boss in the loop, and inform them of your achievements.  One of the constant fears that flows through the minds of any software development manager is that there employees are falling behind, making mistakes, and not letting anyone know.

In order to manage this "fear", software development managers will tend to nitpick and ask questions at times on certain tasks.  This is done to gain more information, as well as see how quickly and efficiently the questions are answered.  An employee that is able to answer questions bang on, and to the point, is looked at as competent, and on track.  No further questioning is needed.  If an employee asks for questions to be clarified, answers in round about ways, and is unsure of himself and his answers, is seen as incompetent, and requires further follow up and micromanagement.

Another way to avoid the questioning and making yourself seem on the ball, is to send in fantastic status reports!  Those status reports are your boss's direct link into what accomplishments, and failures occurred for you during the week.  Take this time to be honest.  If things are slipping on the timeline, let your boss know, make suggestions to improve the time line.  If you are on track and made some great new technical innovations, show off, and tell the world what you have achieved!

What Does Your Billboard Advertisement Read

If you were a casino on the Las Vegas Strip, and you had a giant billboard, what would that giant billboard on the strip say to attract people to come to your casino over everyone else's?  Sometimes I ask this question in an interview to poll a few things from the candidates. Do they know what they bring to the table, what makes them different?

This is actually a very important point.  What does your manager see you as?  Your Software Development Boss has so many different things to worry about, you need to make sure that when he thinks of you, he thinks of "Your Billboard".  What makes you, you?  Are you the AJAX wizard?  Are you the relational database master?  Are you the walking dictionary when it comes to c#?

Be Your Own Marketing Machine

One of the most important things you can do to move ahead in your career is to be your own marketing machine.  Market yourself to your team and your boss!  Pick an area that you will be the expert in, and become the expert!  Let people know you are the expert!  Create lunch and learns, send out emails with ideas and articles from the Internet.  There are roles for everyone at your company, pick your focus, and shine bright!

Market your Tasks and Projects

Just like a good book has chapters, your career's "chapters" are your projects and assignments.  Make sure you have clear title for every chapter, and explain each project or assignment clearly.  Make sure that at every status report you report clearly on your projects, and clearly explain how your "area of expertise" assisted in pushing the task/project further.

Get Others to Promote You

Software Developers hardly ever thing of the things I am talking about, so stay with me here!  Another thing you must be extremely good at is to get other people that are around your boss, to like you, love you, and see your value.  Ideally if you have created a clear message as to who you are, and how you bring value to the company, your next step is to get your Software Development Manager's friends and meeting buddies to also value you and see you as "The Database Design Genius" for example.

For example, let's say you are the quality assurance team leader.  During your lunch breaks, and meetings, make sure you are always stressing quality issues.  Who has tested it, how many bugs are left, have we provided the correct amount of customer training.  When you are meeting with financial people such as the CFO or his team members, stress how quality is critical to the business, and explain your background.  

Explain how much happier your clients where that all orders are shipping on time now due to 99.9% availability of the new software!  Talk to the VP of Manufacturing and explain how the new QA standards you put in place should be helping the production line produce better products, and ask them for new ideas and input!

Never Bring up Problems without Solutions

I love the movie Madagascar, I don't know if you've seen it, but it's great!  My niece always loves to watch it whenever she comes over.  One of my favorite parts of the movie is when the penguins are trying to dig their way to China, and instead, only dig their way to another part of the Zoo.  The "Boss Penguin" says "Don't give me problems, give me solutions!".

Software Development Managers hate when people come to them with problems, and don't provide options for solutions.  You are hired to solve problems, and come up with solutions.  If you see a problem, take time to come up with possible solutions!  They could totally be wrong, but just make sure that you have put some thought into some possible solutions!  At the very least it gets discussion going, and helps you learn how to solve problems.  The more you do this, the better your proposed solutions will get, to the point where your possible solutions will start being correct!

A good exercise is to write out the problem, think of three possible solution, write down the pro's and con's to each solution, and then pick the one that you think might work, and list why.  If you just start doing this, you might be totally off with all your solutions, but as you continue to go through this process with your manager, you will start to learn how he comes up with the correct solutions.  One day you will be able to walk in there, and all three solutions will be great, and the one you picked will be the greatest solution!  What a feeling that will give you!

In Closing

A career in Software Development is, in my opinion, one of the best career choices you can make!  You get the ability to be a programmer, manager, mentor, team leader, architect, and even a self promoting marketing manager!  I hope the tips above help you propel your already successful career to the next level!

 

August 14, 2007

How To Kill Your To Do List, Developer Style!

Are you one of those people that creates to do list's, action plans, project plans, and seems to have millions of things to do?  There is actually a simple "Hack" you can use today to get your life back on track.  I just finished reading David Allen's book Getting Things Done: The Art of Stress-Free Productivity: Books: David Allen, and have taken some great ideas from the book!  I highly recommend reading it. Follow along with me on this journey to getting more stuff done than you ever imagined, developer style!

Set Yourself Up For Success

Before we start, the whole idea here is to process things fast!  If you can't do something in two minutes, figure out what you will do with it.

Create 5 folders on your computer.  Inbox, Action Items, Incubate, Current Projects, Archive.  Create shortcuts to these folders on your desktop.  Get the same 5 folders in front of your desk in physical folders.

desktop folders

The Inbox Folder

The Inbox Folder is where you want to put things you haven't processed yet.  What goes in here? New music you downloaded that you haven't had a chance to put away, files you are sent from colleagues, software installations you've downloaded, random text clippings, bookmarks you want to keep track of and don't know where to put them, meeting minutes, invoices to pay, etc. Your main goal for this folder is that at the end of the day, this folder is completely empty!

Action Folder

Anything that will take you more than two minutes to complete should go in here.  This could be files that you need to clean up, but can't delete until you read them, HR forms that need to be processed, etc.

Incubate

Here you will put things that you might want to do at some point, but aren't totally ready to do at the moment.  You can even create a file within the folder that says "The Incubation List".  This is where you can write out anything you might want to do at some point, but are not getting to.  You will want to review this folder regularly.

Current Projects

These are current projects you are working on, live projects if you will.  On my computer I keep an expenses folder, a client projects folder with all the clients we have, a research folder for current research I am doing, and I keep some employee files in here as well that are current and pertinent.  The idea here is that you keep everything you could use in an instant on hand and readily available to you.

Archives

This folder is easy.  Once things in current projects are completed, we would move it to the Archives folder.  For example, you can keep Archived Clients, Achieved Projects, Resumes, etc in this folder.

Now Kill The To Do List

Now that you have setup your computer, and physical folders, you are ready to rock and roll!  This part is actually fun.

  1. Take every file that you have on your computer, important emails, anything lying around, and place it into your Inbox.  Do the same with papers that are lying around your office.
  2. One by one, go through each item and ask yourself if you can do something with it right away. 
  3. If you can, do it right away!  Then once you’re done, put it in Archives if you want to keep it around.  If not, dispose of it!
  4. If you need to delegate the item, send it to someone else and forget about it!
  5. If it’s something you need to do, but will take more time, put it into the Action folder!
  6. If it's something you need to do, but want to do later, put it in the Incubate folder.
  7. If you don't want to do anything with it, throw it out or delete it!

Every day, make sure you never end a day with your inbox full.  At the end of the week, move any competed projects in Current Projects to Archives.  Go through the Incubation folder and see if you want to take action on these items now.  At the end of the month, go through the Archives folder and delete things you won't need anymore.

This process is discussed in detail in "Getting Things Done" which I highly recommend you read.  The book goes into much more detail of course, however this should be enough to get you started.

Quick Recap

Create these folders on your computer and desk:

Inbox --> Action --> Incubate --> Current Projects --> Archive

Follow the process:

Take Action Now --> Take Action Later --> Delegate --> Archive --> Incubate --> Delete / Trash

Review Process:

Daily --> Weekly --> Monthly

Follow these steps, and you will be on your way to destroying that to do list that you can't seem to complete!

August 11, 2007

How to Rate a Software Developer

15 tips to getting the promotion you want, and the salary increase you will deserve!

How do you rate a software developer?  That's a fantastic question!  There are so many theories out there, and there are so many forms that HR teams try and come up with to help you conduct performance review.  However, what really makes a great developer?  And if you are a Software Developer, how can you improve your career today!  Below is my bible for rating the developers on my team.  By following these tips and rules, you will improve your status from "good developer", to "great developer"!

  1. Time spent writing great code
    It's not about the quantity it’s the quality!  However a twist to this is: It is about the quantity, and the quality.  Far too many times you will get one of two scenarios. 

    In scenario A, you have a developer that pumps out code like mad, things seem to be working... then bugs start happening, you don't know why, seems to take forever to fix!  Or they fix 10 and cause 5 more!  But you get a lot of code...

    In scenario B, you have a developer that seems so smart!  You interview him and he knows everything about everything, can speak the theory up and down!  Yet for some reason, you have assigned him three features, and three weeks later, he is still working on something that should have been done in 3 days!  You are so confused!  He is so smart! He knows everything about generics, multi-threading, and can explain pointers to your grandmother and make her excited to want to code! Why is nothing getting done?!

    In your dream scenario, you get great code!  Great code is done by a great developer that is super smart, knows what quality code is, and writes code like Tony Hawk rides his skateboard.  It looks so natural!  He or she is almost entertaining to watch!  They also get it done at blinding speeds!  They know how long each problem should take, and do not get caught up in finding the world’s best solution, that has multiple threads and layers, to write a game of pong.  Bugs are nonexistent because they write unit tests for themselves, and just plain can code in their sleep!  These guys are worth their weight in GOLD! 
  2. Interpretation of the problem
    So there is a problem out there, with millions of ways to solve it.  Some people are just natural quick thinkers and can come up with multiple solutions instantly.  However, what a great developer would do is totally define the problem before doing anything!  A great developer will create a document or whiteboard the problem out.  They will email their managers and say things like "Can we meet so I can explain to you how I understand the problem?"  Next they will start giving you various solutions, etc.

    See, a great developer knows that the way they see the problem and interpret the problem, is probably not the way that the problem creator intended it to be understood. This is a key point, commit this to memory! A great developer will want to understand it fully, before attempting to approach a solution.  Do you understand the problem 100%, no?  99%?  Go ask more questions and be sure you are 100% clear!
  3. How the problem is approached
    So once you have clearly defined the problem, you start coding right? Wrong!  A great developer will look at the layout, and start thinking of various options, and based on the problem, will start thinking about the best approach to solve the problem.  I view this like a game of chess.  You can know how all the pieces move, know all the rules of the game, but do you just start moving?  No!  You analyze the board, come up with a game plan, look at your opponent, and look at what he or she usually do.  It’s the same case when you approach a problem. 

    Look at the problem, figure out what the outcome needs to be, what kind of time you have, the quality being expected, the tools you have to work with, etc.  Then, start solving the problem. 
  4. Confidence in code
    As a manager, how confident can you be in their code.  Some developers you can say "I need this completed by Friday"  come Friday, you get an email saying "I have checked the code into the branch, it is ready for testing" and you  just know that there will be very little, if any, bugs found by the quality assurance team.  On the flip side, there are some developers that will email you instead and say "I am still not done, and it will be done on Monday morning first thing."  And you are nearly 95% sure that it will be there, however it will be ridden with bugs, and basically unusable for days, if not weeks, until bugs are completely ironed out of the code. 

    Bottom line: The higher the confidence you can have in a developer, the closer they get to being great developers!  Imagine being your manager, and the weight you lift off their shoulders if he doesn't have to worry about your code!
  5. Confidence in the solution
    It's one thing to be confident in the code.  If you have a great developer on your hands, you are confident in the solution.  These great developers will be great architects.  They are able to dissect the whole problem, and figure out how the problem needs to be solved. See it’s not just about coding with great code, it’s also largely about how you architect the solution!  This is a key point, and really what separates the good, from the great in the software world. 
  6. Meets user requirements
    At the end of the day, you can have the best code, and the best solution possible, with all the best architecture, but does it meet the user's requirement?  It's possible not!  And you have completely failed.  Now there are various degrees of missing the mark, but a great developer will hit the bull’s-eye consistently!  They find out exactly what the user wants, come up with a great approach, show the user what they will get every step of the way with weekly builds that have no bugs, and continue to build upon the last version.  Requirements are bang on, and the users do the jig!
  7. Staying up to date
    Great developers are constantly updating their skills independently and proactively!  They thirst for new knowledge and perfection like a cat with milk.  They don't wait for their managers to come to them and set goals, ask them to take courses, or are given books to get up to speed on.  They go and get these things on their own! 

    They find the conferences they want to go to, and send emails like "I would really love to go to Tech-Ed This Year!  I will learn <insert reasons here>, and I will be able to contribute to <insert projects here>.  I foresee this saving us <money/metric reasons here>.  If it's at all possible, can the company help me pay for this trip?”  If someone sent me this, I would not only help pay, I would pay the entire trip! 

    Great developers are always attending all the user groups, like a .net user group for example, or a Java user group.  They go to the "free local" meetings, and do whatever it takes to feed their brains!  Do you read all the latest blogs and magazines?  List your top 5 favorite development blogs right now!  Can you do it? You should be able to drop them like you can do the actions to the YMCA!  Stay up to date, it will stretch your mind!  You will have the next big idea!  You will be rewarded! 
  8. Contributes to team
    You can be one of the best, if not the best coder, architect, most brilliant guy on the team, but as far as I am concerned, if you are not able to share and contribute to your team, you are losing about half your value, if not more!  A great developer makes others great around them! See, a good developer keeps getting better and better, but doesn't share the knowledge they obtain, or how they obtain it. 

    They learn new things, find out about new technologies, but don't let anyone know about them!  A good developer finishes their projects on time, but when push comes to shove, is not there for the rest of the team.  A great developer is in touch with all the projects that are going on within the team, and is ready to lend a helping hand when needed! They will say things like "I noticed team A is working on <issue>, and I think I can help out, do you mind?"
  9. Makes great meeting minutes
    This is incredibly important!  There is nothing worse than calling a meeting, taking the time to explain new concepts, new ideas, brainstorm, come up with great designs, and not have anyone taking meeting minutes!  Even if you have a designated meeting taker, I want to see everyone showing up with a pen, and paper (developer notebook is preferred).  A great developer takes great notes!  They write out all meeting minutes, and at the end of the meetings can be heard saying "So just to confirm, my action items are:  <action items here>.  Did I get everything?” 

    Next, a great developer will send their meeting minutes to the manger, listing the date of the meeting, the topic, and attendees.  Following this, you will have the action items at the top, with who is the champion of the item.  Below that, you have the detailed meeting minutes.  A good developer, takes no meeting minutes, says yes every time you add something to his list... and hopes that his memory will serve him well.  He then later emails you to check out his changes, and you cringe as you see he forgot a few things, but got 90% if it correct.  This is a HUGE WASTE of time!  For no reason at all!  Take Great Meeting Minutes! 
  10. Teachable and takes criticism well
    If you have read this far, then hopefully you are taking all this in and will be trying to implement some of my suggestions in your day to day development efforts.  See, another key area is the developers’ ability to learn from others, and take criticism well!  By making yourself a teachable person, you turn into a sponge, and absorb enormous amounts of knowledge faster!  Your seniors are there for a reason!  Sure, they might be rusty at day to day coding, but they have gone through the trenches, and been through hundreds of battles, and have the wounds and scares!  They have the "Blink" instinct to make great decisions, and make you great!  They are in the position they are in because they LOVE to see you succeed, and want to make you grow! 

    Of course, this is the ideal work environment, but that's where you want to be anyway if you are a great developer!  I absolutely guarantee you, and promise you, that the better you can improve this skill, make yourself extremely teachable, make notes on suggestions and criticism, and make a point of improving them, the better chance you have at becoming greater than you have ever imagined possible!  If you on the other hand, choose to think of yourself as "elite", and have nothing more to learn, you will always be stuck where you are.  If you are not growing, you are not even staying at status quo, you are dying!  Grow! 
  11. Always available when needed
    This is a give and take.  If you are working for a great company, they will be flexible with you.  They should never question doctor’s appointments that you couldn't schedule after work, start times, end times, or lunch breaks.  They should encourage you to go to the gym at lunch, pay for lunches when you go out with the team, etc.  They should give you a few days off after some crunch time work.  This list goes on and on. 

    However, with all those perks, comes responsibility, no question!  If it’s crunch time, a great developer will suggest to you that he will come in on the weekend if needed.  They will stay as late as possible and as late as is needed to ensure the job gets done!  See, great developers take responsibility for their creations!  Now, this is not a necessity of course, but it is the mark of a great developer. Some people just want the 8-4:30, and will be good developers, but they will never be great. Great developers are team players to the end, and view their work like art, and view their team, like a family.
  12. Dress's professionally every day
    You never know when a client will come by on a tour.  You never know when you will be called into a meeting, not everything is planned.  And when that time comes, you have to be ready to dance!  A good developer wears normal clothes Monday to Friday, even stretches it with black jeans, and runners that look like dress shoes.  On casual Fridays, they wear shorts, runners, and a T-shirt.  When the tour comes by on Friday with a new huge account, you can’t call on him to join you for lunch because he is not dressed appropriately.

    A great developer dresses in great business clothes Monday to Friday. They dress for success!  See, by looking the part, you become the part!  Of course, if you have no skills, you will not be promoted to a manager or team leader just because you dress sharp.  But if you have great skills, and dress in a suit and tie, you have just catapulted yourself up in rank, no question.  The 400 dollars you will spend on a decent suit and tie will pay you back within the year.  I promise you! 
  13. Communication Ability
    This is another critical category!  There are so many good developers out there, but there are not a lot of great developers.  Why?  Because a lot of the good developers, are terrible communicators.  There are many levels of communication, ranging from email, to small SCRUM meetings, all the way up to large executive meetings and your ability to contribute at the executive level.  Then you get to "The Show" where you are presenting for hundreds of people, showing off software.  While you don't need to get to the final stages, you need to be able to at least communicate your ideas clearly and effectively in meetings.  The better your communication, the farther you will go. 

    Bottom line:  If you want to be an executive, you have to be a 9 or 10 at communication. Even when you take meeting minutes, or send out status reports, you need to communicate extremely well!  Don't just say "I fixed bug 1371" on your daily report!  Show off; explain how hard it was to solve the problem, how long, or how quick you solved it!  Explain the technology you used!  And explain how you will ensure the problem doesn't happen again.  Your status reports should not be a bad thing you don't like to do!  They should be an exciting part of your week where you get to show off to your manager!
  14. Goal Setting Skill
    Good developers can get things done, and go throughout their day to day by doing what you tell them to do.  They don't really think far ahead and think of what they want to be doing in a year, five years, or even 10 years.  Some good developers know what they want... but have no real plan to get there!  A great developer has the goals for the year, the next five years, and knows roughly where he will be in 10 years.  

    Great developers also take it to the next level by not only thinking about their goals, but also visualize it!  They can see exactly what they will be doing in five years, to the level of where they will be doing it.  Even more, a great developer will create a detailed plan for his next year, complete with courses he will take, projects he will complete, and relationships he will build. 
  15. Organizational Skill
    The final key component that really brings everything together is organization.  You may be the best developer in the world, but if you are not organized, you will fall apart and become bogged down!  Eventually you will be overwhelmed and start losing your edge.  Great developers keep an extremely clean desk, they keep all their notebooks, and write very clearly.  They print out their daily outlook calendar of meetings and tasks.  They have an inbox process to deal with emails, meetings, and new assignments.  They keep file folders and can instantly pull up projects, meeting minutes, and other details when asked to produce them.

Bonus Tip:  Passion!
One of my team members read my post and reminded me of something that every single person on my team has in buckets!  Passion!  Without passion in what you do day to day, you will not be a great developer, or great at anything for that matter.  Lack of passion is the number one reason so many developers never become great!  It is also the number one reason people do not succeed! A passionate developer will outperform even the best technical developers if they are not passionate about their job, their role, and their project.  Think about it, if you have read this far, are you going to make an effort to make all the changes I listed?  They seem simple, but without the passion to do these things, are you really going to commit today and be successful?

So there you have it!  These are some of the key principles I am using in rating my development team during the review process.  Mind you, I provide my team members with the best environment I possibly can, and in return I want great developers!  And they want to all be great developers!  You can use these rules to rate your developers, or if you are a developer yourself, please use this list to make changes if needed, and catapult your career past your peers! 

Follow these tips, and you will get the promotion you want, the increase you have been waiting for, and you will overall be happier with your achievements!  Try it out and post your results in the comments below!  I'd love to hear from you!  Also if have other points you think I should add, let me know!

August 10, 2007

Web Site Top 10 Things to Consider!

web20 So you are creating a new web site!  That's fantastic!  But what do you need to make sure you consider when you embark on the project?  Below is a list of 10 things that you must consider before you build your site.

  1. Browser Resizing
    Does the web site resize nicely in different browser window sizes.  What is the target size you are designing your site for?  A site can look great on 1024 by 768, but what happens when you put your site on a high resolution 21inch LCD Panel.  Your site should look good on any resolution!
  2. Background Color
    If you use white background colors, do you actually specify white, or just leave it as default? A lot of people have their default background colors set to grey instead of white.  When you load a site up that does not explicitly set the background color to white, it shows up as whatever the user has set up as his default.
  3. Site Alignment
    Will the site be aligned on the left, right, centered?  Very important decision to make!  Ensure you have this question answered before you begin, although it can be changed later, it can be a pain.
  4. Will the header and footer of the site resize?
    Does your header need to resize every time the browser window is resized?  what about the web page footer?  Make sure you speak with the designers if you have any working on the project and get this detail hammered out!
  5. Browser Compatibility
    Will the site need to be 100% compatible with all browsers? Opera? Safari? Internet Explorer? Firefox?
  6. Dynamic Rollovers
    Does the site require dynamic rollovers for navigation buttons and hyperlinks?
  7. No Tables
    Do not use any tables, use DIV tags or SPAN tags for everything.
  8. Standards
    What standard will you follow? W3C Valid HTML 4.01, W3C Valid XHTML 1.0 Transitional, or W3C Valid XHTML 1.0 Strict.
  9. Make sure to use SEO Semantic Coding with complete presentation separation.
    You are probably really familiar with normal HTML coding.  SEO Semantic Coding, or Semantic Markup focuses on writing code that is descriptive.  It enables search engines and other web site indexers to categorize your site properly, and give it more weight in search results.
  10. Web Site Loading time.
    Make sure you know all the basics about saving images.  Doing this piece wrong can cause your page load times to increase exponentially!  PNG/JPG/GIF... make sure you know which file type to use in the right situation.

Think about these things the next time you work on a site.  You will be miles ahead of the competition!  Stay tuned over the next few weeks as we focus more on each individual section above.  Are there any I missed? let me know through the comments!

October 27, 2006

The Complete List of Visual Studio Add-Ins and Tools

This is a listing of Microsoft Visual Studio Add-ins and tools that you need to get your job done faster, more efficiently, and with much higher quality than you thought possible.  Think of these tools as the different components that make up a swiss army knife.  These products are designed to be used in conjunction with Microsoft Visual Studio.  Since there are so many versions of Visual Studio (6, 2002, 2003, 2005, etc), some of these may not be compatible with the flavor you are running.  I have tried to find at least 3 tools for each area that I feel are best of breed, however in some cases their is really only one or two great tools.  Make sure to submit the tools you love in the comments below!

Build Tools

Refactoring

Profiler / Visualizer

Code Search

UML Modeling

Source Control

IntelliSense

Faster Coding / Templating

Testing

Documentation

Code Snippet Management

Working with Win32 API's

Window Management

Web Services

Team Foundation Server

Deployment

Reflector

Resource Editors

Mathematics

Metrics / Code Coverage

All-In-One

Shorthand Tricks in CSS

There are many ways to write short handed CSS.  Below are some of the best ways I have found to reduce the size of my Cascading Style Sheets.  These tricks let you specify several properties by using one line instead of endless line after line.

 

Fonts can he made a lot shorter than you might think.  When I work with CSS I find myself doing a lot of this:

font-size: 1em;
line-height: 1.5em;
font-weight: bold;
font-style: italic;
font-variant: small-caps;
font-family: verdana,serif;

This works fine, however there is actually a much quicker way:

font: 1em/1.5em bold italic small-caps verdana,serif

 

Backgrounds can also be condensed into one line commands vs. writing out each line.  As an example, here is the long way:

background-color:#f00;
background-image:url(background.gif);
background-repeat:no-repeat;
background-attachment:fixed;
background-position:0 0;

and here is the short way:

background:#f00 url(background.gif) no-repeat fixed 0 0;

 

Colors can also be short handed.  This is a little known trick that works really well.  Here is what most people would write for code using color:

#000000
#FFFFFF
#445566

However, as long as you have three pairs, you can easily shorthand your annotation to only 3 characters following the pound symbol.  Take a look:

#000
#FFF
#456

 

Margins and padding code can be much simplified from:

margin-top:1em;
margin-right:0;
margin-bottom:2em;
margin-left:0.5em;

by doing this:

margin:1em 0 2em 0.5em;

 

Lists can be shortened as well by using the shorthand properties for ordered and unordered lists.  Typical CSS list code might look like:

list-style-type:square;
list-style-position:inside;
list-style-image:url(image.gif);

but would be much simpler expressed as:

list-style:square inside url(image.gif);

 

CSS shorthand is quicker and more efficient to use in many situations.  Support for this can vary among certain browsers, and it can also make it slightly more complex to read your CSS file.  This brings me back to the Computer Science days where we would try and write the shortest lines of code to perform a task.  In the end you could do so much in one line, however the readability of the line really suffered.  The choice is up to you!

October 26, 2006

The Complete List of Ajax Tools

Ajax has really taken off over the last two years.  Ajax is really just the combination of Asynchronous JavaScript and XML.  I actually remember almost over 5 years ago now working with XML and JavaScript to auto-magically update navigation bars from the database.  With the advancement of Ajax, new frameworks, utilities, and software packages have been built to make the production of Ajax web sites much easier.  Below is the complete list of these tools, and the only list you will ever need!  Please feel free to submit more sites in the comments below as they will be added!

 

AJAX Libraries / API's

AJAX .NET Frameworks

AJAX ColdFusion Frameworks

AJAX Flash Frameworks

AJAX Java Frameworks

AJAX Perl Frameworks

AJAX PHP Frameworks

AJAX C++ Frameworks

AJAX Toolkit Frameworks

AJAX Toolkits

AJAX Application Models

 

Other Great Real World Lists

October 25, 2006

Software Developers Search

I recently started working on a new search engine project www.realsoftwaredevelopment.com/search that I intend to be a fully customized Software Development and Architect search engine based fully on Google's search engine.  Please feel free to take a look as it is still in beta.  If you would like to contribute to the sites that will be crawled using this search engine, please provide the sites you recommend in the form of comments below!

The current version is based on Google Co-Op that launched two days ago.  I plan on adding some new Ajax functionality to make the search engine more responsive, as well as tie in Google Blog Search in.

The main reason for launching the "customized" search engine was for our development team to use one central database of approved sites to search the Internet.  As this evolves over the next few weeks, I hope it is of huge benefit to everyone else in the Real World!

Try the Real World Developer Search Today!

October 20, 2006

The Complete List of CSS Tools

There are so many great CSS Tools out there to use!  Please feel free to use this list as the most up to date list on the Internet.  Also if you love this list, make sure you sign up for the newsletter at the top right of the site!

Other Great Real World Lists

User Interface

Accesability Checkers

Formatters and Optimizers

Fonts

Forms

Layout

Galleries

Help Guides / Hacks / Learning Materials


  • Explains the structure of CSS- and HTML-documents. Enter semi-colon separated selectors or just paste in your existing rulesets into the "Direct Input" area, or provide the URL of a stylesheet or an HTML document with an embedded stylesheet in the "URL Input" area. English, Spanish, German and Bulgarian versions are available.
  • Tom Lee has a tutorial on Max-width in IE Using a CSS Expression. Word of caution: I hear using this method can be rather hairy, in some cases crashing the browser.
  • Future-proof your CSS with Conditional Comments from Bruce Lawson is a great comprehensive collection of CSS's that, when combined, addresses most of CSS issues with different browsers.
  • IE Word Wrap Doppelganger Bug — Sitepoint on how heading elements could leave a small trail of itself as it wraps to the next line in IE6.
  • Images, Tables, and Mysterious Gaps seems like something I should've known already about the behavior of inline elements in strict mode. But of course it took me an hour of agony before finally realizing the ultimate truth: I'm not that smart.
  • Easy CSS hacks for IE7 — Some CSS hacks that will work with IE7. Hey, you never know.
  • Web Browser CSS Support with updated listings for IE7, Firefox 1.5, and Opera 8.5.
  • snook.ca on the "+" CSS hack which you can use to target IE6 and IE7 only.
  • On having layout reveals some information and workarounds for IE's strange and proprietary 'rendering-concept': hasLayout — one of the major causes for headache when it comes to how IE decides to pain the boundaries of certain HTML elements:
    • "...A lot of Internet Explorer's rendering inconsistencies can be fixed by giving an element “layout.” John Gallant and Holly Bergevin classified these inconsistencies as “dimensional bugs,” meaning that they can often be solved by applying a width or height. This leads to a question of why “layout” can change the rendering of and the relationships between elements. The question, albeit a good one, is hard to answer. In this article, the authors focus on some aspects of this complicated matter. For more thorough discussions and examples, please refer to the links provided."
  • Negative text-indent and underline — No matter how far on the left the real text is, the underline will be stretched all the way to the right in some PC browsers, namely the Firefox.
  • IE6 Multi Class Bug — Again, something that could've brought to my attention last week!
    • "...Internet Explorer fails to render backgrounds for elements that have both an ID and a class defined. For instance, #photos.background1 will display the corresponding background in IE6 for Windows, but once that has been defined, #photos.background2, #photos.background3, etc. will not be displayed."
  • Ten more CSS tricks you may not know — includes few IE bug fix techniques
  • The "Holly" Hack — taming IE/Win CSS display bug by assigning a dimensional value such as height:1%;
  • CSS tests — a great list of all the CSS gotcha's under one roof.
  • max-width in IE using VERY little known IE-only CSS "Dynamic properties"
  • List of @import hacks to hide CSS from different browsers.
  • Essentials of CSS Hacking For Internet Explorer — an excellent list of quick hints on safeguarding your CSS against IE.
  • Web browser standards support — Charts comparing IE 6, Firefox 1.0, and Opera 8.
  • Full CSS property browser compatibility chart
  • The perils of using XHTML properly — Potential pitfalls of declaring application/xhtml+xml MIME type.
  • IE Double Float Margin Bug.

Tips and Tricks

October 10, 2006

Google Code Search Tips

Google Code Search has finally launched! indexing billions of lines of code from around the Internet, Google intends to make source code that is available on the internet, easily accessible and searchable.  The ways that this will help advance programming and algorithms will be phenomenal!  Below I present some great Google Code Search Tips for you to try!

Searching Regular Expressions

Let's say you need a regular expression to validate  e-mail address's, well no problem, search:

regexp e-mail

Retrieving Passwords

Well this is slightly in the black area, but of course, being curious and all, here is a way to get passwords from files.  I should note this is good as it will teach people to be much more secure with their passwords.

lang:php file:wp-config user -sample

Interested in some asp.net passwords? This will give you some passwords found in web.config file.

connectionstring file:web.config

and now for some root passwords in php

file:config.inc.php "MySQL password" "root"

Learn how to create crackers

Interested in figuring out how crackers create code to circumvent your serial code protection?

keygen name serial

I will add more tips as I see them!  Hopefully Google Code Search will make us all better programmers!

Add Us

  • Add to Technorati Favorites
    Add Miguel Carrasco's Feedburner

    Add Miguel Carrasco to Google

    Subscribe to MyMSN

    Subscribe to MyYahoo!

    Subscribe to Bloglines

    Subscribe to Newsgator

    Subscribe to Feedster

    Subscribe to NewsIsFree

Great Sites