The corruption of architecture is inevitable , Don't take people's will as a transfer .
Let's start with a story , There used to be a company , This company has a department , There are two groups in this department .
The two groups did similar projects , They are all strategic projects .
One of the groups basically depends on people , Business and PM All requirements of , Can find people , And let this person in all kinds of scenes , Various modules , Various branches Riga if else
You can do it , Fast code expansion . Soon no one can tell the details of the project , But there are many strategies involved in the company's business , Needs can't be met , So crazy people , The group expanded rapidly to dozens of people . Everyone's busy , enrich , Working overtime every day , I just can't understand the code , But it doesn't matter . What's important is that we're all full and weekly . group
leader It's going up , It can be said that everyone is happy .
Another group works on the project , Always like to do some design , Always do and stop when meeting the demand , But after a while , It seems that the rest of the work is very simple and thin , Team members write configuration , Write workflow . It's too much trouble. It's a front end , So every day's work becomes a little mouse , And then they thought it was too much trouble . Click the mouse and throw it to the business . These programmers seem to be very busy every day . Soon became the boss's eyesore , For whatever reason, we'll take this group apart and make changes “ core ” The business of .
If you work for an Internet company that values rural agility （ Maybe there's no other company like this ）, Maybe we're going through similar stories every day . Nothing new in the sun , Unfortunate people have the same misfortune .
What's the problem ?
Internet industry learning from abroad , Advocating agile development , But in fact, it's just superficial agility , Agile delivery only , Most of the time, development is not considered . So they look like agile development , In fact, it may not even be as good as the waterfall model . What is the waterfall model like ?
Waterfall model needs to do detailed demand research , And long time design planning , So Internet companies are criticized under the development speed of one day and ten years . And modern Internet companies are business driven , The obvious feature is that no matter how simple your software looks , There are huge and complex processes behind it , Policy system . Business code of a medium-sized Internet company , The process alone may have millions of lines . In the process of continuous evolution , The business itself will continue to change . It could be a change of strategy , It could be a process change , It could be a change of field , Or maybe it's because you need to make structural changes on your own initiative when you're hit by competitors . The waterfall model needs long-term planning , And it's really not suitable for Internet companies .
The tragedy is , Lost the waterfall model , People don't just lose the process , Even lost the design process . Most agile development flow charts don't take design seriously , have a look Scrum
In concept , For each agile iteration cycle planning part ：
Scrum methodology advocates for a planning meeting at the start of the sprint,
where team members figure out how many items they can commit to, and then
create a sprint backlog – a list of the tasks to perform during the sprint.
In order to reflect the working attitude , Engineers must instinctively avoid reconfiguration , These businesses task
That's what makes me work overtime and get promoted . the more , the better , Fully reflect the workload . Project quality , What does it have to do with me .
Sometimes the system is too complex , Ordinary engineers don't know , There will also be a stage of pretentious design , Like the waterfall model , For a week or two . But it's just architects getting together , Design an initial
POC framework , Once the software enters the development stage , Architects may have fled to the next complex project design .
Late iterations and evolutionary architects of software are often not involved . The change of business will not change the will of a few people , With change , There must be requirements that are not suitable for the original design , At this time, the architect is far away . Engineers are on a tight schedule , Then we can only implement the requirements temporarily with ugly solutions . Leave technology debt in the system .
such “ Not suitable for integration into existing architecture ” When does the demand event of , No one can tell . Architects with long-term follow-up for each project , And the project hasn't changed much , It will become a waste of resources . If the architect's daily work is not to follow up a project , When there are problems with this project , Need to do design review again , Go to the architect temporarily
review, Most of them are just a walk away .
It's a bit of a dilemma .
In this case , The best way to do this is to train the right people within the team to take on the responsibilities of the team's architects , Responsible for some reconstruction , Design and architecture work , But it doesn't always work . We all eat mixed food , How many programmers don't study, don't study and don't strive for progress , A business technology department with hundreds of people , Maybe it's true that several groups don't have a qualified architect . Even if you have the ability , Maybe there's no time . First line engineers are still watching the system become
Back to the beginning . From the perspective of God , The ideal and non ideal situations we consider are not fair to the characters in the story . Even if there is a reasonable process , From outside “ architect ” Many of them are just long-term workers , Words must be talked about
DDD, Middle stage , strategy , Once arriving at the landing link, no reasonable opinions and suggestions can be put forward . There's also the title of architect , It's actually a “ Management expert ”, Better at expediting progress . And for some people , No reasonable structure , It might be better in terms of results . This matches the distorted values of the Internet industry , Most of the time, you measure your worth by one person
Number of younger brothers * Company halo bonus , It can be calculated by simple arithmetic , Congratulations . In this way, everyone's goal is to recruit more younger brothers , It doesn't matter what the system is made of .
Can meet a reliable architect , For a front-line Engineer , A lot of the time . For those in small and medium-sized companies , Maybe it's despair .
How to avoid such despair ? Only by luck , In terms of objective laws , Big companies also come from small companies , In the early stage of its development , A reliable architect 90%
Not willing to join , And the company is really growing , Maybe the architecture problem of your system has been solved by a reliable architect , At least not for a short time . If you didn't grow up with the company , It's hard to experience how much good architecture can bring to your daily work .
So this is an unsolvable problem . For an engineer , Usually we should learn more , On the one hand, improve personal strength , Be able to take on higher responsibilities , You can have more choices if you are strong . As for the foreign monks , In general, we can't count on it .
PS. I made up the first story .