Thursday, May 8, 2008

To Every Manager, His Day

Let me tell you the story of a semi-young, very agressive man; who has worked his way up through the ranks of corporation mania. At first a trainer of the system, then for a short time a programmer (of some sort, he says JAVA), until finally a Manager of a group (of what, we don't know), and now the chance to start his own branch as any title he chooses. Now before you critic him in back of your of your and say he didn't deserve it. Imagine the amount of talking it would take, or the odds to overcome, to get a company to invest in your ideas of a new branch that you would lead to produce a new version of the company product; that is is badly needed. Certainly you would be a believer in whomever speaks the loudest for the longest is surely correct and the winner.

You are probably thinking at this point, who cares?! Met a thousand of them! They are always on walking on everyone around them to get to where they want to be. Don't care the cost of any given issue as long as it doesn't cost them... I understand all that, but the one thing that just pushes my buttons right now is someone who has become a GURU (apparently over night) on an IT area (like architecture or Frameworks or even .NET programming techniques because they have discovered Team Foundation Server and followed its instructional training) or many of them for that fact.

First he shows a brief presentation of the previous product (written in PHP and using mySQL). His presentation in short is, it is badly written, performs poorly, the customer is complaining about it; so, we (as sales persons) have promised the customer a brand new look and feel and outstanding performance and we will let them look in our progress as we produce these new products or versions. I knew right then he (and likely the VP) were trying to save a large client for the company. And this customer was apparently large enough to the company to justify this new branch of an investment. They had already tried the overseas solution because it was cheaper. But they couldn't communicate with these folks, so it seemed. So they never produced what was asked of them per the specifications. The company even sent the director of development (who originated from that country) back to India to get them straightened out. But he was there for like four days in daily meetings with us, then disappeared for a week. I think that was a prearranged vacation or something. Just always it seemed that the left hand had no idea what the right hand was doing and in the meantime, this new Branch boss (a self proclaimed know it all on every topic, just ask him) was running loose learning how to do this or that daily through experiment or calling someone for guidance. And in the end, HE HAD THE SOLUTION! HE HAD THE ARCHITECTURE of the new product, and he knew exactly what we were to do as programmers. Just follow the guidelines of TFS, it can't be so hard!

So he jumped right in the middle of the programming group, said, YES, I need some of the patterns and practices, I need Workflows, I need webparts for a web 2.0 portal, and I need widgets.... And as LEAD, I stood up and said, that is not the way to do that. What you have presented is NOT architecture for .NET coders. And what you have assembled is an alphabet soup at best of .NET frameworks that now comprise your primary product root folder. It is a mess and will be impossible to support.

I even submitted a document, requested by the Director of Development, stating the details and what the architecture should look like. Later that day, I was informed that I was released.

There were lots of other corporate agendas going on as welll within the ranks making it impossible to LEAD the group. The VP was calling one of the programmers in my group telling him to do this or that while the programmer appeared to give a daily report on the branch boss. And all the while, even though communication with the offshore group was diffifcult, they were always ready to listen to guidance and assignments. And maybe the real issue was that I did not stand up to the VP or Branch Boss and say, you hired me to LEAD this group of programmers; now back up and out, lend your suggestions and designs, but let me LEAD the programmers in a solution we can support. Pretty sure that one would have gotten me fired too. And as an old professor from UMC said in my BS days in education, not only do they not know, they don't even suspect how deep they are.

Thursday, April 17, 2008

Giving it your all, no matter...

In reviewing my own blogging, it seems that I have something always negative to say in review of most topics. Perhaps I do not feel the need to blog on the topics that are positive or that do NOT need our attention. But I do think it important to celebrate those successes in life when achieved. I do think it important to tell your coworkers GOOD JOB when it truly applies. And I think it most important to keep a smile and something humorous to create smiles each and everyday, at home and at work. And last but not least, leave home problems at home and work problems at work. If you cannot do these things, then talk to someone professional about them. A professional can always make a difference.

Windows Workflow Foundation, oh boy!

There are two references you need to read, entirely, if you are considering WWF. And if you are considering WCF, also be aware of its preferences to webservices. Here are WWF references:
http://msdn2.microsoft.com/en-us/library/bb887609.aspx#Multithreaded_topic1
Essential Windows Workflow Foundation
by Dharma Shukla; Bob Schmidt
Publisher: Addison Wesley Professional
Pub Date: October 05, 2006
Print ISBN-10: 0-321-39983-8
Print ISBN-13: 978-0-321-39983-0
Pages: 480

In review of the book, I thought it was very well written and covered the topic in great details with good exercises. I followed through the exercises to understand the value of WWF. Business processes, and especially the automation of such processes, has always been a difficult and complex coding operation. I have coded such requirements at least twice for large companies. OOAD makes it much easier. And the .NET languages are a great choice for tackling the processes of coding. But after following the book, all I can say is, GEE Microsoft, why do you wish to make it so difficult?

The article, mentioned above, is a MUST READ. In summary my impression of the article basically said that they felt WWF was an essential part of their solution while the details they after talk about how they had to recode WWF libraries to make it work as they required. And they also mention what a memory hog WWF is and how slowly it truely loads.

My crew are now in the midst of the same requirements. And my captain has stated that WWF is the key to the solution. As the chief coder, I only have questions at this point considering all that has been stated and knowing the details of what I have written in the past.

Saturday, April 12, 2008

Agile intentions, Waterfall reality

I have always been humored by the new thoughts and introductions of AGILE models, practices, methodologies, or ANYTHING for that matter. The ideas that we will produce a product (a piece of software that may become a total enterprise) and although we work only on this or that piece for the moment, keep in mind that in the end, we want the whole pie. And of course, in the meantime, we may change our minds about certain pieces. AGILE to me means we have thought about the whole pie, PERIOD. Everytime I hear a manager speak these words, the next thing I hear is, but here are the next few pieces. Then we will see that we are still on track with user requests and continue on from there. OK, AGILE approach using WATERFALL development techniques. Even if the manager passes us a total time line with milestones (deadlines) for each phase (now called INTERATIONS in Team Foundation Server), the presence of deadlines suggest waterfall production. True AGILE development is a continuation of the development of a product to enrich it with new features and functionality. But you must have the base product to start this path. And in reality, what I hear most of the time is, OK, we will write 1, 2, and 3. And then I will tell you what to do next. That is not AGILE management either. That is piece meal programming in a waterfall management style. AGILE means that you a vision of the total product. NOT a suggestion of seeking a base product and I will make decisions about future parts later when I know something. We are so desparate in this industry to seek new ways of doing the same old thing that we make up words to denote old processes. AGILE is one of them. I always loved the word EXTREME programming. I have read several books on the subject and in all cases end up asking myself, what has changed? Why is this new? A developer has a short term development cycle, high demand, and total focus of the end product; GET-R-DONE! That is EXTREME programming to me. Many times done without a production document. While AGILE management should produce a production document for each production cycle and a total map (UML diagram or workflow diagram) of the total product when completed. And I personally get tired of hearing a word thrown around in casual conversation or meeting presentations that has no bearing on anything concerning the programming tasks at hand. And it is really being used because it is the LATEST FAD of lingo to use. It has no meaning.

The Power of Microsoft

I have never met a developer of any language who does not respect nor acknowledge the contributions Microsoft has made to the computing industry and indirectly to many other industries. I have met a few that do not like Microsoft for their business practices and distributions, me included. But I wish to be clear about this perspective to my readers. Microsoft makes some of the best programming languages in the world. They sell some of the best applications in the world. Their business practices of consuming smaller software production businesses who have great products is ruthless in most cases in their tactics. But then others would call that smart business sense. I mean really! After you have gone over the top of a multi-billion dollar company, don't you have a responsibility to help the smaller guys grow up; not consume them.

But the one practice that bothers me most personally is Microsoft's continued way of shoving unfinished, unproven software models down the throats of many developers, including me. They have done this since day one. Well, you say, you do not have to use their methodologies and practices in your programming projects. In fact their own gurus encourage you, as architects and developers, to come up with your own models, practices, and solutions to suit your business requirements. And I cannot begin to tell you the number of contracts I have programmed where I have relayed this advice to one manager after another only to hear the manager respond with, we are doing that way because that is the way Microsoft does it and their consultants told me this was best. Why recreate the wheel when Microsoft gives it to you for free?

So while there is an apparent contradiction of advice between the consulting received from the gurus in the webinars and the Microsoft consultants sent to your company site (when you hire them); they need to emphasize that the models and practices offered in MSDN and from Microsoft Press publications, are merely suggestions, nothing more.

Sunday, March 9, 2008

Testing your Prospects

This will be a short one. This subject is easy. Brain Bench versus Prove It versus What? How do you test for skillset? Answer: Ask your candidates to write a project, similar to what they will be asked to do when working for you. Take note of the amount of time it took for them to return the result to you. Review their code for coding standards and poor coding techniques. Read the rest of this blogg for current techniques and coding standards required to create a current standards web site. You will not find these methods tested by Brain Bench, Prove It, or any other testing site using textbook exam methods. It is a waste your money and your candidate's time. If you are not sure how to test the skillset of your prospective staff, then I might even suggest that you are the wrong candidate to be managing them or selecting them.

Here is another viewpoint from another contractor: http://blogs.techrepublic.com.com/project-management/?p=195&tag=rbxccnbtr1, speaking about education versus experience. And once you finish reading that great article, figure out how to put real world experience testing into Brain Bench or ProveIt. It just can't be done. That is why they don't work.

Which Platform Pattern should I be using for my business?

This past week I had three interviews for new contracts. All three were with major established companies asking if I would fill the part of LEAD developer and drive the development. All suggested deadlines and goals to be obtained with a reassessment of the future thereafter. In other words, no commitment of a total product solution from an Agile development viewpoint; but rather a waterfall approach to interim expectations for customer driven requirements and an acknowledgement of the current state of the market. A recession will turn any Agile solution into a waterfall production everytime. Directors and managers simply don't have the promise of new sales to guarantee employment of anyone, including themselves. So they typically make decisions 3 months at a time with no promise of thereafter. So now the decisions you make, as a contractor, become even more important as you bet your family income on their business decisions, the company's ability to market and sell their products and services, and their apparent interest and motivation to keep you.

During these last interviews, I found it interesting that all were telling me their current dilemmas and asking my opinion about possible solutions. Now although I love these kinds of intelligent discussions to assess my knowledge and contributions for the current position; I always leave there wondering if I should have charged a consulting fee. Another point I noticed about all three was they had all bought into some flavor of Microsoft Model and Practice and were asking about security and extending the models.

Now there is little doubt in my mind that Microsoft (with the release of 3.5 Framework) has finally gotten to the point where they are writing a large percentage of the backend business logic and business entities pages. I am not sure of their marketing strategy of this other than to get developers more hooked on free Microsoft work and dependant to the point they can never let go of the Microsoft offerings. Likewise, I advised one of those interviewers (who develops and maintains banking software products) that if I were accountable for this software development and support, that last thing I would ever want to tell my boss is how the Microsoft patches now need to be applied because Microsoft missed this or that security issues. His next question to me would likely be, why did you expose us like that? Do you think Microsoft would take an interest if I called them? Here is the answer: Why customization beats source code modification.

I know one thing for sure. If I am responsible for the success of this web site as LEAD, Manager, or Director; then we will be doing the production my way. And it will be architected as a good solid foundation for classification and layering and optional client features will be extensions of current foundation layering. I talk about this with suggested examples in my book (due for release, next month). But I want to know every line of code, its purpose, and its costs.

Here is the point and purpose of this discussion. I prefer to put the root functional files in the root directory of the web application. Images go under a folder called images. Scripts go under a folder called _ScriptLibrary. Middle tier and all other classes go under the App_Code folder. And the backend libraries that offer data separation and layering, utilitarian functionality, and error and events logging are all compiled separately into their own DLLs and reside in the bin folder. If I need to add another feature to the web site (in essence, another web application), then I may put it in a subfolder if it is only applicable to that web application; or if I have several clients looking to use this new feature, then I will put it in a new web application folder. It all depends on required functionality, customized settings per clients, and how generic I can make it for everyone's purpose. But these are decisions you, as a developer or architect, need to make to mirror your business processes. You should not be listening to anyone tell you that you need to follow this pattern or that one because everyone is doing it that way. My book tells the details of this discussion and makes suggestions for design.