‘corporate culture’

Rules of falling interest

Monday, April 5th, 2010



    Have you ever asked yourself, why your day-time job in the big company is so simple and boring, and it’s not getting better, when you’re moving from one project to another (or, even, changing the organizations you work for)? Be a realist – it’s not because you’re so much smarter than the other people (but you’re definitely smarter than 9-to-17 office plankton, which is totally satisfied with the state of things, and, obviously, treats programming only as a well-paid way to kill time between breakfast and supper). It’s all about human’s natural tendency to fight entropy and disorder, which turns out into two simple rules:

1. All the projects become boring over time

    This rule is based on Plauger’s “falutin’ index” (index of complexity) that can be applied to projects, people, problems and solutions. Ideal balance is reached, when all the components of equation are harmonized, meaning high-falutin’ (smart) people should find ingenious solutions for complex problems, when low-falutin’ people (or new to the area) create “good-enough” solutions to well-know problems. The first case (complex unstructured (new) problems) may require empirical approach (a number of fast “plan-prototype-learn” cycles), whilst the second (without regards to the project size) can be decomposed to the level, where formalized approaches become applicable. Every time the balance is broken, and high-falutin’ developers are solving simple problems, resulting solution is either unnecessarily complex, or has acceptable complexity, but gives and zero satisfaction.
    Relative complexity of the problem to developer (and developer’s interest) is conditioned on the problem’s novelty (besides the area/domain complexity), which decreases over time, when developer is moving along the learning curve (and gaining the critical mass of knowledge). Applied to iterative development process, development productivity and interest doesn’t reach the extremum in every iteration, but decreases during the entire development lifecycle (local maximums on the graphic are getting lower compared with predecessors every next iteration):

Development speed, productivity and interest to the project during 4 consecutive iterations

2. Big companies prefer commit to simple (boring) problems. The bigger they get, the simpler problems they choose (though overall project/communication/information complexity may grow)

    The Gresham’s Law of Planning says:

Daily routines drive out planning and even innovation when people and organizations are faced both with highly programmed (structured) and highly unprogrammed (unstructured) tasks, the former tend to take precedence over the latter even in the absence of strong over-all time pressure.

    In other words, the preference is given to those problems that can be solved with the known arsenal.
    That is, I suppose, the second biggest reason (after the corporate culture), why some people prefer small companies, or become self-employed. Big players studiously avoid complex unstructured problems that may require empirical approach, and decrease risks and maintenance costs using the technologies and methodologies they know well, even if they don’t fit the particular situation (turning organizations into paper factories and Spring-plus-Hibernate-anywhere zombies).
    All this ends up with committing only to those problems that fit highly formalized predictable processes, bringing down the enthusiasm of developers that are forced to do the same things served up with different dressings over and over again.

Internal Crowdsourcing: Enterprise Edition

Thursday, February 4th, 2010



Crowdsourcing represents the act of a company or institution taking a function once performed by employees and outsourcing it to an undefined (and generally large) network of people in the form of an open call. This can take the form of peer-production (when the job is performed collaboratively), but is also often undertaken by sole individuals. The crucial prerequisite is the use of the open call format and the large network of potential laborers.

Jeff Howe and Mark Robinson in the June 2006 issue of Wired magazine

I bet, everyone of you at least once in the life felt that your manager is the bottleneck to your creativity and your ideas are underrated. If I’m right, you should know perfectly, what do the phrases “we are considering your proposal” and “we will definitely include this in the next version” mean. Your boss, who in the most cases knows better then you what the market needs (I’m not kidding – people don’t become managers by accident), just wants to protect you against stress. But lets imagine, your amazing, brilliant idea is one of those 20%, which can make 80% of business. What will you do? Go to the boss of your manager? Come on, don’t be a fool – the chance to succeed is really, really small, whilst the relationships with your direct chief will be blown up for sure. The same outcome is expected, if you will be coming to the boss with your ideas over and over again - the head will stay unbending, whereas your creativity will slowly run out.

