Skip to main content

Corporate Series: (1) Processes

This post comes as an observation on what is happening around us, in so called ‘Corporates’. I just realize that there will be more than one posts. There are many ideas and notes, that I want to treat them separately.
Before going further, I would like to mention that this post doesn’t have a connection with the company that I work for. It is only the output of different discussions that I had with friends that work around the globe for different ‘Corporates’.

Why I’m using ‘Corporate’ with ‘ ‘?
These companies are usually under 1.000 people and try to play like a ‘Corporate’, but in reality they are not ready for something like this. They have complex process and don’t care to optimize them. They forget that behind a process is one or more person that will run it and a process needs to add structure, clarity and repeatability – not only power and control. For a ‘Corporate’ like this, an external audit or an external opinion from a consultant is not acceptable, is too expensive and might damage the revenue, by adding extra costs.

Processes and Standards  
It is important to remember that not all companies are like this. I discovered (and still discovering) great companies, that yes, are truly a corp., but at the same time you don’t feel them like this. Even if they have processes, different communication paths and a complex structure, behind them you find people that share the same goals or the same vision (but from different perspective).
Imagine that you need to pre-order the lunch for workshop. You know that someone from the attendees is vegan. At the same time, you are aware that the current supplier(s) doesn’t have a vegan menu. In a so called ‘Corporate’, even if you reach a person, not only the web interface of a request form, you will find out:
-        Sorry, the current supplier doesn’t have a vegan menu and the company standard doesn’t allow us to order from other external provider(s).
A response like this is not useful and you will not have too many options. Well, there will be no option for you in such a case.
Yes, it is true that the current process and company standards doesn’t allow you to order from another provider, but we need to remember that in general a process is applicable in most cases (let’s say, 99%), but there are exceptional cases that needs to be treated separately. You might even realize that you could find solutions for different problems by respecting the process 100% - but with the support of a person, not only from the web form.
You might find out:
-          Unfortunately, we are not allowed to order from other provider. Let me check if I can order more fruits and salads. In this way, we might be okay.
Yes, this is not the perfect solution, but it is a better solution, than nothing.
Or even better:
-          Unfortunately, we are not allowed to order from other provider. Let’s me check if I can order more fruits and salads. In this way, we might be okay. Also, I will discuss with the process owner or with the suppliers owner to see if we can improve the current setup and to avoid such situations in the near future. I will follow-up with you related to this topic once I have updates.
Even if we have the same response with a hot-fix for the current solution, there is also something more. Someone is ready to help us and see what we can change (if is necessary) to avoid this kind of situations.

Should we change the current process for an exception
Of course, we should not change flows and processes, for each exception. But we need to be aware if we need to improve or change current processes. We are living in a world that changes every second. It is impossible to assume that a thing that is applicable NOW, will be also applicable in 2 or 3 years.
This is why it is important to be aware and try to get feedback related to current processes and needs. Simple solutions, like offering a preferred (recommended) list of suppliers, but also allow other suppliers to be used as long as some company standards are respected are enough. In most cases people will use the standard suppliers.

Conclusion: Don’t forget to CARE    
In situation like this, the thing that is the most important in my perspective is people. They need to CARE. They need to care about others, they need to care about what you want to do and they should be open to help you. On top of this, they should CARE about the current PROCESSES and STANDARDS and are ready to improve them when necessary.
The worst case where you can end up is with a company or group of people that don’t care anymore. They don’t care about the real needs and the others. They look and see only the process and company standards. With a team like this, I’m pretty sure that you will end up with a lot of frustration, unhappy people that will leave the company OR they will not care anymore also.

Don’t forget to CARE and HELP others. In the end we have the same purpose. 


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 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 …

GET call of REST API that contains '/'-slash character in the value of a parameter

Let’s assume that we have the following scenario: I have a public HTTP endpoint and I need to post some content using GET command. One of the parameters contains special characters like “\” and “/”. If the endpoint is an ApiController than you may have problems if you encode the parameter using the http encoder.
using (var httpClient = new HttpClient()) { httpClient.BaseAddress = baseUrl; Task<HttpResponseMessage> response = httpClient.GetAsync(string.Format("api/foo/{0}", "qwert/qwerqwer"))); response.Wait(); response.Result.EnsureSuccessStatusCode(); } One possible solution would be to encode the query parameter using UrlTokenEncode method of HttpServerUtility class and GetBytes method ofUTF8. In this way you would get the array of bytes of the parameter and encode them as a url token.
The following code show to you how you could write the encode and decode methods.

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…