Copyright © 2014-2017 Software Developer Life Blog - All Rights Reserved.
Subscribe to Software Developer Life Blog
Search Articles Of My Blog

2014-05-30

Internal Problems with my existing current job

I am transitioning on leaving my current job to a new one in order to gain new perspectives and opportunities. I have not much enough time to discuss about things right now as I am planning to return back to my old workplace within the next days. Leaving a job should not be done randomly. I feel I have good reasons for leaving my job.  It is more like a rite of passage. Graduations are not so important as rite of passage because there is not much of any critical thinking. But leaving a job, I feel there is a lot of critical thinking and is more important to it and I wonder why many people do not do a proper rite of passage.

Here is the reason, or my end means for leaving my job. It is more theoretical but it has a lot of ground and applications to real life. If you don't understand some of the words I use, you should look at the "sources of life" within my main blog page.

The statements are very brief and do not have a lot of explanation as I have not a lot of time to discuss. I just note them down here so I can have a clear thought why I am going to leave my current job.

Causes

1. The mental networks created with customers for "new needs" were to satisfy all their needs in a timely manner instead of assisting only the most critical needs through a slow paced but effective well designed system. This is for the sake of the company revenue to be in the short term profitable. In summary, customer's mental networks are created simply by their own desires instead of how their desire can fit in a well designed system.

2. In effect of point 1, that path of mental networks created with the following customers allowed the development of software to be directly related to the satisfaction of customers instead of a well designed system. While the original intentions of the company was to create a well designed system, it ends up under the control of the mental networks that customers are used to and company has no other choice to comply in order to keep those customers loyal. Company complies with that as all looks as "the optimal" solution so far and no issues exist "yet". In summary, the existing mental networks of customers allowed from point 1 become stronger and stronger to the point of being more "critical" than they should.

3. That in result changes management direction under the influence of emotional pressure (with the help of strong mental networks from customers) to take customers statements as "facts" when they are not proven statistically or proven to be the best design decisions (also referred to as "emotional status facts").  The system will add too many features where they are not tested properly or not known if that will create future design problems. The pace of implementing stuff are fast and without direction instead of slow and with a clear direction (all changes must be done not too fast or else it proves how much less you spend time on understanding how the system works). In summary, management gets influenced by the strong customer mental networks created from point 2.

