Archive for November, 2007

10 Ways to Create a Positive Programming Environment

Posted in Project Management, Software, Technology, programming on November 12, 2007 by Joey

After eight years of working in the software development field as both a developer and a manager, I offer what I feel are 10 things managers can do to create a positive programming environment:

1. Listen. To borrow from management guru Stephen Covey: “Seek first to understand, then to be understood.” Programmers face myriad difficulties in developing software. Before they can be given answers, the problems they are facing must be understood, which leads me to #2.

2. Lead with Questions, Not Answers. Don’t blurt out answers without making sure you understand what the problem is or what the programmer is asking. I’ve found that before answering or even further discussing solutions it helps to ask something like “So just to make sure I understand, you’re saying the problem is x?”

3. Respond to feedback. This one is so simple, I am amazed when managers don’t do it. Responding to feedback doesn’t mean you have to do what was suggested. It does mean that you consider the feedback given, honestly evaluate it and either make changes as needed or explain why you feel no change is necessary. I’ve found that even in the latter case, programmers appreciate that they are being listened to and will continue to give valuable feedback in future instances.

4. Don’t say negative things behind the backs of programmers. If there is an issue with a programmer, talk to them directly about it. As a manager, if you bad mouth one programmer in the presence of another, the one you are with WILL assume that you are also saying bad things about him when he is not there.

5. Admit when you don’t know something. Just because you’re a manager doesn’t mean you will always have the answer. Don’t be ashamed to bring someone else in for a second or third opinion. It doesn’t hurt to do this even when you feel you are right.

6. Treat programmers as they can become, not as they are. See the potential in people. Find what they are best at and encourage their strengths. I’ve found that when people feel respected and valued, they tend to improve and give you more than you expected.

7. Check your ego at the door. Use your expertise as needed. Share experiences when applicable. Demonstrate your knowledge as needed. But be very careful about being a “know it all”, as this can cause programmers to actually not want to talk you, as they may feel either intimidated by you or they may be turned off by what they perceive as smugness. Take extra care on this one, as you may not be aware that you have an ego problem. If you have friends on the team that give honest feedback, ask them to keep you in check here.

8. Create a system in which programmers are accountable on a daily basis. Although some programmers will resist this, if done in a positive way it’s a fabulous avenue for keeping the lines of communication open. The system you use isn’t as important as the manner in which you approach it. Give special care to make sure that you don’t make programmers feel as if you don’t trust them. The daily accountability should be seen more as a communication mechanism.

9. Give programmers space. In order to be creative, programmers need time alone to evaluate, ponder and consider solutions. There will be times during the day when they need to be working and discussing and interacting with other people. Make sure they also have time to think.

10. Have fun. We’re all just trying to get by. If your programmers are working hard, allow them to have fun as well.

SQL DMV: sys.dm_os_wait_stats

Posted in SQL, programming on November 8, 2007 by Joey

SQL 2005 provides Dynamic Management Views (DMV). One of these is sys.dm_os_wait_stats, which can be queried to give information about waits encountered by threads that are in execution. This information can be used to evaluate performance issues with SQL Server or, even more granularly, with specific queries.

To query this view, you must have VIEW SERVER STATE permission.

The columns available in this view are:

wait_type – Name of the wait type
waiting_tasks_count – Number of waits on the wait type
wait_time_ms – Total wait time for the wait type in milliseconds
max_wait_time_ms – Maximum wait time for the wait type in milliseconds
signal_wait_time_ms – Difference between the time the waiting thread was signaled and when it ran

Future posts will examine how to utilize this information to performance tune SQL queries.

SQL DMV – Dynamic Management Views

Posted in SQL, programming on November 8, 2007 by Joey

A new feature of SQL 2005 is Dynamic Management Views, commonly referred to with the acronym DMV.

DMVs give the database administrator information about the current state of the machine. DMVs can be used in conjunction with SQL Server Profiler and System monitor to actively identify problems with database systems. DMVs return internal, implementation-specific details on database performance and thus are an indispensable tool in the arsenal of any seasoned DBA. If you have not utilized DMVs in your database environment, well, now is as good a time as any to get up to speed on this new, easy-to-use feature. We will be writing a series of articles over the next few weeks that explore DMVs – What are they?; What DMVs are available?; How can they be used to tune your production environment?

In the meantime, if this short article has got you all a-tingle with anticipation, DMVs are described in this article in Microsoft’s Books Online.

Scrum Sprint Retrospective Meeting

Posted in Project Management, Scrum on November 1, 2007 by Joey

In the Scrum project management methodology, work is divided into 30 day Sprints. Following a Sprint, a retrospective meeting is held. Attendees are the Team and the Scrum Master. Each member of the team should be given an opportunity to answer:

  • What went well during the Sprint?
  • What improvements can be made on the next Sprint?

The team is given full latitude to discuss any factors that affect software development at the company. This could include such items as:

  • Processes
  • Policies
  • Work environment
  • Communications

The Sprint Retrospective is an opportunity to adjust the company’s Scrum approach as necessary to fit the realities of their situation. It is vital, therefore, that the feedback received at the retrospective be followed up on. Otherwise, the Team will quickly see it as a waste of time.