Featured Post

Game Analytics - Big Data And Business Intelligence(BI)

Games generate more data then an average application because of the game state machine . Terabytes  of data can be accumulated in a short pe...

Showing posts with label software development. Show all posts
Showing posts with label software development. Show all posts

Sunday, May 31, 2009

The Hands On Engineering Manager Paradox

The current economy appears to be breeding a crop of job descriptions looking for people that will program, create systems architecture, speak the business language of upper management, hire the engineering staff, manage the staff, put together an engineering budget, setup the servers, etc. To put this politely, not going to happen. Or at least not for very long.

I certainly have been in situations were I was doing all of these things. However, realistically not all of them very well. Sure, in a very early stage start up you might need to ask someone to initiate multidisciplinary tasks. However, no one is going to be good at all of these tasks. Setting an expectation that someone should be able to handle them all could have negative long term implications for the individual being asked to perform these tasks and for the organization as a whole.

There are fundamental differences between the skill sets to manage an organization and to build systems. There are a few people on the planet that are versatile enough to flip back and forth between these modes of operation. However, even for these people, the work load gets to a point where there needs to be focus to establish any real progress on any of the tasks.

I understand why a business owner would want to have all of these tasks encapsulated in a single individual. Budgetary constraints, investor pressure to control staffing, the institution of a lean and mean startup culture to name a few.

In some cases the business owners that are looking for these interdisciplinary individuals do not come from a technical background and do not fully understand the focused concentration level required to create a system that scales, is reliable and can be understood by the rank and file technical staff. The last thing you want this person to do is to be spending time managing the day to day operations of your engineering group when they are deeply involved in getting your system designed, built and up and running. Conversely, if an individual is beavering away programming, configuring servers, installing hardware, etc. and not paying attention to day to day engineering organization management the entire development process could come to a screeching stop.

The practical consequences of proceeding along with this model are as follows:

Someone Else Is Managing The Engineering Group - If you are asking a programmer or systems architect to manage your engineering group you will wind up having another person in your organization stepping in and managing the day to day operations. This could be one of the co-founders, product or project manager or an executive staff member.

Your Early Design And Systems Have Issues - We all remember the Friendster debacle. This system could never adjust to the popularity of the service. It fundamentally lacked an architecture or any real supported systems structure. Was the engineering managers asked to do everything resulting in a lack of focus on a reliable sustainable systems architecture?

Staff Churn and Organizational Dysfunction - What a bad way to start a company. You will be facing enough challenges trying to get your business up and running the last thing you need is a bunch of frustrated engineers wanting to quit because nothing is working right and they are being mismanaged.

The stress of a struggling system and a disorganized engineering group stresses out other parts of the organization. This can lead to some serious confrontations between various individuals and groups.

So how do you avoid the downside of a single engineering manager simultaneously executing managerial and technical tasks and still stay within the budget?

Engineering Team Management Oversight - In the early stage of the business or organization establish someone with management skills to oversee the engineering group. This could be someone on the executive team or it could be an outside consultant. Have this individual work with the engineers to staff and organize the group, deal with personnel issues and act as a liaison for the engineering team to make sure their concerns and issues are voiced. Conversely, this individual will communicate management directives to the engineers in way that they can translate into concrete action.

Engineering Process - Establish a development process that is well undertood by all members of the organization. Make sure that process matches up with the business goals of the company. In a start up or small company realize that just about everyone in the organization is part of the development process

Architecture and Platform - Clearly state the business objective of the company and obtain a satisfactory systems architecture plan to achieve the objectives. Get outside advice if necessary and entertain a number of options. Once you establish your platform and architecture they are very hard to change.

Short and Long Term Objectives - You may be in a mad rush to get something up a running. This is understandable just make sure you do not fool yourself into believing that a rushed system is extensible and sustainable. It will most likely have to be replaced or significantly modified to run your business. Do not blame your engineers for getting something up and running quickly and then castigate them later when they tell you the system will have to be changed to accommodate your growth.

Engineering Organization Staff Planning - Be prepared monetarily and organizational for what it takes to run a real company. In the early stage of your company you may have a few programmers and consultants getting you going. This will be short lived if you are moderately successful. Have a good understanding of what it will take to effectively run an engineering group. Anticipate the need for an engineering manager, architect, DBA, programmers, QA, product management and IT support.

Crisis Management - Watch for signs that the engineering group is in a perpetual state of crisis management. If nothing appears to be going right or you appear to be exerting a tremendous amount of time and energy to get tasks completed you are in crisis management. Take the time to determine what organizational or technical issues are causing the problem. Address this issue immediately before you develop a perpetual crisis management culture.

Focus and Prioritization - Of all the tasks and items you want the hands-on engineering manager to perform determine the most important priority for that individual and clear the deck for them. Get the high priority items complete. Do not let the manager become distracted. This is especially important for technical and architectural tasks. Ping ponging back and forth between tasks is exhilarating but very dangerous if you are building a team and a system.

