Falafel Software showcased ActiveFocus on Telerik's web site. This is a great illustration of what ActiveFocus can do and it can do a lot! I was the lead developer for the Windows version of ActiveFocus and I have to say, Falafel has really taken this project to levels I never imagined. It is extremely easy to use and richly functional. You have to see this video - watch the filtering capability on how the graphs interact with the grid - wow! One thing Lino (the president of Falafel) discussed was how the skins can be customized for different industries. Therefore, the terminology can be customized to a specific industry. I need to add, that for those engaged in Agile development, it would be easy to rename requirements to stories, events to iterations and so forth. AF also maintains important information like estimated and actual costs and efforts - critical for teams trying to achieve repeatable processes and cost analysis. You'll hear in Lino's video that the team plans for integration into Microsoft's Team Foundation Server - that's smart! Falafel software will be showing ActiveFocus at TechEd 2008 in Orlando, Florida in June 2008 and at the PMI Global Congress 2008 in Denver, Colorado in October 2008. If I sound partial to ActiveFocus, I am. Having conceived the idea, developed its first iteration and then seeing it turn into a state of the art web application by a rock solid team has been exciting to say the least. I am looking forward to using it with my clients and I will be showing how to use ActiveFocus in an Agile (Agile/hybrid) development setting. More to come later. For now, CHECK IT OUT!
If you're like me, and I am, then you appreciate the ease and debugging capabilities of browsers like Firefox. However Visual Studio continues to use IE even if you've set Firefox as your default browser in your environment. Gladly, this can be changed, here's how. 1. In the Solution Explorer, right-click over the .aspx page such as Default.aspx to bring up the context menu. Select "Browse with..." This will bring up a Browse With dialog (see figure). 2. Likely, Firefox will not be in the list. Simply press the "Add..." button, browse to the program directory (c:\Program Files\Mozilla Firefox), and select the program (Firefox.exe). 3. Press the "Set as Default" button with your preferred browser selected in the list. 4. Note, you can even set the default size of the browser window. This it!
I've been wondering if there's any pattern to music I listen to while programming. I'm considering if there's any connection between the musical genre and type of programming I'm doing. For instance, sometimes I'm developing something simple but tedious and just want to get it done fast. Other times I'm proofing designs, or implementing complex patterns. Then, there's designing/developing the user-interface which takes a sense of both creativity and structure. Granted, I understand that musical taste is a major component here. Still, just as there are different types of programming, there are different types of music. By the way, I should probably mention that in my development career, I have met numerous programmers who are also musicians ranging from amateur to professional. Any connection there? Music I frequently code to: Classic Rock: Most of it, particularly Led Zeppelin, Uriah Heep, Pink Floyd, Jethro Tull, etc. The key for me here is that I have to be familiar enough with the music so as not to be distracted by the lyrics. It seems I'm listening to classic rock when I'm coding something with which I'm familiar. Various forms of New age: Enigma is a new age group that mixes in some old world elements like Gregorian chants. This is great for coding and particularly when I'm coding a complex design. Check out the sustained electric guitar in "Hello and Welcome" off the A Posteriori album. I'll listen to harsh fast paced dark electronica when I'm in the groove, so to speak. For some reason it seems to keep my coding pace up. Similarly, certain forms of dark hard-edged rock (maybe even gothic) like Flyleaf. There are other groups, but if I mention them my friends will tell me I'm going to burn in hell. I'll often code to classical of course, Mozart's Requiem and Vivaldi's Four Seasons being my favorite. I'll also listen to hymns and praise music. I particularly enjoy the reworking of hymn melodies by groups like Indelible Grace. I can code to very specific forms of Jazz like Pat Metheny for instance. Music I cannot code to (nor listen to for that matter): I've heard programmers say that they like the upbeat rhythms of of dance electronica. This doesn't seem to work for me - it's too repetitive. I end up with code like while (true) do something; Pop - I can't stand this junk with its overly simplistic melodies and cliche lyrics. If anything, this drives me insane and makes me totally unproductive. Most Contemporary Christian Music for the same reasons I can't listen to pop. Rap, too repetitive and since many rap lyrics are angry, I'm thinking it would be a bad combination when I'm having a bad code day...or maybe not. What music do you listen to when coding?
According to Steve McConnell, Gold-plating "comes from developers who want to explore a technically challenging new area..." Jeff Atwood, in his blog, says that "In the purest sense, all refactoring is gold-plating. That is, it consumes extra project time and results in no material benefit for the users. But without periodic and aggressive refactoring, we can't produce sane, maintainable code." While I agree with Jeff's conclusion, I would not go as far as he does in equating refactoring with gold-plating. Having maintainable code does have a direct benefit to the customer or client (the person paying for the development). Ultimately, it's a cost/benefit matter. When the cost outweighs the benefit, then it's not worth refactoring. Plus, at some point (I hesitate at saying this), the code just works and no further development/refactoring is needed regardless of the code being ugly. Furthermore, when it comes to gold-plating, there is an ill-motive even though it may be subtle. I should probably note that when I use the term "developer" I may be referring to a development consulting organization, an independent consultant or a developer (at any level) within a development team. In all cases, this is a person who can influence the tools and technologies employed in a development effort. That said, I find that an extensive amount of gold-plating occurs at a much earlier phase of development (such as the proposal phase) which is why I prefer the term "Technology gold-plating" over "Developer gold-plating". This goes right in line with McConnell's definition. I divide Technology Gold-Plating into two categories. - New Technologies (Bleeding Edge)
- Preferred Technologies
New Technology Gold-plating New technology gold-plating is exactly what the name implies. The developer wants an opportunity to delve into the latest technology. This is extremely dangerous for the client who may be investing his/her money to the effort. In essence what is going on here is development research and education at the client's expense. It works like this. The vendor comes out with a new bleeding edge technology. The vendor pushes it on its partners (who want to play with it). The partners push it on to their clients. Their clients get blood splattered all over them - not good and frankly, quite messy. Preferred Technology Gold-plating Preferred technology gold-plating is the use of technologies with which the developer is most familiar or favors for whatever reason. For instance, a developer may use a pre-designed architectural model from the latest popular book on software architecture. Or he may use some pre-fabricated framework. I am by no means saying these are bad. They are excellent if they actually meet the client's technology and business needs. Yet, it happens too frequently that a company ends up with an over-architected monolith of a system when all they needed was an html page and a few lines of java script. So, how does one prevent this from happening to their project? Stay tuned, I'll be covering this and more in future posts.
I have to say that I am very happy with dasBlog's technology. It has been relatively easy to deploy blogs sites. My only gripe is a combination of the lacking dasBlog themes and my own artistic inability to create my own theme. Then, I discovered that numerous designers make their designs freely available. One is simply required to credit the artist accordingly. It took me only an hour or so to theme my personal site at www.xavierpacheco.com. To find free themes, simply Google "Free CSS Templates". Have fun!
I can say unhesitatingly that every project on which I have worked has been a collaborative nightmare. The reason? Because Email has been the primary means of team collaboration. I am pretty much sold on the Wiki approach to team collaboration. At this point, I have not personally implemented a Wiki, I am currently in the process of reading about the various options available. Needless to say, I am only interested in free / open source options. At the moment, I'm considering ScrewTurn Wiki. I am also anxious to see what Google does with their JotSpot acquisition. In the meantime, to see why Wiki is good for collaboration, watch this video. If you have any comments/suggestions on Wiki tools - do tell!
I found this on the Microsoft Learning site. These are 3 2-hour clinics and according to the site: This collection of 3 2-hour premium clinics teaches about the new capabilities provided by the .NET Framework 3.0. These clinics are for experienced Developers and Software Architects who are looking to adopt Microsoft's next generation technology within their solutions. Topics covered within the collection include: - Windows Presentation Foundation
- Windows Workflow Foundation
- Windows Communication Foundation
I'm going to take a look at these and will report how they are when done. Here's the link: https://www.microsoftelearning.com/eLearning/offerDetail.aspx?offerPriceId=127367
Every now and then, I find something free ( or open source) that is absolutely valuable to my job. Occasionally, I'll announce them. here are some that I use Notepad++ "a free source code editor (and Notepad replacement), which supports several programming languages, running under the MS Windows environment." 7-Zip An open-source file archiver supporting numerous formats. ----------------- Here are some others I've used over the years: PDF 995 Pdf995 comes with a PDF printer driver and PDF creator so that you can create PDF files. It displays a popup add which can be removed when purchased. Otherwise, it's totally free. Skype - Free telephony. This is essential for communication with people and you can buy an inexpensive account so that you can all regular phone numbers. Color Detector - this tool has been helpful when I've needed to determine the color of something an artist has created when I work on user interfaces. Not Free but extremely useful Camtasia Studio - Screen recorder. I use this to create flash recordings for clients so that I can show them something I've done or something we need to look into. GotoMeeting. Online meetings with conference calling, Fifty bucks a month - unlimited meetings. This tool is a must! Beyond Compare - My favorite file comparison tool. Have fun! Any others I should add?
Recently, a colleague and I were discussing the merits of best practices amongst small teams. The context of this discussion is of a development consulting company; companies that provide development resources from project managers to programmers and testers.
We agreed that "best practices" are often a difficult sell to clients that out source their projects to these consulting companies. The reason is that the there is a notion that best practices are time consuming tasks that offer no tangible benefit, but only perceived benefit. In other words, to the client, adding an extra X hours to a task that takes X hours to develop and deliver seems like unnecessary time and money. However, there is a serious fallacy to this reasoning.
Take, for instance, the best practice of code reviews. The whole purpose behind code reviews is to prevent defects in the software and to allow for their repair early in the project life-cycle. Generally speaking a defect costs much more to repair later in the development cycle. Therefore, it is advantageous to find it and fix it soon. This is made possible through code reviews.
One study involves a 10,000 line project done by two different groups of developers. One group did not perform code-reviews. The other did. The amount of money that would have been saved is substantial as shown in the figures below.
Personally, if I am the the customer hiring a development company, I want to make sure that the company performs code reviews, otherwise, I may be agreeing to pay some serious dough when I didn't have to.
If I'm the development company, and if I'm honest, I want to offer my clients the best service for their money. If I really believe that code reviews work, then I am going to work it into the development agreement. If a potential client resists, then I must show the potential cost in my estimate realizing I may not win the client.
I'll leave the analysis up to the reader. For more on this study, go here: Code Review Study.
Thoughts?
Heroes are great, they work overtime, they give it their all, tackle every crisis and sign up for every seemingly impossible task (do this 20 hour job in 2 hours). According to one manager, "these are the people that advance in a company."
This might come as a surprise, but in reality, what might seem like a good thing is actually bad for projects, bad for the company and bad for the team (the so called heroes and everybody else).
Heroics harbor bad practices
Every project management book I know of that has anything to say about heroics declares that it is a bad practice, a classic mistake.
Projects frequently run the risk of becoming dependant upon heroics when heroics are the norm. Yet, heroics seem to be the one aspect of a team that leaders and managers revere. When a project fails, blame is often shifted to those that didn't give it their all or the heroes who simply couldn't run faster than a speeding train.
Truth be told, heroics exists because of poor project management or poor leadership.
According to Steve McConnell,
"...emphasizing heroics in any form usually does more harm than good. In the case study, mid-level management placed a higher premium on can-do attitudes than on steady and consistent progress and meaningful progress reporting. The result was a pattern of scheduling brinkmanship in which impending schedule slips weren't detected, acknowledged, or reported"1
Heroics harbor several bad practices. Here are only a few, I'm sure there are many more:
- Heroics to meet deadlines only guarantee future tight deadlines
- Heroics burns people out, rendering them ineffective
- Heroics leads to inaccurate and unrealistic schedules and estimates
- Heroics minimize the efforts of those who actually plan and are realistic about schedules and work effort
- Heroics promote the neglect of sustainable and dependable processes
A Culture of Heroics
I have worked for several companies that elevate the "can do attitude" to the extreme. In these environments, people tend to get distinguished for "going the extra mile". A can-do-attitude is often equated with loyalty and commitment. Don't get me wrong, there is some truth to that last statement. I'm all about overtime, dealing with crises head on, giving more when necessary and advantageous. It is when these practices are 1) revered and 2) normative (the way business gets done), I say that the company is dangerously immature and unstable.
The SEI Capability Maturity Model defines the lowest level of maturity for a software company (Level 1) as,
"ad hoc, and the organization usually does not provide a stable environment. Success in these organizations depends on the competence and heroics of the people in the organization, and not on the use of proven processes"2
At CMM Level 3, a company is implementing an "effective project management system". Implied here is that individual heroics are not what makes projects succeed, but rather that the company operates according to a proven set of standard processes. Essentially, the capability of a company is organization itself, not the talents and the superior capabilities of a few people.
The bad side to heroics
In battle, the hero is often the one who risks or even gives his life. They are the ones who run into a foxhole with two grenades to take it out during an ambush. Eventually, the foxhole is taken, the hero may be dead as well as members of his team.
Could the team have avoided the ambush if there was proper training, preparation and planning for the mission? Could the team have benefited by having considered all potential risks - areas that an ambush was likely? Could the battle have been won had leadership laid out a well-planned battle strategy?
It would be worthwhile to consider where your organization stands regarding heroics. I would be interested in other drawbacks to heroics, comments?
1 http://stevemcconnell.com/rdenum.htm
2 http://en.wikipedia.org/wiki/Capability_Maturity_Model#Level_1_-_Initial
The Project Management Institute (PMI) is the authority in the area of Project Management (PM) and has created the leading standards on PM including the Project Management Body of Knowledge (PMBOK). PMBOK is an internationally IEEE recognized standard and it is the standard used in establishing the Project Management Professional (PMP) certification.
If the above paragraph doesn't make your head spin, just look into the requirements for PMP certification. I've been reading numerous articles and blog posts about whether such certification is necessary and worth the investment. One PMP holder suggests that the cost for certification can reach up to $5000 plus a huge investment in time!
I think of the PM's I have worked with over the years and none (including myself) are PMP certified. Yet, many articles I've read seem to indicate that PMP certification is starting to become very important in the marketplace. I quote one author who says, "The exam tests you on PMI's terminology, processes, and process boundaries. What the PMP does not demonstrate is our competency as project managers or our skills in applying our competencies in real-world situations."1 This, however, can be said of most certifications I believe.
I've read a few articles that make the case for PMP certification. These mostly have to do with personal, professional advancement. One author presents common excuses, my favorite of which was this, "PMP sounds too much like "p1mp," and I don't condone e$_cort services." (Note: I've purposefully changed the text hoping it will prevent any offensive AdSense ads).
Anyway, what I'm wondering, and intend to research, is this question. How important is having PMP certified staff in software development /consulting organizations that provide the entire development team to its clients?
More later.
The situation is that you have a medium to large scale project you need developed. You don't have an in-house development team or one that is available. Additionally, creating a new team is not an option. Basically, you need to go outside of your company to get this project done.
Here are five quick tips to help you effectively screen vendors.
1. Consider Multiple Vendors
Unless you have experience with a particular vendor, look at several. This is no different then hiring an employee. Make sure the vendor can understand your business needs and can speak intelligently to both the technology and the business domain. Consider their core competencies, certification and experience. Insist on speaking to past customer references.
2. Technology Considerations
Technology Bias
This depends. If you actually don't know much about technology, platforms and so forth, you will not be able to determine whether a vendor's recommended technology is based on the vendor's preference, or based on your business needs. There are a few things you can do here.
a). Require vendors to justify their technology recommendations in their proposals.
b). Hire an independent resource to help you evaluate vendor recommendations or to perform a technology review based on your needs.
c). Beware of technology bias (unless you are already committed to a specific technology). Many smaller vendors focus on a specific technology like Microsoft or Java, etc. On the the other hand, vendors who focus on a specific technology are often extremely competent in that technology - consider this.
Here are some comments a vendor might say that exposes his/her technology bias:
"We develop in XYZ because we've determined that it is better than anything else on the market."
"Everybody is using this technology."
"This technology is the wave of the future."
Here is an honest statement from a vendor:
"I don't know squat about ABC technology and whether or not it will meet your needs, but I am an expert in XYZ and have determined that it will meet your needs."
Untested Technologies
Developers are developers because they love technology and they especially love the challenge of those on the bleeding edge. RUN AWAY FAST from any vendor who recommends using the latest technology, methodology, development platform, etc. The last thing you need is to have your project become the test bed for some new, unproven technology. Remember, new technologies demo impressively, don't be lulled into early adopting.
3. 100% Developer Commitment
If you are providing full-time work, make sure the vendor agrees to a named developer or more to work exclusively on your project for its duration. It is not unreasonable for the vendor to require that you agree to a minimum number of hours per week per developer.
CAUTION: It is not uncommon for smaller vendors to take on Out-Tasking projects (small low-effort projects and development tasks). If you are providing full-time work, it is fair that the vendor grant you exclusive use of his/her development resource. Furthermore, a vendor who needlessly overworks their staff (excessive hours beyond full time) is a slave-driver and doesn't deserve your business.
4. Phased Approach and Status Reports
Make sure the vendor agrees to a phased approach and weekly status reports. Run away from any proposal that doesn't give you visibility into the project (the blackbox approach). You want to make sure that that you have check points throughout the development lifecycle. This is a good point to bring up in an independent review (see below).
HINT: An experienced vendor will assume this. Ask about the development approach they use. If they don't offer this, you'll need to ask. While this is not a disqualifier, it is a red flag.
5. Independent Review
Have the vendor agree to an independent review of their work at points during the development process.
An honest vendor will not only agree to this, but will consider it good for the overall project. I have been on both sides here and in every case, it resulted in further insight that only improved the overall project.
The process you use to select a development team is as important as the development process itself. It can be the factor that makes or breaks your project's success.
|