How to keep consistency across the application architecture as a team grows?What must be done to allow a development team to minimize difficulties as new team members are added?What management/development practices do you change when a team of 1-3 developers grows to 10+?Gathering application architecturejava application architecturePyQt application architectureApplication ArchitectureHow to reduce redundancy in a service implemented using multilayer architecture while maintaining consistency across the system?Architecture for UI Components Re-use in ASP.NET MVCWPF application architecturearchitecture for the applicationHow to keep relationship integrity with Microservice Architecture
Co-author wants to put their current funding source in the acknowledgements section because they edited the paper
What is the use case for non-breathable waterproof pants?
Is there a simple example that empirical evidence is misleading?
Is "vegetable base" a common term in English?
The disk image is 497GB smaller than the target device
Why did it take so long for Germany to allow electric scooters / e-rollers on the roads?
Why isn't 'chemically-strengthened glass' made with potassium carbonate? To begin with?
Does French have the English "short i" vowel?
One word for 'the thing that attracts me'?
Are there any German nonsense poems (Jabberwocky)?
Why does Bran want to find Drogon?
What could a self-sustaining lunar colony slowly lose that would ultimately prove fatal?
Need to read my home electrical Meter
If I arrive in the UK, and then head to mainland Europe, does my Schengen visa 90 day limit start when I arrived in the UK, or mainland Europe?
Can we assume that a hash function with high collision resistance also means highly uniform distribution?
Is my plasma cannon concept viable?
Creating second map without labels using QGIS?
Security vulnerabilities of POST over SSL
How was Daenerys able to legitimise Gendry?
Are runways booked by airlines to land their planes?
Does an eye for an eye mean monetary compensation?
Why was this character made Grand Maester?
On San Andreas Speedruns, why do players blow up the Picador in the mission Ryder?
Sorting with IComparable design
How to keep consistency across the application architecture as a team grows?
What must be done to allow a development team to minimize difficulties as new team members are added?What management/development practices do you change when a team of 1-3 developers grows to 10+?Gathering application architecturejava application architecturePyQt application architectureApplication ArchitectureHow to reduce redundancy in a service implemented using multilayer architecture while maintaining consistency across the system?Architecture for UI Components Re-use in ASP.NET MVCWPF application architecturearchitecture for the applicationHow to keep relationship integrity with Microservice Architecture
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;
As the sole developer in a startup, I had the luxury of being able to make a lot of decisions in the architecture and frameworks of our application.
Fast forward 4 years and an acquisition later, I have a team of 5 and a lot of times it feels like the wild west. People making whatever design decision pleases them: integer and enums for DB types in one place and string another, this framework for a problem and then a different framework for the same problem elsewhere, etc.
How do I go about enforcing consistency? It feels important to me but my team members seem to subscribe to the "if it works, it works" methodology.
I guess a big part of my question is: is it unrealistic of me to expect standards like this? I struggle with the idea of coming across as a dictator that stifles creativity but doing whatever they want seems to not be scalable.
architecture management
add a comment |
As the sole developer in a startup, I had the luxury of being able to make a lot of decisions in the architecture and frameworks of our application.
Fast forward 4 years and an acquisition later, I have a team of 5 and a lot of times it feels like the wild west. People making whatever design decision pleases them: integer and enums for DB types in one place and string another, this framework for a problem and then a different framework for the same problem elsewhere, etc.
How do I go about enforcing consistency? It feels important to me but my team members seem to subscribe to the "if it works, it works" methodology.
I guess a big part of my question is: is it unrealistic of me to expect standards like this? I struggle with the idea of coming across as a dictator that stifles creativity but doing whatever they want seems to not be scalable.
architecture management
1
Can you tell us as much as you can about your existing SDLC process? Are you Waterfall, Agile, etc? Do you use TFS or task management? Do you perform code reviews or use FxCop or other forms of code validation? Do you produce design documentation? Do you have a designated architect role?
– John Wu
10 hours ago
1
Possible duplicate of What must be done to allow a development team to minimize difficulties as new team members are added?
– gnat
10 hours ago
@gnat: Not a great duplicate, if the answers are any indication.
– Robert Harvey♦
10 hours ago
To be fair, these standards should have been set very early on and based on some widely accepted "best practices" document so no one can complain about favoritism or elitism. If you are getting hard pushback from an individual you will have to consider whether one cowboy is worth the healthy environment for the rest of the team and replace that one, they'll be leaving on their before long anyways, they always do. Then I think that all advice given below to use strict code review before check-ins and to add an architecture component will work wonders.
– Patrick Hughes
9 hours ago
add a comment |
As the sole developer in a startup, I had the luxury of being able to make a lot of decisions in the architecture and frameworks of our application.
Fast forward 4 years and an acquisition later, I have a team of 5 and a lot of times it feels like the wild west. People making whatever design decision pleases them: integer and enums for DB types in one place and string another, this framework for a problem and then a different framework for the same problem elsewhere, etc.
How do I go about enforcing consistency? It feels important to me but my team members seem to subscribe to the "if it works, it works" methodology.
I guess a big part of my question is: is it unrealistic of me to expect standards like this? I struggle with the idea of coming across as a dictator that stifles creativity but doing whatever they want seems to not be scalable.
architecture management
As the sole developer in a startup, I had the luxury of being able to make a lot of decisions in the architecture and frameworks of our application.
Fast forward 4 years and an acquisition later, I have a team of 5 and a lot of times it feels like the wild west. People making whatever design decision pleases them: integer and enums for DB types in one place and string another, this framework for a problem and then a different framework for the same problem elsewhere, etc.
How do I go about enforcing consistency? It feels important to me but my team members seem to subscribe to the "if it works, it works" methodology.
I guess a big part of my question is: is it unrealistic of me to expect standards like this? I struggle with the idea of coming across as a dictator that stifles creativity but doing whatever they want seems to not be scalable.
architecture management
architecture management
edited 8 hours ago
Deekor
asked 10 hours ago
DeekorDeekor
1425
1425
1
Can you tell us as much as you can about your existing SDLC process? Are you Waterfall, Agile, etc? Do you use TFS or task management? Do you perform code reviews or use FxCop or other forms of code validation? Do you produce design documentation? Do you have a designated architect role?
– John Wu
10 hours ago
1
Possible duplicate of What must be done to allow a development team to minimize difficulties as new team members are added?
– gnat
10 hours ago
@gnat: Not a great duplicate, if the answers are any indication.
– Robert Harvey♦
10 hours ago
To be fair, these standards should have been set very early on and based on some widely accepted "best practices" document so no one can complain about favoritism or elitism. If you are getting hard pushback from an individual you will have to consider whether one cowboy is worth the healthy environment for the rest of the team and replace that one, they'll be leaving on their before long anyways, they always do. Then I think that all advice given below to use strict code review before check-ins and to add an architecture component will work wonders.
– Patrick Hughes
9 hours ago
add a comment |
1
Can you tell us as much as you can about your existing SDLC process? Are you Waterfall, Agile, etc? Do you use TFS or task management? Do you perform code reviews or use FxCop or other forms of code validation? Do you produce design documentation? Do you have a designated architect role?
– John Wu
10 hours ago
1
Possible duplicate of What must be done to allow a development team to minimize difficulties as new team members are added?
– gnat
10 hours ago
@gnat: Not a great duplicate, if the answers are any indication.
– Robert Harvey♦
10 hours ago
To be fair, these standards should have been set very early on and based on some widely accepted "best practices" document so no one can complain about favoritism or elitism. If you are getting hard pushback from an individual you will have to consider whether one cowboy is worth the healthy environment for the rest of the team and replace that one, they'll be leaving on their before long anyways, they always do. Then I think that all advice given below to use strict code review before check-ins and to add an architecture component will work wonders.
– Patrick Hughes
9 hours ago
1
1
Can you tell us as much as you can about your existing SDLC process? Are you Waterfall, Agile, etc? Do you use TFS or task management? Do you perform code reviews or use FxCop or other forms of code validation? Do you produce design documentation? Do you have a designated architect role?
– John Wu
10 hours ago
Can you tell us as much as you can about your existing SDLC process? Are you Waterfall, Agile, etc? Do you use TFS or task management? Do you perform code reviews or use FxCop or other forms of code validation? Do you produce design documentation? Do you have a designated architect role?
– John Wu
10 hours ago
1
1
Possible duplicate of What must be done to allow a development team to minimize difficulties as new team members are added?
– gnat
10 hours ago
Possible duplicate of What must be done to allow a development team to minimize difficulties as new team members are added?
– gnat
10 hours ago
@gnat: Not a great duplicate, if the answers are any indication.
– Robert Harvey♦
10 hours ago
@gnat: Not a great duplicate, if the answers are any indication.
– Robert Harvey♦
10 hours ago
To be fair, these standards should have been set very early on and based on some widely accepted "best practices" document so no one can complain about favoritism or elitism. If you are getting hard pushback from an individual you will have to consider whether one cowboy is worth the healthy environment for the rest of the team and replace that one, they'll be leaving on their before long anyways, they always do. Then I think that all advice given below to use strict code review before check-ins and to add an architecture component will work wonders.
– Patrick Hughes
9 hours ago
To be fair, these standards should have been set very early on and based on some widely accepted "best practices" document so no one can complain about favoritism or elitism. If you are getting hard pushback from an individual you will have to consider whether one cowboy is worth the healthy environment for the rest of the team and replace that one, they'll be leaving on their before long anyways, they always do. Then I think that all advice given below to use strict code review before check-ins and to add an architecture component will work wonders.
– Patrick Hughes
9 hours ago
add a comment |
3 Answers
3
active
oldest
votes
What makes you so special?
My CPU says it works and I want to go home. Why are you bothering me?
You can deal with this attitude by forcing everyone to issue pull requests. But now the deadlines are looming. Bad code presses on the gates of your pristine castle and you finally give in to the pressure. Or you win only to find everyone leaves and no one uses your pristine castle.
There are plenty of tools that help with this issue. Source control, code reviews, etc. but the heart and soul of the problem is your subjective opinions about what is best have to be seen as relevant. For that you have to earn and maintain their respect. Do that and this is much easier. Fail to do that and no tool or practice will save you.
The best way to do that is communicate early. Don't tell me "we don't use strings for our DB types in this shop" 6 months after I settled on the idea. Telling me it's been buried in the documentation for 2 years is no justification for letting me do that.
For whatever reason you have things you care about. If you care about them and have a point get those things communicated clearly before, during, and after the coding of every module.
Code stalking is a wonderful practice. Invest in whatever tools and practices you need so you can review code within minutes of it being written. Pair program and the tool is simply a guest chair.
Why? Every second that passes after I write code exponentially increases the cost to change it. That's because my memory of the code has a half life. I start forgetting it the moment my bladder demands a break.
Reduce the things you care about to their underlying principles. Rather then hit me with a list of 101 rules to follow give me the 10 principles that they all violate so I can figure out what rule 102 should be on my own.
Empower me to impose my own vision by helping me see yours and we'll get along great.
is it unrealistic of me to expect standards like this? I struggle with the idea of coming across as a dictator that stifles creativity but doing whatever they want seems to not be scalable.
Then don't dictate! Make this a positive experience. This isn't some new age hippy nonsense. It's basic psychology. You are trying to modify behavior. Random and positive Is the most reinforcing. If you go negative you have to be consistent with your reinforcement. Thats an unobtainable pain. Be positive as you spread the wisdom and you can be casual about it.
add a comment |
First, get people to maintain things they didn't write. It's very easy for a developer to get into habits of using frameworks and techniques they are used to. It's jarring to have to switch between frameworks and methodologies. If someone is forced to move outside of their own corner of the code and experience that often, it will prompt some complaining and hopefully some productive discussion that can lead to people wanting to standardize on something.
Next, pull requests and code reviews. Never allow code to be merged to your main branches without a code review first. Anyone can do it. Again, when someone sees something that's different than what they would have done, it can prompt discussion and teamwork to come to a better solution. It also makes everyone a caretaker of the code base, which (hopefully) gets people to care about it and the state of the code that goes into it.
Finally, have design discussions. They can be formal or informal, but have them. Let those that want to participate do so. Discuss what frameworks you want to use, the pros and cons of enums vs ints, etc. Then come to a decision and document it somewhere (like a standards document). Then you have something to point to when problems arise. Also, don't be afraid to revisit a standards decision. Technology changes (quickly) and so can your needs as a team and as a company.
Help people to see what you see and feel like they have a stake in the quality of the code. Then gently prod discussions towards finding a standard when differences of opinion come up.
add a comment |
Perform code reviews every time someone wants to merge code into the main branch/trunk and hold people to those standards when reviewing the code.
And I don't mean that only you should perform the code reviews. Everyone should review everyone else's code. This disseminates knowledge about the system across the team but also creates a situation where Carol reviews Bob's code and says, "I see you used an integer there. I always use an enum." They discover the discrepancies that you've seen and, assuming they care, they will realize that everyone's got to get on the same page.
The accepted, agreed-upon standards will emerge, at which point you document them and make sure people follow them. This would include things like "enums in the DB for ...", etc. You can also include documenting which frameworks to use, etc.
I guess a big part of my question is is it unrealistic of me to expect standards like this. I struggle with the idea of coming across as a dictator that stifles creativity but doing whatever they want seems not scalable
– Deekor
10 hours ago
2
@Matthew, while I generally agree with you, I would do this in a reverse order. Design reviews first, and guidelines emerge from/during the design reviews. If you put the burden of writing everything down upfront on the architect/lead, that's shifting the burden to the intervenor.
– Nick Alexeev
10 hours ago
@Deekor: You have to pick your battles. Figure out what you have to put your foot down on, and document that. You don't have to dictate everything.
– Robert Harvey♦
10 hours ago
@Deekor, you can enforce standards and common coding practices without "stifling creativity." That's a spurious argument anyway. Common coding standards lead to easy-to-maintain software. Free-for-all coding leads to nightmares.
– Matthew
9 hours ago
1
@Nick Alexeev, I agree; will edit.
– Matthew
9 hours ago
|
show 3 more comments
Your Answer
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "131"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsoftwareengineering.stackexchange.com%2fquestions%2f392205%2fhow-to-keep-consistency-across-the-application-architecture-as-a-team-grows%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
3 Answers
3
active
oldest
votes
3 Answers
3
active
oldest
votes
active
oldest
votes
active
oldest
votes
What makes you so special?
My CPU says it works and I want to go home. Why are you bothering me?
You can deal with this attitude by forcing everyone to issue pull requests. But now the deadlines are looming. Bad code presses on the gates of your pristine castle and you finally give in to the pressure. Or you win only to find everyone leaves and no one uses your pristine castle.
There are plenty of tools that help with this issue. Source control, code reviews, etc. but the heart and soul of the problem is your subjective opinions about what is best have to be seen as relevant. For that you have to earn and maintain their respect. Do that and this is much easier. Fail to do that and no tool or practice will save you.
The best way to do that is communicate early. Don't tell me "we don't use strings for our DB types in this shop" 6 months after I settled on the idea. Telling me it's been buried in the documentation for 2 years is no justification for letting me do that.
For whatever reason you have things you care about. If you care about them and have a point get those things communicated clearly before, during, and after the coding of every module.
Code stalking is a wonderful practice. Invest in whatever tools and practices you need so you can review code within minutes of it being written. Pair program and the tool is simply a guest chair.
Why? Every second that passes after I write code exponentially increases the cost to change it. That's because my memory of the code has a half life. I start forgetting it the moment my bladder demands a break.
Reduce the things you care about to their underlying principles. Rather then hit me with a list of 101 rules to follow give me the 10 principles that they all violate so I can figure out what rule 102 should be on my own.
Empower me to impose my own vision by helping me see yours and we'll get along great.
is it unrealistic of me to expect standards like this? I struggle with the idea of coming across as a dictator that stifles creativity but doing whatever they want seems to not be scalable.
Then don't dictate! Make this a positive experience. This isn't some new age hippy nonsense. It's basic psychology. You are trying to modify behavior. Random and positive Is the most reinforcing. If you go negative you have to be consistent with your reinforcement. Thats an unobtainable pain. Be positive as you spread the wisdom and you can be casual about it.
add a comment |
What makes you so special?
My CPU says it works and I want to go home. Why are you bothering me?
You can deal with this attitude by forcing everyone to issue pull requests. But now the deadlines are looming. Bad code presses on the gates of your pristine castle and you finally give in to the pressure. Or you win only to find everyone leaves and no one uses your pristine castle.
There are plenty of tools that help with this issue. Source control, code reviews, etc. but the heart and soul of the problem is your subjective opinions about what is best have to be seen as relevant. For that you have to earn and maintain their respect. Do that and this is much easier. Fail to do that and no tool or practice will save you.
The best way to do that is communicate early. Don't tell me "we don't use strings for our DB types in this shop" 6 months after I settled on the idea. Telling me it's been buried in the documentation for 2 years is no justification for letting me do that.
For whatever reason you have things you care about. If you care about them and have a point get those things communicated clearly before, during, and after the coding of every module.
Code stalking is a wonderful practice. Invest in whatever tools and practices you need so you can review code within minutes of it being written. Pair program and the tool is simply a guest chair.
Why? Every second that passes after I write code exponentially increases the cost to change it. That's because my memory of the code has a half life. I start forgetting it the moment my bladder demands a break.
Reduce the things you care about to their underlying principles. Rather then hit me with a list of 101 rules to follow give me the 10 principles that they all violate so I can figure out what rule 102 should be on my own.
Empower me to impose my own vision by helping me see yours and we'll get along great.
is it unrealistic of me to expect standards like this? I struggle with the idea of coming across as a dictator that stifles creativity but doing whatever they want seems to not be scalable.
Then don't dictate! Make this a positive experience. This isn't some new age hippy nonsense. It's basic psychology. You are trying to modify behavior. Random and positive Is the most reinforcing. If you go negative you have to be consistent with your reinforcement. Thats an unobtainable pain. Be positive as you spread the wisdom and you can be casual about it.
add a comment |
What makes you so special?
My CPU says it works and I want to go home. Why are you bothering me?
You can deal with this attitude by forcing everyone to issue pull requests. But now the deadlines are looming. Bad code presses on the gates of your pristine castle and you finally give in to the pressure. Or you win only to find everyone leaves and no one uses your pristine castle.
There are plenty of tools that help with this issue. Source control, code reviews, etc. but the heart and soul of the problem is your subjective opinions about what is best have to be seen as relevant. For that you have to earn and maintain their respect. Do that and this is much easier. Fail to do that and no tool or practice will save you.
The best way to do that is communicate early. Don't tell me "we don't use strings for our DB types in this shop" 6 months after I settled on the idea. Telling me it's been buried in the documentation for 2 years is no justification for letting me do that.
For whatever reason you have things you care about. If you care about them and have a point get those things communicated clearly before, during, and after the coding of every module.
Code stalking is a wonderful practice. Invest in whatever tools and practices you need so you can review code within minutes of it being written. Pair program and the tool is simply a guest chair.
Why? Every second that passes after I write code exponentially increases the cost to change it. That's because my memory of the code has a half life. I start forgetting it the moment my bladder demands a break.
Reduce the things you care about to their underlying principles. Rather then hit me with a list of 101 rules to follow give me the 10 principles that they all violate so I can figure out what rule 102 should be on my own.
Empower me to impose my own vision by helping me see yours and we'll get along great.
is it unrealistic of me to expect standards like this? I struggle with the idea of coming across as a dictator that stifles creativity but doing whatever they want seems to not be scalable.
Then don't dictate! Make this a positive experience. This isn't some new age hippy nonsense. It's basic psychology. You are trying to modify behavior. Random and positive Is the most reinforcing. If you go negative you have to be consistent with your reinforcement. Thats an unobtainable pain. Be positive as you spread the wisdom and you can be casual about it.
What makes you so special?
My CPU says it works and I want to go home. Why are you bothering me?
You can deal with this attitude by forcing everyone to issue pull requests. But now the deadlines are looming. Bad code presses on the gates of your pristine castle and you finally give in to the pressure. Or you win only to find everyone leaves and no one uses your pristine castle.
There are plenty of tools that help with this issue. Source control, code reviews, etc. but the heart and soul of the problem is your subjective opinions about what is best have to be seen as relevant. For that you have to earn and maintain their respect. Do that and this is much easier. Fail to do that and no tool or practice will save you.
The best way to do that is communicate early. Don't tell me "we don't use strings for our DB types in this shop" 6 months after I settled on the idea. Telling me it's been buried in the documentation for 2 years is no justification for letting me do that.
For whatever reason you have things you care about. If you care about them and have a point get those things communicated clearly before, during, and after the coding of every module.
Code stalking is a wonderful practice. Invest in whatever tools and practices you need so you can review code within minutes of it being written. Pair program and the tool is simply a guest chair.
Why? Every second that passes after I write code exponentially increases the cost to change it. That's because my memory of the code has a half life. I start forgetting it the moment my bladder demands a break.
Reduce the things you care about to their underlying principles. Rather then hit me with a list of 101 rules to follow give me the 10 principles that they all violate so I can figure out what rule 102 should be on my own.
Empower me to impose my own vision by helping me see yours and we'll get along great.
is it unrealistic of me to expect standards like this? I struggle with the idea of coming across as a dictator that stifles creativity but doing whatever they want seems to not be scalable.
Then don't dictate! Make this a positive experience. This isn't some new age hippy nonsense. It's basic psychology. You are trying to modify behavior. Random and positive Is the most reinforcing. If you go negative you have to be consistent with your reinforcement. Thats an unobtainable pain. Be positive as you spread the wisdom and you can be casual about it.
edited 7 hours ago
answered 10 hours ago
candied_orangecandied_orange
56.8k17107197
56.8k17107197
add a comment |
add a comment |
First, get people to maintain things they didn't write. It's very easy for a developer to get into habits of using frameworks and techniques they are used to. It's jarring to have to switch between frameworks and methodologies. If someone is forced to move outside of their own corner of the code and experience that often, it will prompt some complaining and hopefully some productive discussion that can lead to people wanting to standardize on something.
Next, pull requests and code reviews. Never allow code to be merged to your main branches without a code review first. Anyone can do it. Again, when someone sees something that's different than what they would have done, it can prompt discussion and teamwork to come to a better solution. It also makes everyone a caretaker of the code base, which (hopefully) gets people to care about it and the state of the code that goes into it.
Finally, have design discussions. They can be formal or informal, but have them. Let those that want to participate do so. Discuss what frameworks you want to use, the pros and cons of enums vs ints, etc. Then come to a decision and document it somewhere (like a standards document). Then you have something to point to when problems arise. Also, don't be afraid to revisit a standards decision. Technology changes (quickly) and so can your needs as a team and as a company.
Help people to see what you see and feel like they have a stake in the quality of the code. Then gently prod discussions towards finding a standard when differences of opinion come up.
add a comment |
First, get people to maintain things they didn't write. It's very easy for a developer to get into habits of using frameworks and techniques they are used to. It's jarring to have to switch between frameworks and methodologies. If someone is forced to move outside of their own corner of the code and experience that often, it will prompt some complaining and hopefully some productive discussion that can lead to people wanting to standardize on something.
Next, pull requests and code reviews. Never allow code to be merged to your main branches without a code review first. Anyone can do it. Again, when someone sees something that's different than what they would have done, it can prompt discussion and teamwork to come to a better solution. It also makes everyone a caretaker of the code base, which (hopefully) gets people to care about it and the state of the code that goes into it.
Finally, have design discussions. They can be formal or informal, but have them. Let those that want to participate do so. Discuss what frameworks you want to use, the pros and cons of enums vs ints, etc. Then come to a decision and document it somewhere (like a standards document). Then you have something to point to when problems arise. Also, don't be afraid to revisit a standards decision. Technology changes (quickly) and so can your needs as a team and as a company.
Help people to see what you see and feel like they have a stake in the quality of the code. Then gently prod discussions towards finding a standard when differences of opinion come up.
add a comment |
First, get people to maintain things they didn't write. It's very easy for a developer to get into habits of using frameworks and techniques they are used to. It's jarring to have to switch between frameworks and methodologies. If someone is forced to move outside of their own corner of the code and experience that often, it will prompt some complaining and hopefully some productive discussion that can lead to people wanting to standardize on something.
Next, pull requests and code reviews. Never allow code to be merged to your main branches without a code review first. Anyone can do it. Again, when someone sees something that's different than what they would have done, it can prompt discussion and teamwork to come to a better solution. It also makes everyone a caretaker of the code base, which (hopefully) gets people to care about it and the state of the code that goes into it.
Finally, have design discussions. They can be formal or informal, but have them. Let those that want to participate do so. Discuss what frameworks you want to use, the pros and cons of enums vs ints, etc. Then come to a decision and document it somewhere (like a standards document). Then you have something to point to when problems arise. Also, don't be afraid to revisit a standards decision. Technology changes (quickly) and so can your needs as a team and as a company.
Help people to see what you see and feel like they have a stake in the quality of the code. Then gently prod discussions towards finding a standard when differences of opinion come up.
First, get people to maintain things they didn't write. It's very easy for a developer to get into habits of using frameworks and techniques they are used to. It's jarring to have to switch between frameworks and methodologies. If someone is forced to move outside of their own corner of the code and experience that often, it will prompt some complaining and hopefully some productive discussion that can lead to people wanting to standardize on something.
Next, pull requests and code reviews. Never allow code to be merged to your main branches without a code review first. Anyone can do it. Again, when someone sees something that's different than what they would have done, it can prompt discussion and teamwork to come to a better solution. It also makes everyone a caretaker of the code base, which (hopefully) gets people to care about it and the state of the code that goes into it.
Finally, have design discussions. They can be formal or informal, but have them. Let those that want to participate do so. Discuss what frameworks you want to use, the pros and cons of enums vs ints, etc. Then come to a decision and document it somewhere (like a standards document). Then you have something to point to when problems arise. Also, don't be afraid to revisit a standards decision. Technology changes (quickly) and so can your needs as a team and as a company.
Help people to see what you see and feel like they have a stake in the quality of the code. Then gently prod discussions towards finding a standard when differences of opinion come up.
edited 9 hours ago
Robert Harvey♦
169k44390605
169k44390605
answered 10 hours ago
BecuzzBecuzz
3,94111523
3,94111523
add a comment |
add a comment |
Perform code reviews every time someone wants to merge code into the main branch/trunk and hold people to those standards when reviewing the code.
And I don't mean that only you should perform the code reviews. Everyone should review everyone else's code. This disseminates knowledge about the system across the team but also creates a situation where Carol reviews Bob's code and says, "I see you used an integer there. I always use an enum." They discover the discrepancies that you've seen and, assuming they care, they will realize that everyone's got to get on the same page.
The accepted, agreed-upon standards will emerge, at which point you document them and make sure people follow them. This would include things like "enums in the DB for ...", etc. You can also include documenting which frameworks to use, etc.
I guess a big part of my question is is it unrealistic of me to expect standards like this. I struggle with the idea of coming across as a dictator that stifles creativity but doing whatever they want seems not scalable
– Deekor
10 hours ago
2
@Matthew, while I generally agree with you, I would do this in a reverse order. Design reviews first, and guidelines emerge from/during the design reviews. If you put the burden of writing everything down upfront on the architect/lead, that's shifting the burden to the intervenor.
– Nick Alexeev
10 hours ago
@Deekor: You have to pick your battles. Figure out what you have to put your foot down on, and document that. You don't have to dictate everything.
– Robert Harvey♦
10 hours ago
@Deekor, you can enforce standards and common coding practices without "stifling creativity." That's a spurious argument anyway. Common coding standards lead to easy-to-maintain software. Free-for-all coding leads to nightmares.
– Matthew
9 hours ago
1
@Nick Alexeev, I agree; will edit.
– Matthew
9 hours ago
|
show 3 more comments
Perform code reviews every time someone wants to merge code into the main branch/trunk and hold people to those standards when reviewing the code.
And I don't mean that only you should perform the code reviews. Everyone should review everyone else's code. This disseminates knowledge about the system across the team but also creates a situation where Carol reviews Bob's code and says, "I see you used an integer there. I always use an enum." They discover the discrepancies that you've seen and, assuming they care, they will realize that everyone's got to get on the same page.
The accepted, agreed-upon standards will emerge, at which point you document them and make sure people follow them. This would include things like "enums in the DB for ...", etc. You can also include documenting which frameworks to use, etc.
I guess a big part of my question is is it unrealistic of me to expect standards like this. I struggle with the idea of coming across as a dictator that stifles creativity but doing whatever they want seems not scalable
– Deekor
10 hours ago
2
@Matthew, while I generally agree with you, I would do this in a reverse order. Design reviews first, and guidelines emerge from/during the design reviews. If you put the burden of writing everything down upfront on the architect/lead, that's shifting the burden to the intervenor.
– Nick Alexeev
10 hours ago
@Deekor: You have to pick your battles. Figure out what you have to put your foot down on, and document that. You don't have to dictate everything.
– Robert Harvey♦
10 hours ago
@Deekor, you can enforce standards and common coding practices without "stifling creativity." That's a spurious argument anyway. Common coding standards lead to easy-to-maintain software. Free-for-all coding leads to nightmares.
– Matthew
9 hours ago
1
@Nick Alexeev, I agree; will edit.
– Matthew
9 hours ago
|
show 3 more comments
Perform code reviews every time someone wants to merge code into the main branch/trunk and hold people to those standards when reviewing the code.
And I don't mean that only you should perform the code reviews. Everyone should review everyone else's code. This disseminates knowledge about the system across the team but also creates a situation where Carol reviews Bob's code and says, "I see you used an integer there. I always use an enum." They discover the discrepancies that you've seen and, assuming they care, they will realize that everyone's got to get on the same page.
The accepted, agreed-upon standards will emerge, at which point you document them and make sure people follow them. This would include things like "enums in the DB for ...", etc. You can also include documenting which frameworks to use, etc.
Perform code reviews every time someone wants to merge code into the main branch/trunk and hold people to those standards when reviewing the code.
And I don't mean that only you should perform the code reviews. Everyone should review everyone else's code. This disseminates knowledge about the system across the team but also creates a situation where Carol reviews Bob's code and says, "I see you used an integer there. I always use an enum." They discover the discrepancies that you've seen and, assuming they care, they will realize that everyone's got to get on the same page.
The accepted, agreed-upon standards will emerge, at which point you document them and make sure people follow them. This would include things like "enums in the DB for ...", etc. You can also include documenting which frameworks to use, etc.
edited 9 hours ago
answered 10 hours ago
MatthewMatthew
4633
4633
I guess a big part of my question is is it unrealistic of me to expect standards like this. I struggle with the idea of coming across as a dictator that stifles creativity but doing whatever they want seems not scalable
– Deekor
10 hours ago
2
@Matthew, while I generally agree with you, I would do this in a reverse order. Design reviews first, and guidelines emerge from/during the design reviews. If you put the burden of writing everything down upfront on the architect/lead, that's shifting the burden to the intervenor.
– Nick Alexeev
10 hours ago
@Deekor: You have to pick your battles. Figure out what you have to put your foot down on, and document that. You don't have to dictate everything.
– Robert Harvey♦
10 hours ago
@Deekor, you can enforce standards and common coding practices without "stifling creativity." That's a spurious argument anyway. Common coding standards lead to easy-to-maintain software. Free-for-all coding leads to nightmares.
– Matthew
9 hours ago
1
@Nick Alexeev, I agree; will edit.
– Matthew
9 hours ago
|
show 3 more comments
I guess a big part of my question is is it unrealistic of me to expect standards like this. I struggle with the idea of coming across as a dictator that stifles creativity but doing whatever they want seems not scalable
– Deekor
10 hours ago
2
@Matthew, while I generally agree with you, I would do this in a reverse order. Design reviews first, and guidelines emerge from/during the design reviews. If you put the burden of writing everything down upfront on the architect/lead, that's shifting the burden to the intervenor.
– Nick Alexeev
10 hours ago
@Deekor: You have to pick your battles. Figure out what you have to put your foot down on, and document that. You don't have to dictate everything.
– Robert Harvey♦
10 hours ago
@Deekor, you can enforce standards and common coding practices without "stifling creativity." That's a spurious argument anyway. Common coding standards lead to easy-to-maintain software. Free-for-all coding leads to nightmares.
– Matthew
9 hours ago
1
@Nick Alexeev, I agree; will edit.
– Matthew
9 hours ago
I guess a big part of my question is is it unrealistic of me to expect standards like this. I struggle with the idea of coming across as a dictator that stifles creativity but doing whatever they want seems not scalable
– Deekor
10 hours ago
I guess a big part of my question is is it unrealistic of me to expect standards like this. I struggle with the idea of coming across as a dictator that stifles creativity but doing whatever they want seems not scalable
– Deekor
10 hours ago
2
2
@Matthew, while I generally agree with you, I would do this in a reverse order. Design reviews first, and guidelines emerge from/during the design reviews. If you put the burden of writing everything down upfront on the architect/lead, that's shifting the burden to the intervenor.
– Nick Alexeev
10 hours ago
@Matthew, while I generally agree with you, I would do this in a reverse order. Design reviews first, and guidelines emerge from/during the design reviews. If you put the burden of writing everything down upfront on the architect/lead, that's shifting the burden to the intervenor.
– Nick Alexeev
10 hours ago
@Deekor: You have to pick your battles. Figure out what you have to put your foot down on, and document that. You don't have to dictate everything.
– Robert Harvey♦
10 hours ago
@Deekor: You have to pick your battles. Figure out what you have to put your foot down on, and document that. You don't have to dictate everything.
– Robert Harvey♦
10 hours ago
@Deekor, you can enforce standards and common coding practices without "stifling creativity." That's a spurious argument anyway. Common coding standards lead to easy-to-maintain software. Free-for-all coding leads to nightmares.
– Matthew
9 hours ago
@Deekor, you can enforce standards and common coding practices without "stifling creativity." That's a spurious argument anyway. Common coding standards lead to easy-to-maintain software. Free-for-all coding leads to nightmares.
– Matthew
9 hours ago
1
1
@Nick Alexeev, I agree; will edit.
– Matthew
9 hours ago
@Nick Alexeev, I agree; will edit.
– Matthew
9 hours ago
|
show 3 more comments
Thanks for contributing an answer to Software Engineering Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsoftwareengineering.stackexchange.com%2fquestions%2f392205%2fhow-to-keep-consistency-across-the-application-architecture-as-a-team-grows%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
1
Can you tell us as much as you can about your existing SDLC process? Are you Waterfall, Agile, etc? Do you use TFS or task management? Do you perform code reviews or use FxCop or other forms of code validation? Do you produce design documentation? Do you have a designated architect role?
– John Wu
10 hours ago
1
Possible duplicate of What must be done to allow a development team to minimize difficulties as new team members are added?
– gnat
10 hours ago
@gnat: Not a great duplicate, if the answers are any indication.
– Robert Harvey♦
10 hours ago
To be fair, these standards should have been set very early on and based on some widely accepted "best practices" document so no one can complain about favoritism or elitism. If you are getting hard pushback from an individual you will have to consider whether one cowboy is worth the healthy environment for the rest of the team and replace that one, they'll be leaving on their before long anyways, they always do. Then I think that all advice given below to use strict code review before check-ins and to add an architecture component will work wonders.
– Patrick Hughes
9 hours ago