Daniel Shaya (@DanielShaya) profile picture

A Java developer and enthusiast.

London
Joined July 2013
Photo by Daniel Shaya (@DanielShaya)Photo by Daniel Shaya (@DanielShaya)Photo by Daniel Shaya (@DanielShaya)Photo by Daniel Shaya (@DanielShaya)Photo by Daniel Shaya (@DanielShaya)Photo by Daniel Shaya (@DanielShaya)Photo by Daniel Shaya (@DanielShaya)Photo by Daniel Shaya (@DanielShaya)
๐——๐—ฒ๐—ณ๐—ถ๐—ป๐—ถ๐—ป๐—ด, ๐— ๐—ฒ๐—ฎ๐˜€๐˜‚๐—ฟ๐—ถ๐—ป๐—ด, ๐—ฎ๐—ป๐—ฑ ๐— ๐—ฎ๐—ป๐—ฎ๐—ด๐—ถ๐—ป๐—ด ๐—ง๐—ฒ๐—ฐ๐—ต๐—ป๐—ถ๐—ฐ๐—ฎ๐—น ๐——๐—ฒ๐—ฏ๐˜ ๐—ฏ๐˜† ๐—š๐—ผ๐—ผ๐—ด๐—น๐—ฒ In the latest paper by Google Engineers, they researched how to define, measure and manage Technical Debt. They use quarterly engineering satisfaction surveys to analyze the results. ๐Ÿญ. ๐——๐—ฒ๐—ณ๐—ถ๐—ป๐—ถ๐˜๐—ถ๐—ผ๐—ป ๐—ผ๐—ณ ๐—ง๐—ฒ๐—ฐ๐—ต๐—ป๐—ถ๐—ฐ๐—ฎ๐—น ๐——๐—ฒ๐—ฏ๐˜ Google took an empirical approach to defining technical debt. They asked engineers about the types of technical debt they encountered and what mitigations would be appropriate to fix this debt. This resulted in a collectively exhaustive and mutually exclusive list of 10 categories of technical debt, including: ๐Ÿ”น Migration is needed or in progress: This may be motivated by the need for code or systems to be updated, migrated, or maintained. ๐Ÿ”น Code degradation: The codebase has degraded or not kept up with changing standards over time. The code may be in maintenance mode, needing updates or migrations. ๐Ÿ”น Documentation on project and application programming interfaces (APIs): Information on how your project works is hard to find, missing, or incomplete. ๐Ÿ”น Testing: Poor test quality or coverage, such as missing tests or poor test data, results in fragility and flaky tests. ๐Ÿ”น Code quality: Product architecture or project code must be better designed. It may have been rushed or a prototype/demo. ๐Ÿ”น Dead and abandoned code: Code/features/projects were replaced or superseded but still need removal. ๐Ÿ”น Team needs more expertise: This may be due to staffing gaps, turnover, or inherited orphaned code/projects. ๐Ÿ”น Dependencies: Dependencies are unstable, rapidly changing, or trigger rollbacks. ๐Ÿ”น Migration could have been better executed or abandoned: This may have resulted in maintaining two versions. ๐Ÿ”น Release process: The rollout and monitoring of production need to be updated, migrated, or maintained. ๐Ÿฎ. ๐— ๐—ฒ๐—ฎ๐˜€๐˜‚๐—ฟ๐—ถ๐—ป๐—ด ๐—ง๐—ฒ๐—ฐ๐—ต๐—ป๐—ถ๐—ฐ๐—ฎ๐—น ๐——๐—ฒ๐—ฏ๐˜ Google measures technical debt through a quarterly engineering survey. They ask engineers about which of these categories of technical debt have hindered their work. The responses to these surveys help Google identify teams that struggle with managing different types of technical debt. E.g., they found that engineers working on machine learning systems face different types of technical debt compared to engineers who build and maintain back-end services. They focused on code degradation, teams needing more expertise, and migrations being required or in progress. Then, they explored 117 metrics proposed as indicators of one of these forms of technical debtโ€”the results were that no single metric predicted reports of technical debt from engineers. ๐Ÿฏ. ๐— ๐—ฎ๐—ป๐—ฎ๐—ด๐—ถ๐—ป๐—ด ๐—ง๐—ฒ๐—ฐ๐—ต๐—ป๐—ถ๐—ฐ๐—ฎ๐—น ๐——๐—ฒ๐—ฏ๐˜ Over the last four years, Google has made a concerted effort to define better, measure, and manage technical debt. Some of the steps taken include: ๐Ÿ”ธ Creating a technical debt management framework to help teams establish good practices ๐Ÿ”ธ Creating a technical debt management maturity model and accompanying technical debt maturity assessment that evaluates and characterizes an organization's technical debt management process ๐Ÿ”ธ Organizing classroom instruction and self-guided courses to evangelize best practices and community forums to drive continual engagement and sharing of resources. ๐Ÿ”ธ Tooling that supports the identification and management of technical debt (for example, indicators of poor test coverage, stale documentation, and deprecated dependencies) It's important to note that zero technical debt is not the goal at Google. The presence of deliberate, prudent technical debt reflects the practicality of developing systems in the real world. The key is to manage it thoughtfully and responsibly. Check the full link in the comments. _______ If you like my posts, please follow me, @milan_milanovic, and hit the ๐Ÿ”” on my profile to get a notification for all my new posts. Grow with me ๐Ÿš€! #technology #softwareengineering #programming #techworldwithmilan #development
20
516
22
2,279
383,133
Daniel Shaya retweeted
#Aeron 1.42.0 released! What's new? Improved service availability with Cluster Standby Snapshots & Graceful Leader Close, simplified network access config via Port Manager & more. Details on Github & our website: eu1.hubs.ly/H053cxY0 #softwarerelease #newfeatures #tradingtech
6
3
1,963
Daniel Shaya retweeted
The #Aeron Cookbook is ready for download! Giving an intro of Aeron to new/intermediate users through in depth guides & diagrams, it's already available online. Here is a portable, downloadable version to access it offline. eu1.hubs.ly/H04k2f70 #TradingTech #Messaging #Cluster
13
1
29
3,957
WELCOME TO THE ENGINEERING ROOM! The Code That Builds HUGE Trading Platforms | Frank Yu In The Engineering Room Ep. 18 โžก๏ธ youtu.be/KG6bPVWBl5g Thanks to Frank for joining me! ๐Ÿ‘ #SoftwareEngineering #SoftwareDevelopment
11
2
52
24,976
You forgot to enable GC logs for your application in production? don't panic! From a local shell, use : jcmd <pid> VM.log what=gc* output=gc.log For more info see blog.arkey.fr/2020/07/28/embโ€ฆ #protip #JVM
1
9
55
5,603
Java 20: Colossal Sparse Memory Segments Learn how to create a 64 TiB memory segment on a regular laptop using project Panama in Java 20. #java minborgsjavapot.blogspot.comโ€ฆ
1
22
64
12,571
Well done Scarborough but shouldn't we extend the same understanding and kindness to the thousands of autistic people in our community (including my daughter) who find the ever increasing use of fireworks really distressing?
2
321
Daniel Shaya retweeted
The beauty of an event log.
This Post is from an account that no longer exists. Learn more
1
11
1
60
Daniel Shaya retweeted
New Post: Using Vim as a Diff Tool buff.ly/3yPLenj
2
4
"There is nothing so useless as doing efficiently that which should not be done at all." โ€“ Peter Drucker
3
125
3
539
"SOLID Principles With (almost) Real-Life Examples in Java" betterprogramming.pub/solid-โ€ฆ
1
40
178
Daniel Shaya retweeted
"The JavaSpecialist(s)"--an airhacks.fm episode with @heinzkabutz about software quality, teaching and learning Java, Java's performance ...and a bit of Snooker is ready to listen: adambien.blog/roller/abien/eโ€ฆ #airhacks #java #podcast
6
14
+1!
Not only did I learn important things from the content, as a speaker I learnt a lot from the delivery as well
1
Project Panama, Unsafe, and practical examples for direct shared memory between processes in Java
3
21
Daniel Shaya retweeted
I have updated my Java tutorial to list what is new in Java 17: tutorials.jenkov.com/java/inโ€ฆ #Java #Java17
5
26
95
Replying to @PeterVeentjer
async-profiler already integrates with JFR out of the box to produce a combined recording, i.e. normal flight recording with execution samples collected by async-profiler. Check out 'jfrsync' option
1
4