4. The last chain is when the detrimental effects show up. At that time, management has already changed its mental networks to the same as the customer because they cannot distinct emotional status facts and facts that are based out of patterns (it is hard to believe, but they all look the "same" to the brain, a form of illusion the brain does indeed, but it is required, and I can explain it in another blog post). The program already has a lot of problems because a lot of decisions were made out of facts based on emotional status instead of facts based out of patterns. The generalizations or speculations are made out of "emotional status facts" that look right to them. So instead of blaming what is obviously "right" to them (when in fact it is not), they will blame anything besides what is "right" to them. They will blame obviously the effects, and think the effects are the original cause, but those effects are derived from those emotional status facts that they are not aware that they are wrong. Even if there is some awareness, they know that the right thing to do will only mean to make the customers adapt to new changes, and that may mean losing more than half of your current customer base. Maybe management have mental networks that hesitate to do drastic changes because they remember the time they lost a lot of money where the events were painful and generalize it as an action that will bring the same events as before. The reason management attacks the effects instead of the original cause is because they are not aware of those mental networks and its mechanisms behind (they are encapsulated - that is what I hate encapsulation sometimes, encapsulation is good to some "level", but not to the extent of not being aware on some critical stuff that can be a positive guide for the user or an average individual's end. The world becomes more and more encapsulated and an individual does a thing because of faith the abstract information behind is "right" no matter what). This last chain will create an effect of patching and fixing with trial and error while working hard instead of an orientation creating new and better designs with trial and error while creating an environment to learn the system and use smart thinking. In summary, management have no awareness what is going on and try to fix the issues by patching up the "effects".

5. The last chain is the conclusion. There is a conclusion once these causes come: a dead end. And it really is a dead end if its not the real optimal path. It will be an environment that it will be stuck like that forever. Will this path make a lot of money? Yes, as long the customers use those "emotional status" facts with a lot of money or are big enough or wise enough to use it as a form of "successful critical thinking" in order to take a "competitive advantage" over others through means that is not beneficial to the "overall system". Is it fair? Of course not. Do people believe this world can be fair? Of course not. That is the problem. It can be fair, it is difficult, but it is possible. However, since societies are constructed in a form that really (I do really mean it) in a "successful critical thinking" mentality, it is very obvious you will be left behind and you can say all your profits "goodbye". I have done a lot of economics and business classes and I understand how all this system works. However, if business people contemplate and really want to fix the environment, but do it in a wrong direction, it is better to not blame or have a perception on the wrong sources (the effects instead of the causes) as it just aggravates the problem. Yet, I would not think anybody can be passive about a problem that they will see every day. It is human instinct that they have to find the cause of it no matter what and experiment with trial and error (if you have a wound on your body, will you just ignore it instead of fixing it?). The method to fix it is through the course of using patience (instead of waiting for the whole system to collapse). Put a side track project and have patience to see the benefits it offers over the existing system. Change is always a transition, it cannot be direct.Well, it can be direct when the whole system collapses, but you will not have the ability to sense the new path you take is better than the old path you take because you cannot compare them, you cannot live to the old system anymore to compare it with because it already has "collapsed". In addition, when implementing the path of patience, the mental networks of management are under the influence. The mental networks take control and cannot tolerate things that go against those mental networks, because in some sense, it is "killing" them (it expresses a path that will destroy old mental networks), it is like withdrawal symptoms when not smoking or drinking alcohol. In summary, all organizations are easy to fall on trap of these "4 chain of events", and they way they handled it was a direction of sales and money and the belief of the system will never be perfect (over time, this dead end will be seen as a pattern, you will give up, and see the patterns to result into facts derived from garbage in and garbage out).

Effects

Due to Points 1,2,3

Note that I underline some of the content which management certifies as the cause of the problem.
  • The program will have a lot and a lot of features and be created at a very fast pace. It will dedicate more time in implementation tasks at the sacrifice of analysis tasks. That in effect will create systems of poor quality over quantity. And when I mean quality, I mean the quality on what the customers that does not see, whatever is "encapsulated", the back end or however you want to call it, is most or completely ignored compared to the front end. Blame will be on the technical people creating a back end they are fully responsible of (but definitely no full liability falls up to them, as it is an effect, not a cause. It is a chain of events, they were influenced by emotional status facts, and they know that if they do not follow emotional status facts, they will have less powers, less entitlement or voice within the organization). I preferred to have no voice at the sacrifice of creating better designed system, but I saw over time more and more that my individualistic effort alone will not preserve my tasks I have done to be fully compliant in quality code. I figured out in the end that my code will have issues if the whole organization continued this path. In summary, no matter the effort you are at implementing good systems, it will not be void of bugs due to decisions made out of management. It is impossible to just focus on the technical side and not caring about how the management side handles things. They are both deep correlated.  
  • Most of the staff of the organization will not understand how the program works and why it works that way because they are not using any sense of common sense or logic. They are based on emotional status facts. How can you contemplate or argue about emotional status facts that are only concrete due to influence, but if you remove that influence completely out of them, they crumble fast before you know it? Another obvious reason staff does not know how the program works is because more time was devoted on implementation tasks instead of analysis tasks. Even if you do analysis tasks, what an organization can do over emotional status facts? Garbage in garbage out. In the end, the organization asks technical people if implementing this feature will have any technical difficulties. In reality, I see more issues will exist with system difficulties instead of technical difficulties. However, those system difficulties are already reserved or "fixed" by the customer mental networks. In summary, there will be less time to dedicate on understanding or discussing how the program works. People believe that the problem is understanding how the whole program works, but it is useless to learn a program when its based most if not all out of emotional status facts or cannot argue about changing those emotional status facts to real facts. Why would I work and believe and have faith on a system based on emotional status facts?
  • A lot of issues will come up and the technical people will really already know that their implementation is not the problem as much as the design problems they have no control. People who work there will eventually have less motivation to work in a company like that. Because a lot of issues, the environment will be more non-personal instead of personal. The reason that we are "humans" is because we live in a concrete world and try to look at things and evaluate every day if our current facts are correct or not (they always change based on new observations). In here, facts are fixed by the emotional status of customers. Living or believing in an environment with emotional status facts makes it "reasonable" all our rest of our facts should be of emotional status too. We "should work hard", "use a lot of commitment for our work", and so on and so on, are not wrong, but they should not be a norm. It all really depends on the situation. This in effect will make individuals promoting an environment that is more non-personal, ignoring the basic internal needs of the individual. This and many other reasons will make a lot of individuals not put their full effort or commitment to the company. In summary, people will leave due to the non-personal environment and design problems. Management may blame that the lack of keeping customers loyal and the knowledge of each employee is critical. To some extent that is true and false. I do not see the value of an employee's knowledge when he feels he is not committed to the program as much. If there is a pattern that you see a lot of employee's knowledge is not committed and a lot of people leave the company, then obviously the underlying cause is somewhere else. As long there is documentation and each person understands in a "general" way (not specialized, just general way) how a program works (that requires the environment to be more personal instead of non personal), then the value of the employee's knowledge is not so much important as much as making them more committed in the working environment. But in order to do that, it requires to fix the original causes.
Due to Point 4
  • Management direction of the detrimental effects with patching and testing things instead of analysis and design with no side project as a method of patience to resolve the current issues will make an environment that is dead end. It can still have profits, make sales, and have hopes and influence the hopes of even the technical people that the current detrimental effects will go away over time with the current patching and testing. However, although in some sense that is true, while those existing problems are fixed to some extent (but not so well as having a good designed software), the current process of adding and improving the system as it is will just add the same issues as before. They will be just running a circle and no progress will be made. The company can be bigger, have more sales, more employees, more technologies, but all that in the end is useless if they keep remain using the same process flow from the handling of customer needs to the delivery of the product. what I mean useless is not useless in terms of revenue and sales, but useless if they want to fix the existing effects they see as a problem (which they can only minimize those issue effects instead of eliminating them). They will be looking at hiring individuals that fix those issues instead of hiring an experienced system analyst. If not hiring a system analyst, at least each programmer should have a sense of understanding what system analysis is all about. In summary, the way of resolving things here is patching instead of fixing the real source of the problem. The correct way is, yes, keep management do the sales and the positive connections with clients, but have a system analyst or someone who can tackle the causes efficiently with the client. This problem will not be solved at all without the confrontation of the client as the original cause is usually out of the client and client itself (maybe it was management that started it all, but the client is "living" on those mental networks the management promoted him at that time). If we want to do a comparison, we can compare it with a date a typical couple do on a night. They dress nice (they sell themselves), but the means end is a form of patience to change bad mental networks instead of enhancing bad mental networks.
Final Conclusion

Besides the organization I worked is humble and has the correct dynamics (correct mix of personalities or whatever you call it), I think many organizations are all within good faith in some sense or another. The problem is the lack of awareness and the path they chose. It is not bad, but I preferred:
  • If the organization mentality was more aware of its causes and be passive about it instead of blaming it in the wrong sources. 
  • If they had to be initiative, I prefer they had patience and put a side project at it, but in the end, they go to the opposite direction and have no tolerance to patience. 
These conclusions did not come to me all of a sudden. But day by day, I could see the pattern, I could make the connections, and they were more prevalent and prevalent that the issue must be this even if I have a small sense of marginal error of my assumptions. I sensed that in 10 years, the company could still be great, still survive, be exponentially bigger, but the existing environment will not be any different, and whether you asked me if I could stay to work at a company with such process, I would prefer to gain new perspectives from different working environments instead and hope to be within an environment that really cares (but not really if that will stand them being a hypocrite or hesitant) more about the system of a software. I also very much hope that the environment I worked changes its process of how it does things for the best. I am not saying that an organization should be all white and have mercy. I am more saying an organization should distinct what is fictional or not fictional (a lot of this world is really fictional), to begin seeing the world through shades of gray instead of just black and white.