Wednesday, June 17, 2009

President 2.0

I believe our President has done it. President Obama is using technology to its fullest to , do his job. He is pushing his agenda through his websites, grass roots campaigns, twittering pages, YouTube videos and many others. In fact I writing a blog about his use of technology, is an accomplishment. Currently he is pushing Health care agenda and I, personally, am skeptical about it but I admire about him is that he is pushing critical issues to the masses using web technologies. True, a regular Joe won't be able to vote a "Nay" or a "Yeah" in the Senate or the House but at least I am aware of the issue and I can start a grass roots campaign for it or against it. I can also use technology to push my voice using Blogs, social networks and other Web 2.0 enable medium. I have admired how Obama has used the Web to rally the people to campaign for him. I signed up on his site when he was running because I was curious and I wanted to see what he is all about. I read up on the issues on his site and McCain's which helped me make a decision on my vote. I also got an opportunity, which I took, to volunteer at the Presidential Inauguration. It was a great experience and I wouldn't have been able to experience it if Obama wasn't reaching out to the masses via the web. Anyway he is revolutionizing on how campaigns are done because his usage of technology. I wonder when President 3.0 will come. Stay Tuned.

Here is a video of Obama's healthcare from PBS which includes my friend Jonathan's wife Zaneb Beams. Even if you hate Obama, you have to appreciate how he used Web 2.0 technologies.

Sunday, June 7, 2009

Twitter-mania!

As everything has a "buzz" lifespan, Twitter seems to be growing and various entities like my former employer, ManTech International and others, have started Twittering. I have been twittering for a few months and I have seen that it is a great way of creating organic social groups or Communities of Interest (CoI). For example I tweeted about "Groovy on Grails" and next thing I know, I am being followed by Grails evangelists. I have had web designers requesting me to let them follow me since I tweeted about Photoshop and other Adobe products. It is a neat thing that people are following micro-blogs since people don't have time to read large blog articles. I have discovered that with Twitter that you can create a buzz about yourself or about some of the actions you do. I have seen people Twitter about their skills to market themselves. I have seen entities like CNN Breaking News which tweets the latest stories in news. I follow Pete Carroll who markets USC and how cool it is be a USC Trojan. I also follow Shaq and Mark Sanchez, Jets QB draftee from USC and many more. The question is why I do enjoy following them and other one million plus who follow Ashton Kusher. The answer is that it gives a person insight into celebrities. A way for us to relate to them. They are human like us. For example, Mark Sanchez loves hamburgers and he is always tweeting about Hamburger joints in NYC or his practices at the NY Jets facility. I, personally, like following people I know since it gives me a better insight into their lives.

Now I ask the question, "Does it make sense to have companies like ManTech International Twittering?" I answer that asking another question, "What are they trying to achieve?" Is it recruiting tool, employee retention tool, or a way to generating more buzz? I suggest that they should first monitor who is following them? Is it ex-employees like me or is it current employees or someone totally different? As an ex-employee, I would be interested if they had any interesting positions open up. If I were a current employee then I would like to hear about new benefits or about some new business and potential career development. If I were an outsider, I could be a competing business, a potential stock buyer, a prospective employee or a prospective client. The question is what are companies trying to twitter? There is a market there but some creative analysis and speculation may increase a company's image, moral and the quality of the work force. As for me, I wish Twitter had a better UI.

Friday, June 5, 2009

Consultant - The Human Tool

As a US Government employee, I am constantly bombarded by contractors wanting to provide their services and vendors who are constantly selling me their Custom-Of-The-Self (COTS) products. Therefore as a US Government employee, it is my duty to determine if I need consultants and COTS products for some of my organization's strategic activities. As a goverment employee, my primary responsibility is to accomplish my organization's strategic and/or tactical objectives while managing to be diligent stewards of US Tax dollars. Anyway here are some thoughts regarding consultants:
  • Don't let the consultants drive the strategy for your projects - The consultants try to couple themselves to your organization processes and try to you dependent on their services.
  • Be up front - Tell the consultants what your expectations are of him and how his performance will be monitored and assessed.
  • Monitor their perfomance - Hold them accountantable to the project schedule and demand deliverables to be met on time.
  • Take ownership of the Spend Plan - Don't let the consultants manage the spend plan for you. This is a big no, no. Take ownership and decide how you want to mange it.
  • Define and demand deliverables - Define the deliverables and when they should be delivered to you. Keep them accountable for the deliverables.
  • Consultant Scope Creep - I call this when consultants are working with you to know your domain and they might try to expand the scope the deliverables and push the date back. This is not a good idea.
  • Believe in a Reward system where consultants can be retained because their project were successful or show them how they can retained with their good work.
