14

I am having a very difficult time because my colleague seems to exhibit

  1. Premature/Unnecessary optimization efforts
  2. Premature deduplication with questionable abstractions
    For example, we use a modified VIPER architecture. He introduced a base class for the Router component (using generics) as part of implementing the first viper stack without actually knowing what exactly will be duplicated in other routers. Now we are stuck with having to provide a type UseCase that holds use cases, but most of routers do not have multiple use cases, only one.
  3. Inventing general purpose solutions for speculative potential future features
    For example, he wrote a manager for populating static cell table views when we only had two screens like this in the app and he was not aware the design will move away from boring vertical forms to more custom UIs so the manager is useless.
  4. Opting for incidental complexity

How do I fight this when he also exhibits having a language barrier with lousy English?

Earl Grey
  • 628
  • Have you tried mandatory code reviews to give an opportunity to discuss what is going on? Have you tried white boarding with him to come up with a good solution before he sits down to start coding? – Becuzz Dec 29 '16 at 14:08
  • http://softwareengineering.stackexchange.com/questions/80084/is-premature-optimization-really-the-root-of-all-evil – Victor Zakharov Dec 29 '16 at 14:17
  • 1
    Can you give an example where situations like in 2 or 3 might happen? – lightning_missile Dec 29 '16 at 14:21
  • We use a modified VIPER architecture..he introduced a base class for the Router component (using generics)..as part of implementing the first viper stack without actually knowing what exactly will be duplicated in other routers. Now we are stuck with having to provide a type UseCase that holds use cases, but most of routers do not have multiple use cases, only one.
  • He wrote a manager for populating static cell tableviews when we only had two screen like this in the app and he was not aware the design will move away from boring vertical forms to more custom UIs so the manager is useless.
  • – Earl Grey Dec 29 '16 at 14:29
  • 1
    I feel your pain, @EarlGrey. I've probably never seen a case where super up-front "generic" coding actually works out as planned in the future. – GHP Dec 29 '16 at 14:37
  • 2
    I know people who call using a quicksort instead of a bubblesort a premature optimization. What is your threshold? – Pieter B Dec 29 '16 at 15:05
  • Any optimization with non-zero opportunity cost - that is based on assumptions about future features or future performance problems. – Earl Grey Dec 29 '16 at 15:33
  • sounds like your colleague is just more cleverer than you – Ewan Dec 29 '16 at 15:37
  • 3
    Your colleague seems to be forgetting/unaware of the principle of YAGNI. – Bart van Ingen Schenau Dec 29 '16 at 17:44
  • What is the development practice here? Ad hoc/get-it-done? If it's Agile/SCRUM, there shouldn't be much unexpected embellishment of the product as it would cause estimates to be off, doneness criteria likely not met, etc. – Dan1701 Dec 29 '16 at 18:12
  • What is his response to, "Now we are stuck with having to provide a type UseCase..." – JeffO Dec 30 '16 at 16:11
  • He shrugs his arms ang gives me a concerned look..and that's about it. As if it was some "vis mayor" and we have to accept it. – Earl Grey Dec 30 '16 at 21:28
  • If you have a problem with what your colleague is doing, tell them outright. – mrr Jan 03 '17 at 23:54