Some engineers, both junior and senior, have random approach to work as opposed to a systematic one. By random (or freestyle) approach I mean:
- generating quick ideas without followup
- kidnapping discussions with unrelated digressions
- presenting ideas without putting an effort into thinking them over
- making decisions without discussion
- organizing useless meetings
- hacking code without designing it
- not using drawings when explaining concepts or designs
- not tracking issues/tickets/projects
- not documenting
By systematic (or disciplined) approach I mean the opposite.
I get that the random approach is easier (and more fun?) and that it tends to produce new ideas. But if you use it too much it will create unnecessary chaos and technical debt after some time. In other words it will increase technical and organizational (when embraced by managers) complexity without adding value. So you need some balance between freestyle and disciplined approach. To evaluate the balance look for the signs.
The signs of unhealthy level of technical complexity in software systems:
- hard to use
- unclear API and documentation
- unclear design
- difficult to find bugs
- difficult to add new features
- difficult to take over (or hand over)
- operational problems and outages
The signs of unhealthy level of organizational complexity are:
- meetings without agenda, conclusions and followup
- people don’t show interest in the meetings
- the same problems being discussed again and again
- difficulty to schedule meetings, too many meetings
- bureaucracy and rules that make no sense
- non-existent or unclear team/company strategy and goals
- non-existent or toxic team/company culture
(You can have unnecessary complexity also on personal level but I won’t discuss this here and now.)
I suspect that the main reason causing this problem is underestimating the importance of simplicity.
Simplicity is actually hard. To keep things simple you have to think about them, write your ideas down and review them several times. Consider what is the goal, what resources you have, what are the pros and cons of various ways to achieve the goal. You also have to discuss your ideas and listen to other people’s ideas. Once you have somehow clear ideas you have to communicate them well. Then you have to implement them (e.g. writing some code) and organize in accordance with them (via meetings, documentation, code structure). You have to be able to resist various pressures and temptations (you must be able to say NO to most things). And you have to do all this again and again. This requires time, energy, skill, motivation, patience and persistence. On the other hand it brings satisfaction.
In case your current team/company doesn’t want or is not able to do this (and you want or are) there are three options for you:
- accept it and consider it a party instead of chaos :-)
- get into a (management) position from which you can influence things
- get into a company (which seems to be) heading in the right direction
The first option is the easiest one but not necessarily the right one. Of course you can and should always strive for simplicity on individual level. But you only have a certain amount of time, energy and patience.