‘big brother’

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.

What does Google need Buzz for?

Thursday, February 11th, 2010



Ever tried? Ever failed? No matter. Try Again. Fail again. Fail better.
Samuel Beckett

Okay, folks, let’s be honest – that was predictable. People all over the world are already using gDocs to access, edit and exchange documents (+ recently Google added support for any types of files), gReader to read RSS feed subscriptions, gVawe to work collaboratively, gTalk to chat instantly, gVoice to access a variety of phone services, Picassa Web Albums to share photographs, and many other applications (not talking about gMail and the search engine). Social network integrated into the most popular Google’s client, gMail, is absolutely understandable step to consolidate access to other Google’s applications. And whilst Facebook and Twitter owners get frightened, and some executives are even start bullshitting Google (famous Jobs’ speech), Google makes mistakes, learns the lessons, and slowly, step by step builds the biggest empire that has ever existed on the Internet. Google’s way of innovations (reinventing an existing) doesn’t require huge Oracle’s funds (Oracle’s approach of innovation by acquisition), but in many cases, Google’s proposal is objectively worse than the original: just consider Picassa vs Flickr, gTalk vs myriad of other better IMs, Go vs other concurrent languages, Guice vs Spring, and many other examples. And Buzz is not an exclusion – Facebook is more attractive, mature and comprehensive than Buzz. So is Buzz nothing more then just another epic fail of Google (like gVawe)? Don’t think so. Google understands that it will be impossible to attract as many clients as other successful networks have, or force 400 million Facebook users to change their favourite network for raw Google’s alternative.

What does Google need Buzz for?

1. Google wants to have more information (structured and unstructured) about their clients (more than 150 million gMail users). One of the gMail attractive features is an instant registration, where you actually need to provide a very small amount of personal data (which can be dummy). That’s good for users that want to access mail services as fast as possible, but certainly bad for the service provider. Social networks is another story – people sometimes underweight privacy there and say to much about themselves: age, occupation, interests, education, contacts, etc. Google wants to build a deeper insight into their clients, have a wider abilities for market segmentation, increase the value of the customers they currently have and generally manage relationships with the clients better. Secondly, feeds (chats, logs of collaborative work) is a source of unstructured data, that can be used for the same marketing purposes – Google will track opinions, trends and moods of the buzzers. And I’m not sure, Google will provide an open API for the third parties to access the data about their customers (like other social networking providers do). Google values privacy and uses customer records exclusively for own benefit.

2. “The only real failure is the failure to learn from failure” (M. Skarin). Google’s executives understand it perfectly. While media claims Wave to be the biggest Google’s fail of ‘09, the G acquires important experience in building of massive multi-user online collaboration tools. Though buzz might not be as interesting and comfortable as Twitter, it will definitely be more technically perfect – Twitter’s epic fail with ruby-to-scala migration is just impossible in case of Google. Google does not afraid to invest in new initiatives (even if they have merely a small chance to succeed), because they know that series of fails may turn into big success in future. And Google can definitely afford it, providing the hugest search engine and the most popular mail service. Google’s search engine is actually a key to promotion these days. Just think for a minute, what SEO means now? Right – pushing the resource forward on Google.

3. Brand-making and money. Google makes money on ads. The more time client spends in gMail/buzz, the more ads this client consumes. Secondly, one of the hottest market trends is a tendency of consumers to trust more in brands. And Google has a strong story to tell there – it has a reputation as the biggest and strongest provider of free, durable and robust SaaS.

You might not realize it yet, but Google has actually got a lot on the Internet under control. I’ve personally felt, when trojans were hitting my blog, and Google just blocked it in the search engine (which means, I’ve got invisible for e-society). Google can do it with any resource, whenever it wants (so be careful, Apple). Or, for instance, one day Google may decide to put the link to buzz first in the list for query for “best+social+network” (though it’s unlikely to happen).
But will Google manage to fight all it’s alienated opponents building it’s Internet empire? If you look at the history of humanity, you’ll see, that the most of empires willing to achieve world domination were ending the same way – elimination.

While you’re still thinking, I’m giving Buzz a try. Though it’s not going to replace vkonakte/facebook/studiVZ for me, it’s definitely worth spending time on, like all the other Google inventions. Be proactive and learn from Google’s experience – it’s still free for anyone.

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.