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;








7















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.










share|improve this question



















  • 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

















7















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.










share|improve this question



















  • 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













7












7








7








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.










share|improve this question
















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






share|improve this question















share|improve this question













share|improve this question




share|improve this question








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












  • 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










3 Answers
3






active

oldest

votes


















10














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.






share|improve this answer
































    2














    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.






    share|improve this answer
































      1














      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.






      share|improve this answer

























      • 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











      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
      );



      );













      draft saved

      draft discarded


















      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









      10














      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.






      share|improve this answer





























        10














        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.






        share|improve this answer



























          10












          10








          10







          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.






          share|improve this answer















          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.







          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited 7 hours ago

























          answered 10 hours ago









          candied_orangecandied_orange

          56.8k17107197




          56.8k17107197























              2














              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.






              share|improve this answer





























                2














                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.






                share|improve this answer



























                  2












                  2








                  2







                  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.






                  share|improve this answer















                  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.







                  share|improve this answer














                  share|improve this answer



                  share|improve this answer








                  edited 9 hours ago









                  Robert Harvey

                  169k44390605




                  169k44390605










                  answered 10 hours ago









                  BecuzzBecuzz

                  3,94111523




                  3,94111523





















                      1














                      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.






                      share|improve this answer

























                      • 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















                      1














                      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.






                      share|improve this answer

























                      • 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













                      1












                      1








                      1







                      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.






                      share|improve this answer















                      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.







                      share|improve this answer














                      share|improve this answer



                      share|improve this answer








                      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

















                      • 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

















                      draft saved

                      draft discarded
















































                      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.




                      draft saved


                      draft discarded














                      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





















































                      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







                      Popular posts from this blog

                      ParseJSON using SSJSUsing AMPscript with SSJS ActivitiesHow to resubscribe a user in Marketing cloud using SSJS?Pulling Subscriber Status from Lists using SSJSRetrieving Emails using SSJSProblem in updating DE using SSJSUsing SSJS to send single email in Marketing CloudError adding EmailSendDefinition using SSJS

                      Кампала Садржај Географија Географија Историја Становништво Привреда Партнерски градови Референце Спољашње везе Мени за навигацију0°11′ СГШ; 32°20′ ИГД / 0.18° СГШ; 32.34° ИГД / 0.18; 32.340°11′ СГШ; 32°20′ ИГД / 0.18° СГШ; 32.34° ИГД / 0.18; 32.34МедијиПодациЗванични веб-сајту

                      Кастелфранко ди Сопра Становништво Референце Спољашње везе Мени за навигацију43°37′18″ СГШ; 11°33′32″ ИГД / 43.62156° СГШ; 11.55885° ИГД / 43.62156; 11.5588543°37′18″ СГШ; 11°33′32″ ИГД / 43.62156° СГШ; 11.55885° ИГД / 43.62156; 11.558853179688„The GeoNames geographical database”„Istituto Nazionale di Statistica”проширитиууWorldCat156923403n850174324558639-1cb14643287r(подаци)