In the end, consultants are nothing more they glorified Enterprise Architecture Tools. The consultants will do what they are told to do within the context of the agency. Having good requirements on sort of consultants should be done by interviewers and sharp managers would thinking about their potential reuse after this project. The only problem with the consultants is they don't have a new version available. :)

Tuesday, June 2, 2009

IT Role Players

Today I had a conversation with someone about the difference between an analyst and an architect. This blog entry comes out of this discussion where I share my opinion about various Information Technology (IT) roles.
  • Analyst - Someone who spends time analyzing, decomposing the subject matter and sometimes provides the best option depending on the requirements. This person is not involved in coming up with a noveau solution but rather is involved in doing detailed analysis. There are requirements analysts, business analysts, process analysts, chain-management analysts, financial analysts, technical analysts, security analysts, program analysts, etc. etc.
  • Architect - This role is a confusing one. I have heard that it is every developer's goal to be an architect or this person is nothing more than a technically savvy project manager. I have also heard that an architect is nothing more than a glorified analyst. After doing Architecture for eighteen months, I have to say it is a hard job. (Don't get me wrong. Analysts also have a hard job since they have to extract their analysis from information which is explicit and implicit). Architects take the analysis from the analysts and synthesize a solution for the problem. The architects have to consider the tactical constraints and its alignment with strategic goals. This person has to constantly ask himself, "Does my proposed architecture satisfy the customer needs, align with the strategic roadmap, meet the project deadlines and can it be implementable with the current resources (i.e. resources, infrastructure, standards)." There are enterprise architects, application architects, software architects, solutions architects, infrastructure architects, services architects, data architects
  • Standards Person - This person usually work in a Technical or Functional Group defining standards for a particular domain. He or she needs to have good analysis skills, architecture skills and most importantly have excellent written and oral communication skills. This person needs to level expectations with the organizations they represent in the Standards groups and at the same try to push their organizations requirements into the standards specifications. They have a hard job of strategically aligning the standards, (they are working on) and their working bodies goals and with the organization's goals. Word smithing skills should help. There are standards people are involved in technical standards, and process standards like Software Development Lifecycle (SDLC) and Configuration and Change Management processes.
  • Engineer - This person is a problem solver and he is usually involved in the "weeds". Usually the architecture aligns strategically with the organization's goals, meets all high level requirements and meets all other constraints. However this person addresses the finer problems within the overall architecture and solutions that maybe temporary fixes or configuration changes. For example there exists a mission critical system which was architected perfectly however the user base has increased eighty five percent and currently the system is experiencing a significant lag time which is affecting a business process. The next release is in six months. This is where the Engineer steps in. He determines the problem, designs a solutions and implements it. He documents the problem, design and implementation for the architects in the next release. Voila! The engineer has saved the day again. There are software engineers, systems engineers, process engineers, test engineers, etc, etc.,
  • Developer - This person takes the high level architecture, designs the low level design and then implements it. If the architecture doesn't address the details because the architect doesn't have the time to design low level specifications or if the architect is not familiar with the technology then he or she can leave it to the developer. There are usually software developers.
  • Programmer - If the architecture is extremely detailed and granular then the programmer has to implement the design. This is done where systems are designed to interfaces.
  • Administrator - This person usually administrates an IT function. A system administrator administrates the system by maintaining and optimizing it within the constraints defined by the architect and the engineers. There are system administrators, project administrators, program and organizaton adminstrators.
  • Project Manager - This person is responsible for managing and delivering a project which has beginning and end states defined. This person has resources to manage and is responsible for the appropriate deliverables to be completed within the project timeline. This person is not strategic but his or her main objective is to meet the end state with the project constraints.
  • Program Manager - This person is responsible for managing a program which inconsists of on-going projects, projects to be executed and projects that were completed. This person is strategic since he or she need to program goals however they meet their strategic goals via projects which are tactical in nature. These people are comfortable dealing with project managers and their projects.
Please let me know what you think. These are my thoughts and I haven't spent any time validating if my definitions meet PMBOK or PMI standards.

Tuesday, May 12, 2009

Work vs Tweet

