Software is hard. And only getting harder.

Developers are faced with a mountain of complexity, and it's only getting worse.

Photo by Chris Ried on Unsplash

When we decided to build Flightdeck, our internal developer platform based on Backstage, we did so knowing that developers today face a mountain of complexity, even for the most simplistic of applications. Between an ever-growing list of dependencies, deployment environments, and even third-party services, it is increasingly difficult for individual developers maintain a complete view of their software estate.

And, this problem is further compounded once team dynamics are introduced. Questions like "how is knowledge transferred?", "what happens when a maintainer leaves the organization?", and "how will be bring new developers up to speed quickly?" are inevitable.

While this phenomenon was something we were already keenly aware of, it has been an acute concern of mine in particular, and especially recently. Even as the creator and lead developer of our platform, there were many times where I had forgotten what I had done, or even how things worked as complexity increased. Keeping track of repositories, systems, and tools was a constant struggle.

How complex was it though? I decided to take a look. I knew that our platform had a handful of frameworks, dozens of managed services, thousands of dependencies, and hundreds of thousands of lines of code. (This doesn't even include the massive Backstage code base!)

craig@bol:~/src/github.com/arctir/meta$ ./cloc.sh 
    1175 text files.
    1099 unique files.                                          
     180 files ignored.

github.com/AlDanial/cloc v 1.90  T=0.79 s (1314.0 files/s, 270729.7 lines/s)
-------------------------------------------------------------------------------
Language                     files          blank        comment           code
-------------------------------------------------------------------------------
Go                             254          15884           6362          66757
JSON                            44              1              0          39322
YAML                           220            677           1648          38584
TypeScript                     189           1423           2735          11804
JavaScript                      96           1157           1368           6850
JSX                            103            537            161           6551
HCL                             71            805            424           4033
Python                          14            248            124           1171
Markdown                        13            513              0           1086
SQL                              5             15            115            697
HTML                             3            463              0            472
make                             7             86             35            337
CSS                              6             58             26            222
Jinja Template                   1              8              0            129
TOML                             1              7              1             54
Dockerfile                       2             17             13             30
Bourne Shell                     3              4              0             21
SVG                              1              0              0             10
XML                              1              0              0              3
-------------------------------------------------------------------------------
SUM:                          1034          21903          13012         178133
-------------------------------------------------------------------------------


What will this look like as we grow our team? In prior roles, some of the biggest roadblocks were directly related to the complexity of the code base, discoverability of the environment, and organizational changes.

The only way that this is remotely manageable is with new, modern, cross-cutting tools. We are dog-fooding Flightdeck because, like you, we want to be more efficient with how we deliver software; making it simple for new developers to come onboard and providing meaningful insights to those who have been around for a while.

It's our head-up display. Everything we need at our fingertips.

Even though we are still small we aren't alone in these problems. Development teams often have huge numbers of repositories, massive numbers of dependencies and while we, as an industry, understandably care about the security implications of these issues, we never fully focus enough on the impact to developer experience that this causes.

We are changing that.