Skip to main content

Company journey

When the size of an IT company change, the people expectation are changing. They usually expect more benefits from the company and many more. In the same time the company expectation increase - higher level skills, higher commitment and so on. You know the story.
On the same page, for a company it is more important to deliver and to achieve annual targets than the vision for next 3-5 years. This targets can be expressed in number of employees, number of projects, revenue, new clients or other metrics.
In small company we are oriented to people. Giving our best to keep people happy. Having happy employees, a company can go even on the Moon. People will feel that they are part of the company, they are part of the company dream. In this way a company will have a great success.
For such a company, the journey is the most important thing. It is not so important if the target was reached, the journey was the most important thing for company and people.

When a company grows, things are starting to change. First of all the journey it is not important anymore. The target becomes that most important thing for all employees. The target has to be reached without taking people into account, how the journey is or even the quality of the product that is deliver.
Because of this, the final target becomes more important than people and people needs. Company becomes a slave of the target that is only a small part of the original vision. The level of pressure on each employ increase.
Odds situations appears when people are not important anymore.
First thing is the ‘overtime’ that is becoming part of company structure and way of doing business. This will have a direct impact not only on people but also on the quality of the products. You cannot have quality when the team is over burn.
People can lose very easily the focus and the things that make them happy. For example you can have a person with great skills on backend. But, because you need people on UI you will allocate him on that part of the system. After this, another project will come that requires people with skills on DB. The same person will end up on DB. Or that person ends up making things like team leading or management without liking.
Yes, it is great that you will have a person with all this skills, but in the same time you can end up with an unhappy person, because he/she do things in an area where they don’t feel happy.
In such a company you cannot afford to be wrong or make mistakes. Once you made a commitment, even if you realize that it will be a fail you cannot do anything. In this kind of companies, a person that recognize that he was wrong will be placed against the wall.  Odd situations will appear like organizing an event that you know that will not bring value to the company. But you going forward with it because at the begging of the year you made that commitment.

This is vicious circle and once a company is there it will be very hard to get out. The greatest risk for a company in this situation is to lose the company culture and values. Once this values were lost you will become another company from a city.

Comments

Popular posts from this blog

ADO.NET provider with invariant name 'System.Data.SqlClient' could not be loaded

Today blog post will be started with the following error when running DB tests on the CI machine:
threw exception: System.InvalidOperationException: The Entity Framework provider type 'System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer' registered in the application config file for the ADO.NET provider with invariant name 'System.Data.SqlClient' could not be loaded. Make sure that the assembly-qualified name is used and that the assembly is available to the running application. See http://go.microsoft.com/fwlink/?LinkId=260882 for more information. at System.Data.Entity.Infrastructure.DependencyResolution.ProviderServicesFactory.GetInstance(String providerTypeName, String providerInvariantName) This error happened only on the Continuous Integration machine. On the devs machines, everything has fine. The classic problem – on my machine it’s working. The CI has the following configuration:

TeamCity.NET 4.51EF 6.0.2VS2013
It seems that there …

Fundamental Books of a Software Engineer (version 2018)

More then six years ago I wrote a blog post about fundamental books that any software engineer (developer) should read. Now it is an excellent time to update this list with new entries.

There are 5 different categories of books, that represent the recommended path. For example, you start with Coding books, after that, you read books about Programming, Design and so on.
There are some books about C++ that I recommend not because you shall know C++, only because the concepts that you can learn from it.

Coding

Writing solid codeCode completeProgramming Pearls, more programming pearls(recommended)[NEW] Introduction to Algorithms

Programming

Refactoring (M. Fowler)Pragmatic ProgrammerClean code[NEW] Software Engineering: A Practitioner's Approach[NEW] The Mythical Man-Month[NEW] The Art of Computer Programming

Design

Applying UML and Patterns (GRASP patterns)C++ coding standards (Sutter, Alexandrescu)The C++ programming language (Stroustrup, Part IV)Object-oriented programming (Peter Coad)P…

Entity Framework (EF) TransactionScope vs Database.BeginTransaction

In today blog post we will talk a little about a new feature that is available on EF6+ related to Transactions.
Until now, when we had to use transaction we used ‘TransactionScope’. It works great and I would say that is something that is now in our blood.
using (var scope = new TransactionScope(TransactionScopeOption.Required)) { using (SqlConnection conn = new SqlConnection("...")) { conn.Open(); SqlCommand sqlCommand = new SqlCommand(); sqlCommand.Connection = conn; sqlCommand.CommandText = ... sqlCommand.ExecuteNonQuery(); ... } scope.Complete(); } Starting with EF6.0 we have a new way to work with transactions. The new approach is based on Database.BeginTransaction(), Database.Rollback(), Database.Commit(). Yes, no more TransactionScope.
In the followi…