Modern development practices recognize the importance of this problem and try to solve it setting up direct connections between representatives of different parties (sometimes lowering the influence of project managers). Underside of this approach is that the change motivated by chaotic unstructured communications can lead to even bigger ambiguity, and finally you won’t have any solution to the problem. You can find some order in running brainstorming sessions – good old way to collect fresh points of view. But brainstorms are expensive (in terms of time and special atmosphere they require), so you can hardly afford setting them up on a regular basis and make them a part of your process. You need some kind of solution that will continuously collect ideas (in the background), measure their market value and will give outlet for those employees who can’t keep still.

Internal Crowdsourcing

When it comes to prototyping or planning of internal applications for the enterprise, the common practice is to involve into collaboration process representative(s) of the user party. Normally, they’re the heads of departments (marketing, sales, etc.) or just the most experienced users; in total, no more than 3-4 persons, who can define, whether a technically implementable and economically sound requirement has any sense for users. Whilst those persons can have impact on the development process, specifying requirements and assessing viability of ideas, the main reason of their presence is to help building the cultural bridge between users and new applications (IOW, to get the users ready for change). The problems is that, like with any other kind of mediators, user representatives, who aggregate demands of the community and promote them to other parties (technical, business), can be inaccurate in their conclusions and vision of major demands. At the end of the day, the things that users really want can be out of the picture. Internal crowdsourcing will help to setup many-to-many relationships between users and other parties. Without slowing the planning and development processes down, it may continuously reveal bottlenecks and impediments that users face interacting with the system.

Employees of customer service, marketing, sales and other departments are those who use internal applications on a daily basis (literally breath those application) and have a very deep insight into them. Working with the applications they admit the problems that doesn’t let them act effectively, or things they lack that will increase the productivity. If they try to push those points forward via bug-tracking engine (create a ticket for a proposal), they have a very little chance to succeed – the ticket most likely will be treated as “not a bug” and put off. With crowdsourcing application as the place where employees can submit their ideas, no brilliant ones will be lost. Filtering and promotion of ideas is managed internally by the crowd, so the hottest ones are always highlighted and very little external impact is required. Compared with other media tricks, internal crowdsourcing resembles self-organized continuous brainstorming, most of all.

Source: Daren Brabham, crowdsourcing researcher, http://darenbrabham.com/

Crowd self-management is achieved with voting for the best ideas. At any moment of time, employee should have access to all the ideas submitted by other users, but not evaluated by the crowdsourcer yet (evaluated means accepted for implementation, or rejected). Voting up or down for ideas and collaborating on them, crowd members not only push the best ideas forward, but also adjust them during communication.

Using internal crowdsourcing judiciously, you can find this simple concept doing the following for you:

  • Stimulating innovations. End users can be authors of innovative ideas that will increase share in existing markets, add new value to a current project and help entering new markets. Fresh eyed users can see the problem in a new light;
  • Solving impediments. Users may have problems using existing products, or have no ability (functionality) to do what they want. Crowdsourcing may reveal the most popular impediments;
  • Highlighting creative agents. Management may be interested in figuring out the most creative employees for the future;

Employees on themselves have a strong motivation to share ideas, which can also be stirred up with money or public approval.

The most common motivators for the crowd are:
  • the opportunity to make money (crowdsourcer provides benefits for the best ideas);
  • fun (the process of generation and promoting ideas is exciting);
  • opportunity to earn a reputation as a creative person and innovator;
  • know about other creative persons in the company (build a network of innovators);
  • creative outlet;
  • kill time when bored;

(more…)

3 reasons to work in a big company

