Hi Taher, Nice posting. Something to ponder about.
Best regards, Pierre Smits ORRTIZ.COM <http://www.orrtiz.com> OFBiz based solutions & services OFBiz Extensions Marketplace http://oem.ofbizci.net/oci-2/ On Sat, Jul 16, 2016 at 3:38 PM, Taher Alkhateeb <[email protected] > wrote: > Hello Everyone, > > As you already know, we have been doing major work in terms of improving > and refactoring the framework. We are buzzing and making changes everywhere > and people are getting excited about helping out. This is fantastic! and I > hope we can continue in this new direction. > > However, before we started the refactoring work, I kept wondering why did > we get here in the first place? We do we have lots of bad and messy code in > the code base? Why are we at point where we are shifting all energies to > cleaning up? > > So as I started working with people on the refactoring project and the > answers to the above questions started to slowly appear. I list below my > perception of the problems and recommendations for avoiding repeating these > problems of bad code. > > Problem: We are very conservative > ---------------------------------------------- > > How many times did you hear this: "Don't remove that, somebody might need > it" or "Oh no, you just made a regression in trunk" or "No keep it, _one_ > person X objected". > > You know ... making software is difficult. It involves taking many > decisions, some of these decisions might not appeal to every person but > they are necessary for the health of the project. > > So here is where I observed conservative behavior: > > - We are too sensitive to objections that even _one_ person might stop an > initiative. In a way we might be a little too nice. > - We treat trunk like it is almost a stable branch, and for any serious > change we immediately prefer to create branches. > - We _rarely_ remove anything, and when we suggest removing things big > resistance happens. We suffer from "code hoarding" > - We are shy about changing other people's code. Shy not because we don't > know what to do, but we are concerned about making those who wrote the > software displeased. > - We treat code written by others like it is holy and difficult and we > cannot repeat, when in fact many times we can make it actually _better_! > > The above observations in my opinion are the main reasons why we have bad > code. We just pile up and we are so afraid of change. We don't change > anything and the code as a result suffers and deteriorates. We just pile > things on top of other things and do not revisit the design and try to make > it better and cleaner. Sometimes revisiting the design involves _DELETING_ > which is a strange word in our community :) > > Recommendation: Shifting our mindset > --------------------------------------------------- > > At a high level, we can say our problem is fear! How do we reduce and > control fear? How do we gain confidence about making change without too > much pain? Luckily many smart people already thought about these things and > came up with wonderful solutions. I list hear recommendations which are > inspired by these thinkers: > > - First we must be aware that we are conservative and accept it. We should > be conscious of how apprehensive we are about change > - We should have a very strong test coverage of our code and we should > exercise Test Driver Development as a core philosophy in our programming > methodology. Having very well tested code gives you confidence. Confidence > gives you courage to change. > - We should accept trunk as an _unstable software_. It is a place where all > the brain storming and thinking and innovation is happening. > - We should be open in expressing our opinions. Being correct is better > than being nice. Mind you I'm not encouraging conflict! I am instead > encouraging good technical discussions that lead to useful outcomes. It is > only when people challenge your technical opinion that you really expand > your horizons and learn something > - For me personally, I think most importantly, we should accept _REMOVING_ > and _DELETING_ things. This is a natural phenomenon in all software > systems. Sometimes we create something and realize later that it was a bad > idea. Just Delete it!! Don't keep it hanging forever. > > In conclusion > ----------------- > > So OFBiz has a wonderful community and great people. However we are overly > conservative, and we need to be a little more brave and willing to embrace > change. Yes this will lead to some friction and at times feeling lost, but > the long-term benefits far far outweigh the losses in my opinion. > > What do you think? I would love to hear everyone's opinion on this, and > thank you again for being such supportive and wonderful people. > > Cheers :) > > Taher Alkhateeb >
