Posts Tagged Consulting
SQL – Find Orphaned Records
I created a quick stored procedure the other day to find orphaned records in a SQL 2000 database:
Add comment July 7, 2008
What’s the most productive development language?
I received the following question today:
Can you provide any studies or analysis that quantify the programmer productivity benefits of C# vs VC++? Thanks!
What I’m looking for is from a developer perspective, I’m sure there’s plenty of studies out there to be found
I thought this was such an interesting question that I just had to share my response:
From a developers perspective, that’s tough because everyone has their own opinions… with that said, I can provide you mine
![]()
In my experiences, I’ve noticed the greatest factors affecting productivity is people, understanding the problem, and applying the right tools and technologies to solve the problem. During the envisioning of a new project, my recommendation is for people to do the following:
· Take an inventory of the team; understand everyone’s current skills and desires. As a colleague of mine said recently, “The nice thing about newer technologies is that they are exciting to work on. Doing the same thing over and over again, just becomes work”. In terms of productivity, if you can take advantage of new technology while minimizing the learning curve and risk… this person is going to be wildly more productive on the new stuff because they love doing it. The key for every team is not always new technology however… it’s about what gets them excited.
· Apply the appropriate technology for the problem at hand. This requires you having talented people that have a solid “toolbox”. If find yourself on a team or in an organization that only has one or two tools without an understanding of what is happening in the marketplace, those people are going to solve every people with the limited toolset they have, and that may not be the best choice. Someone with these characteristics is often referred to as a person who carries a Golden Hammer. For many situations, VC++ will be the right tool, and in many others it will not.
· Finally, consider your future. Your future technology direction will be impacted by the decisions made on this project. If you are moving to a new technology platform for your future, that’s an investment.
I realize that I didn’t answer the question, but that was intentional. The Microsoft .Net platform is very feature rich and has a huge following. Additionally, you can take advantage of the platform with the use of many different languages, managed C++, C#, VB .Net, and F# just to name a few.
Add comment May 16, 2008
"I don’t want to pay for Project Management"
I was working with a customer a couple weeks ago and while we were going over an estimate together, the customer inquired about a Project Management line item. During the inquiry, this person wanted to know what they were getting for the money that would be spent on project management and they asked if they could choose to go without project management. Quite frankly, this line of inquiry comes up quite often.
I always smile when a person stops at that line item, I’m pretty sure I know where they are going to take the conversation next.
I’ve seen so many people fumble around with this question that I just had to write a post about it.
I want to start off by saying that I think Project Management is very important to the success of a project. Additionally, I have been in many conversations where people have suggested “rolling the PM hours into the other tasks”, and I want to publicly say, I think this is horrible idea. First of all, this is an attempt to avoid answering the question, “What is the value of Project Management, and why should I have to pay for it?” Secondly, it’s not very honest. I am a fan of transparency, and I think everything on the project should be clearly laid out and well described.
Here is what works for me. The first key is understanding the value of Project Management, and for many software engineers/developers this may not be an easy thing to do. Second, learn how to articulate the value of project management. Then, during the discussion, I usually say something along these lines:
The role of a Project Manager is to focus on three primary aspects of the project:
- Budget
- Schedule
- Solution (Functionality, Quality, Outcome, etc.)
Their responsibilities include the following:
- Daily communication with the development team
- Status updates and communication with you
- Budgetary management and invoice reconciliation
- Identification and mitigation of project related risk
- Ensuring that the solution meets your described needs and is of acceptable quality
- Understanding what the team needs and removing roadblocks so that they can stay focused and productive
- Reviewing progress with you and advocating your needs to the development team
- and more
If you would like to forgo the costs associated with Project Management, I would be willing to discuss this you, however I need you to understand that we would no longer be responsible for the management of this project and therefore would not be managing its Budget, Schedule, and Overall Solution. The success of the project requires these responsibilities, and I am uncomfortable moving forward without it. If you or someone on your staff wants to assume all of these responsibilities…. we can talk about it, but I highly recommend using our project managers for this role.
I have never had the “Project Management Inquiry” conversation gone beyond something similar to the above. The customer sees the value, and isn’t willing take the risk. Secondly, they have a better understanding of what the project manager can do for them, and this often encourages them to build stronger relationships with the project manager.
Add comment May 16, 2008
Estimated efforts don’t apply to someone who’s not on the project
I recently received a request from another team. The other team is working on a project that needs to “go live” at the end of the month and the person who was originally planned to complete one of the features became unavailable. I am always happy to help out and love to see teams collaborate… at the same time I am very pragmatic and realistic.
My offer was something like this:
I can get someone on my team to help out, but the only people with availability within this timeframe have limited to no experience with the technologies or client you are working with. I want you to know that you will be taking on some risk. You have estimated the effort without our involvement, and I cannot commit to having someone complete the effort in the estimated time. Additionally, you will need to incur some overhead because this person does not have domain knowledge and they are not familiar with some of the technologies used.
The person that I was working with seemed to get perturbed and I think they thought that I was being unhelpful. I told them that any overages due to the stated risks would need be incurred by that project. I got the sense that they felt I was being unreasonable and that I should pay for the overhead due to new technologies with my training budget. I disagreed.
After the meeting, I felt a sense of guilt, and wondered if I was somehow being unhelpful. I thought about it some more and I’m sticking to my guns, I think I did the right thing. In my opinion, too often people get themselves into trouble by not having difficult conversations like this one.
I think the best thing in this situation would be something along the lines of this:
Inform the customer that we have someone with availability to get this feature complete within their timeline, however they are new to the project and some of the technologies. They have the core skill set and foundation to complete the work, but we need to understand the risk… this may cost more than originally estimated. If they are uncomfortable with this, we have several options:
- Push the date back until the person originally planned to do the work becomes available
- We can pay for x number of hours of overage incurred to compensate them for this discomfort
- We can validate the estimate with the new person and provide them with an estimate that we can commit to
I think the worst thing to do is, not communicate the risk and cross your fingers.
Add comment May 15, 2008