Sai, questo:
Convincing a development team to use a better design pattern
È un po 'diverso da questo:
I recently joined a company where I was tasked with building a system for one of their clients. The work I've done is so far working well, but the most senior developer on the team who's been with the company for many years is having trouble understanding my code. He says it's hard to follow.
Nel tuo titolo sembra che tu sia uno di quei ragazzi pieni di apprendimento dei libri, ideali e poca esperienza che incolpa ogni difficoltà con la base di codice esistente sulle idee obsolete dei team.
Nel tuo paragrafo di apertura, tuttavia, stai lavorando a un progetto di campo verde e hai solo problemi con una revisione tra pari.
Queste sono situazioni molto diverse. Le vecchie basi di codice saranno sempre piene di vecchie idee. Quando apportiamo cambiamenti in essi tendiamo a cadere nel loro quadro e perpetuare le vecchie idee. È costoso non farlo. Lavoriamo per modernizzarli, ma in qualche modo qualcosa del passato si blocca sempre. Hanno effetto anche nel modo in cui pensiamo.
Tuttavia, stai lavorando a un nuovo progetto. Nessun vecchio codice per legarti al passato. Il tuo problema non è convincere una squadra a utilizzare un modello di progettazione migliore. Li sta convincendo che possono comprenderne uno che hai usato.
I tried conducting a training session for him and another developer where I explained the design patterns used in this program. The system is written in Ruby on Rails and I used a design pattern called the "Clean Architecture" to better modularize all the functionality. During my presentation, the senior developer scoffed at some of the concepts. He feels that the Clean Architecture introduces a lot of unnecessary complexity because it involves so many layers of abstraction and objects.
Se quello che stai scrivendo è un one-off ha ragione. L'architettura pulita non riduce al minimo la complessità, l'astrazione o il conteggio degli oggetti. Riduce al minimo l'impatto del cambiamento. Questo è prezioso solo quando passi da un pensiero unico a come questa cosa viene mantenuta nel tempo.
The developers on my team don't seem to unit test as thoroughly as I do, and don't see the need to learn a new conceptual framework. However, I've worked at other organizations running large applications that run into scalability problems when using the default problem solving approaches popular in Ruby on Rails. Seeing how those teams solved such problems and made their codebase more maintainable using SOLID and Clean Architecture is why I think it's a great way approach to the program I'm building at my current employer. None of my coworkers at this company had exposure to anything like that yet. Neither of them ever heard of SOLID.
Ciò significa che ciò che stai facendo è quasi pessimo come entrare e programmare in una lingua che nessuno di loro ha mai sentito nominare.
My concern is that the other developers on my team will eventually push back on the design patterns I'm using and try to micromanage my work. Maybe I'm not great at articulating the advantages of the way I code - I just go by what I know works from past experiences. It is especially troubling to me that one of my coworkers finds my code to be "hard". What do you think is the best way of handling this situation?
Sei concentrato su un ragazzo che trova il tuo codice "duro". E gli altri? Siate sempre disposti ad accettare l'idea che, nonostante il seguito di Clean Architecture, il vostro codice possa far schifo. Hai bisogno di qualcuno, oltre a te, per dirti quando è comprensibile. Non nascondersi dietro le differenze ideologiche. Solo dopo aver ottenuto qualcuno che ammette di poter capire il tuo codice, dovresti spingere i tuoi detrattori ideologici.
Il modo di spingerli è di evangelizzare. Non forzarli. Convinci. Se non sei lo zio Bob, non provare a essere zio. Dare presentazioni a senso unico a lungo termine non è come lo farei. Fare domande. Scopri in che cosa credono. Che preoccupazioni hanno. Quali problemi continuano a spuntare. Essere disposti ad ammettere che Clean Architecture non risolva ogni problema. Mostra loro cosa risolve. Mostra loro come reagire a cambiamenti imprevisti. Falli interessare. Quindi puoi spiegare perché non risolvi tutto con un oggetto.