I had a program like that once. It was sophomore
year, and I was in Software Engineering
. We designed a distributed networking protocol
, with the correct routing algorithms
and such. It worked great on the small scale tests. Two clients, one router, one master domain authority
. It all worked great.
Now we had to add more clients.
I had a horrid revelation
at that moment. It just can't work
. The system is no where NEAR scalable. It would grow exponentially in size until it ate and destroyed all of the WPI
network. We thought about it with only two nodes in mind, but 50 interlinked nodes would cripple the hardware and make it impossible
to use. The beast of a software tracking program would be grossly inefficient even if we had all the memory in the world
So the next day in class, where we had to release a beta
of our "product" to the rest of the class, I, as the leader of the group got to inform the class that "the program
does not run within the constraints of the school network
", and that it still needed "Some performance
work". It was a mixed moment in my life, filled with the pride that a tank engineer
has when his or her baby first demolishes a bus
, but also filled with shame as I could not control the code I was writing.
To this day, I will always remember to include scalability
in my designs.