Enterprise Tweeting anyone? I don't think so. Twitter is great for promoting yourself virally however I don't see any point of "tweeting" when you are at work. This capability exists with the various enterprise Instant Messengers like MSN Chat or Lotus Notes client however I see people hardly using it. The only time I really check someone's status is if they are available for a meeting or not. This status is available via the Calendar sharing capability available on Outlook, Google Calendar, Lotus Notes, etc., etc. So in this brief entry, I conclude that I don't see any Tweeting in the workspace. Who wants to Tweet when they have to work? ;)

Thursday, May 7, 2009

Software Language Roadmap

As many of you heard that Oracle is the process of purchasing Sun Microsystems (Sun) and many techies like myself are weary on what will ever happen to current IT standard technologies like Solaris OS, SPARC workstations, MySQL relational databases and most important to the Java Software language. Sun did a good job of maintaining the Java language which inturn has matured and is currently quite popular in the development community. I have to give kuddos to Sun where the language matured from a bulky and clunky language with Enterprise Java Beans (EJBs) to a more streamlined software language which has be refined to a fine consistency. I, however, think that the Java has reached its pinnacle and now it will slowly fade in the mist where other legacy buddies like COBOL, FORTRAN, PASCAL, LISP, etc, etc are waiting for it.

If you are a Chief Technology Officier (CTO) of any mid to large size enterprise, it is time to ask your planners to hash out a Software Language Roadmap which should address the following:
  • What sorts of languages will peak in the next 2 years, 5 years and possible 10 years?
  • What sorts of infrastructure will be needed to maintain applications with these languages?
  • What will the cost of development of these applications?
  • Will it impact current applications?

Enabling the IT component of business with Service Oriented Architecture (SOA) was promising since it offered a closer alignment to business processes, and the wonderful level of flexibility. Unfortunately flexibility brings numerous levels of abstraction and system integrators working with process analysts to develop these flexible services. During the enabling process, enterprises have realized that there is a cost associated to the degree of flexibility. Is flexibility worth the price? Next came the promise of Web 2.0! Web 1.0 allowed users to discover information using Web. Web 2.0 allows users to discover information and aggregate information for their personal uses. It also allowed users to disseminate their perspectives on the information (kinda like this blog). Enterprises see the promise however they are leary in giving their users the power to disseminate information with their perspectives across their networks. Currently businesses regulate their users on when and where they can blog if the users are allowed to blog. Currently the most promising thing Web 2.0 component in the business community is the Wiki. Wikis are usually viewed as organic knowledge bases which are maintained by the users. I personally don't see Blogs and Social Networks (sorry ASpace!) won't take off in an enterprise. So back to the drawing board and we need to ask ourselves, "What next?" As a developer and as an architect, I believe application development will be done in scripting languages like Ruby and Grails. They follow the concept that it takes alot less time to modify a baselined application then to build one from scratch. These languages also imply that these baselined applications have the right architectural foundations like built with design patterns, and loose coupling. They are script based language which allows developers to save alot time by skipping on the compile step. They also provide unit-testing capabilities. I have worked with Groovy on Grails quite a bit and I really like it. I am still learning Ruby. I also see close source companies like Microsoft and Adobe following this paradigm in their new ActionScript or .net specs. Every executive asks about security vulnerabilities with these languages and security is addressed as these languages mature. I wouldn't ask my developers to build my business applications in Groovy on Grails or on Ruby on Rails yet since they are still new but I would start drafting my java exit strategies. Don't let your enterprise get lost but plan your roadmap and stick to it.

Saturday, May 2, 2009

Different way of programming

For the last week or so, I have been developing a dashboard for an Enterprise Architecture (EA) at the Federal Aviation Administration (FAA). Due to various organizational constraints and confusion regarding where should the EA repository should exist, associated user access issues and which tool should render the dashboard; I am developing the dashboard using ExtJS AJAX framework. Six months ago, I would have spent a few days trying to understand the Application Programming Interface (API) and then slowly build the application scratch. After working with Groovy on Grails and Ruby on Rails, I decided to take the approach of customizing an example, which is provided in the ExtJs framework. This approach has saved me alot of time and I have a better understanding on how ExtJS works. I admit that I don't have a detailed understanding on how ExtJS is designed and how it should work; but I do know enough to say that I can build the User Interface using ExtJS. So if you are getting ready to code in ExtJS then I say to you, "Ext.onReady(..."

So in closing, I would say that it is faster to customize existing code rather building it from scratch. I have been enjoying working with this JavaScript framework.