Exercises

In these final exercises you get an opportunity to look for early warnings of potential future quality problems. You also get to experiment with a proactive usage of the social analysis techniques as a way to facilitate communication, as well as to reason about offboarding risks.

Early Warnings in Legacy Code

Apache Tomcat has a rich history and the code continues to evolve, which makes it a great case study for detecting early warnings due to new features. One of Tomcat’s classes, java/org/apache/tomcat/util/net/AbstractEndpoint.java, had been around for eight years before it suddenly started to accumulate complexity. The class is still small, around 700 lines, so if this turns out to be a real problem, now is a great time to counter it.

Start by investigating the complexity trend of java/org/apache/tomcat/util/net/ AbstractEndpoint.java. Continue with an X-Ray and see if you can find any areas that could benefit from focused refactorings. Bonus points are awarded if you, using the Git history,[140] track down the new code and focus your investigative efforts there. (In reality, you’d deliver the possible feedback as part of the pull request.)

Find the Experts

As we discussed distributed teams we saw that tasks often take longer to complete as we struggle to find the experts. It takes time to learn who does what, and that learning curve gets longer when we’re located at multiple sites.

Pretend for a moment your team works on Kubernetes and looks to complete a particular feature. After an initial investigation you realize you need to modify the staging/src/k8s.io/apiextensions-apiserver package and probably the staging/src/k8s.io/client-go code too. Who should you discuss your changes with? Have a look at the knowledge map and see if you can identify the main developers.

Offboarding: What If?

We’ve seen how we can measure the impact when a developer leaves, and now we get a chance to simulate the same effect with proactive use of a knowledge-loss analysis.

In this exercise you get to investigate two popular open source projects and see what happens if their creators leave. Simulate what happens if Git’s inventor, Linus Torvalds, leaves and compare it to the effect on Clojure if Rich Hickey abandons the codebase.

Footnotes

[120]

https://github.com/dotnet/coreclr

[121]

https://codescene.io/projects/1765/jobs/4433/results/code/hotspots/system-map

[122]

https://codescene.io/projects/1765/jobs/4433/results/files/hotspots?file-name=coreclr/src/gc/gc.cpp

[123]

https://github.com/dotnet/coreclr/issues/408

[124]

https://codescene.io/projects/1765/jobs/4433/results/code/hotspots/complexity-trend?name=coreclr/src/vm/gdbjit.cpp

[125]

https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks

[126]

https://codescene.io/projects/1765/jobs/4433/results/warnings/rising-hotspots

[127]

https://github.com/dotnet/roslyn

[128]

https://codescene.io/projects/1715/jobs/4299/results/code/hotspots/system-map

[129]

https://codescene.io/projects/1715/jobs/4299/results/code/temporal-coupling/by-commits

[130]

https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks

[131]

https://github.com/JetBrains/kotlin

[132]

https://codescene.io/projects/1619/jobs/4004/results/social/knowledge/individuals

[133]

https://en.wikipedia.org/wiki/Mob_programming

[134]

https://www.youtube.com/watch?v=uiJycy6dFSQ

[135]

https://soc.github.io/six-years-of-scala-development/departure.html

[136]

https://codescene.io/projects/1822/jobs/4594/results/social/knowledge/individuals?aspect=loss

[137]

http://gbayer.com/development/moving-files-from-one-git-repository-to-another-preserving-history/

[138]

https://en.wikipedia.org/wiki/Geographic_profiling

[139]

https://github.com/apache/tomcat

[140]

https://github.com/SoftwareDesignXRays/tomcat

[141]

https://github.com/kubernetes/kubernetes

[142]

https://github.com/clojure/clojure

[143]

https://github.com/git/git

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.147.54.139