Friday, January 15th, 2010





    I’m getting sick of hearing over and over again how cool free-lance developers are. It’s like a cliche or the form of good breeding to talk about their courage and professional skills. I agree, there’s a certain percent of gifted self-employed consultants among them, but nearly the same percent is true with respect to the entire industry. Free-lancers is not an extraordinary caste. Moreover, the most of talented ones are finally being employed by the major players (sometimes, to hold executive positions). It’s inevitable.
     My point is that you have a better chance to become an eminent specialist working in a big company. The reasons follow:

  1. Working for a big company you learn to think big. You can get experience of complex systems design, as big businesses have resources to build the enterprise-scale solutions. The other case is integration of ERP, CRM, ECM, etc.  that normally implies using sophisticated integration patterns and adoption of SOA practices. Being a free-lancer, it is doubtful whether you will participate in 50 man/year development process or complex enterprise infrastructure roll out.
  2. Big companies invest money in innovations and staff education. A lot of businesses invest money in staff education which includes training camps, conferences, coaching. Employees may have some spare time every week for their own activities unrelated to their day jobs (open source projects, reading, blogging). You can certainly spend as much time for self-education as you want being self-employed, but every second you’re not working, you lose money. Secondly, the resources you can utilize. Big companies can spend huge money to buy innovative platforms and software, you can play with.
  3. It’s easier to keep your work/life balance. As a free-lancer your working day starts early in the morning, when you wake up, and ends, when you go to sleep (or more likely, vice verse). Interrupted with hundreds of coffee breaks, football on TV, having a shower and a million other activities you’ll do, if you stay at home. Unless you’re a time-management guru of a great willpower, you’ll fill more comfortable working in the office and having a limited business day. With a fixed number of hours per week you have less chance of burning out and forgetting how does your wife look like. It’s easier to keep up good performance over a long period of time.

     After 4 years of work for a huge enterprise, I’m not going to change the game shortly as I can see benefits clearly, and most probably I will stick to big firms for the next 4 years.

     P.S. First of all, thanks to everyone who’ve found time to give a feedback on my post. I had plenty of interesting conversations last several days. Here’s the short summary:

  1. Majority of freelancers truly think they’re extraordinary (I heard the phrase “freelance is not for everyone” 100+ times yesterday);
  2. Most of the people, who were against my first point, think that patterns and architecture are just for marketing giving no performance or scalability benefits (like, when you use SOA, REST, “cloud”, “grid” and other buzz-words, it’s easier to sell your ideas to CFO). Afterwards they agree that in some cases architecture is finally important, but add that majority of developers doesn’t know or misuse best practices, anyway. It’s not the argument – majority of people are sluggards (including developers, who’ve came into industry for money), who work 9-to-17, then come home, watch MTV, play computer games, etc. The thing I expected is that many of those who think the architecture is all about marketing have came from the PHP world (well-know source of really bad practices);
  3. Many people doesn’t take into account that freelancing implies a lot of business activities (searching for leads, turning them into opportunities, making agreements, etc.) that steal time you can spend nourishing your perfectionism, if you work for a big company;

Growing own managers to build a strong corporate culture

Saturday, January 2nd, 2010

     Management in IT has grown to maturity for the last 10 years. Information availability on the Internet, lots of professional portals and blogs was the key to build up a global knowledge base. Modern IT management methodologies that provide practitioners better metrics on employee performance (e.g. SCRUM stack) is a huge step forward in compare with the legacy metrics (lines of code, cyclomatic complexity, etc).
     Nevertheless, it’s too early to say the critical knowledge mass on IT management has already been gathered. Its practices are significantly different from practices in coal mining or health industry. Development process in IT depends on human factor, so 80% of management consists of the psychology of collaboration and practical experience.
     The question is: what to choose? You can hire an experienced and professional external staff or grow your own managers aware of the corporate culture.
     Corporate culture has a strong impact on the company’s rating on the market – whether the corporate culture is too week or too aggressive it can do the provider a disservice. When a big company spends millions to buy and roll-out a complex business intelligence solution, it’s a common practice to gather information about the corporate culture of the supplier (and service provider that helps rolling out). It’s absolutely understandable step to make the implementation successful (which implies acceptance by the company employees and adjustments of the overall strategy done by the executives). Corporations that strive to build an attractive profile are concentrated on external side of the culture (which is rarely employee-oriented and poorly appreciated) invest in the most straightforward best practices (rental buses, parties, etc.) that have the biggest return as an external public attitude.
     The company I work at addresses cultural inheritance and managers nurturing with Career Development Program (internal institute). The most obvious side of the program is centralized education of employees. Junior developers can become masters in technologies. Implicit side is leaning employees to teach others. The point is that trainers of the program are experienced employees that don’t have administrational skills. And as low-level management is basically consists of learning subordinates, delegating tasks and checking results, employees can train the most of the basic skills to manage participating in this program.
     Investing money in employees can help in retention and building a strong corporate culture. Continuous process of education not only prepares a variety of operational and administrative employees, but also attracts partners and clients.