In conclusion, the current investment market places pressure on engineering organizations to consolidate functions and tasks into single individuals. This is understandable and a reality. However, do not fool yourself into believing that managing an engineering organization is not a full time responsibility requiring multidisciplinary skills not often found in a single individual. Understand the implications and compensate for the challenges an organization will face if the engineering managers is expected to be multidimensional. Prepare for the future realizing that eventually the organization has to build an engineering organization to be successful.






Wednesday, May 27, 2009

Build Versus Buy

The decision to build or buy an application has significant implications for an organization. It may be one of the most important business decisions an organization makes. Early stage companies frequently do not take the time to evaluate all of the repercussions of the decision resulting in unexpected long term consequences. The buy versus build decision is hard to reverse once it is made and should be well thought out before a final decision is made.

The best way to avoid a bad or irreversible decision is to clearly state the short and long term goals of the company and see how they match-up a with a build or buy strategy. Build versus buy impacts many aspects of a business including budgeting, strategic business relationships, control, customization, time to market and company culture. Each one of this should be evaluated before the build versus buy decision is made.

The following is a list of recommended items that should be debated before a final buy versus build decision is made.

Control - How important is it for your organization to be in control of its destiny? We all want to think that we are in control of our business. The decision to build versus buy has a big impact on the extent of that control.

If you decide to license an application control of your business begins to shift to the vendor. The vendor decides when releases will be made, the quality of the applications, the features and the core technology.

If you build an application internally your organization increases its control over its own destiny. Features, releases schedules, customization, interfaces, technology and are all dictated by your organization.

Differentiation - It is difficult to differentiate your company's product in the marketplace if you license mission critical parts of your product. A software vendor can only customize your product to a certain degree and still service its other customers. If you license a piece of software your company will have to find other ways to differentiate itself.

Customization - A software vendor will customize your software but it will cost you extra and may not be exactly what you are looking for. The vendor has to maintain continuity with the core application that is licensed to other companies restricting the degree of flexibility it can exercise. It can also be expense to customize an application. If your change request is significantly off track from the vendors road map the majority of the costs will have to be paid by your company.

Time To Market - Licensing a piece of software will allow your company to enter the marketplace faster. If you develop your own application the company will have to build a development staff, purchase additional hardware and actually build the application. This takes time, money and resources that could potentially be used for other projects.

Budget - In most cases a software licensing arrangement should cost you less compared to an in-house developed application. The licensing company will be leveraging their development costs over a number of companies thus decreasing the cost for your company. Building an application internally is expensive even if significant portions of the development are outsourced.

Managing - Managing a vendor and managing an internal development organizations are two very different processes. If a company is developing a product it will have to create a development process to manage the development. If a product is licensed the company will be managing the vendor who in turn will have its own internal development process. The degree of sophistication and professionalism of the vendor will dictate the extent and difficulty of managing the vendor.

Managing an internal development group provides more visibility into product development allowing for faster changes and the acceleration and deceleration of products releases. Managing internal development teams can pose its own unique challenges requiring multidisciplinary coordination. The developers and associated support require special attention including training and technical management.

Staff - If you are developing your own product a development staff has to be created. This means hiring, firing, outsourcing, motivation, reward, direction, scheduling and communication. Some form of HR support should be instituted to oversee the organization and make sure management is addressing personnel, motivation and salary issues.

Replacement Cost -What will it cost to switch gears and go from an outsourced piece of software to an in-house development plan. The reverse should also be modeled. It is not uncommon for an early stage company to change its product and development strategy as it matures. Creating a budget and organizational structure for both the build and buy scenarios is a good early stage exercise. If you do need to change your strategy you will be prepared for the impact on the bottom line and the required organizational changes.

Hosting - If you are licencing software from a SaaS vendor your hardware and hosting costs should be low. If you are licencing software to be hosted by your organization do some research on the cost of the hardware and the associated hosting costs. If you are developing the application yourself the hosting and hardware are entirely your responsibility. This has staffing implications requiring you to add IT personnel to provide 24/7 hardware, systems and telecommunications support.

Culture - How you approach product development has a big impact on your companies culture. A company with a fully loaded development staff has a very different culture then a company that is licensing most of its software and infrastructure. Be cognizant of the cultural impact of these decisions. Are you a marketing company, development company, sales company or a mixture of all or some of these categories. Your culture will have a big impact on your ability to hire and attract the talent you are looking for.

Each one of the items I have mentioned is a subject in and of itself and deserves a much deeper consideration then I have provided in this article. If you are pondering a buy versus do some more research on each one of these areas to make sure you make the right decision.

If you have a specific question about build versus buy please contact me at kflood6@gmail.com.