I have been assigned to a project where the end-product is a website as a music
ID: 652381 • Letter: I
Question
I have been assigned to a project where the end-product is a website as a music community. So it's uploading of music, sharing it amongst other users, listening to music from the website and so forth. It's a project that will not cross the borders of this nation, that's certain, so the scaling part is really not interesting.
At the moment we have ~12.000 users total, so it almost nothing.
That being said, for me it's a really simple and straightforward product. But we all know that simple can be ruined by a lot of things.
My problem with the codebase is the many obscure layers. We start of by loading a "shell" and from there we do like this:
HTML/AngularJs -> TypeScript -> Breeze -> WebApi/OData -> Entity Framwork
So really, my question is whether it's just me or if I am correct in my mind when I think this is totally over-architectured. And has someone else has seen an architecture like this and would you agree that cutting away the typescript + breeze abstraction would be the way to optimize the architecture ?
Having seen something like this I have lost some faith in TypeScript, because it is really hard for me not to see it just an abstraction between connecting some frontend framework and some backend framework, instead of them just "talking together" with TypeScript in the middle.
Explanation / Answer
It's dangerously easy as a programmer to start thinking that every project you encounter could and should be done better (read: rewritten) because it doesn't correspond to your vision. We've ALL been there.
You look at code and your mind just goes into "what's wrong with this"-mode, instead of focusing on what's right about it.
If you start plucking away at the components, how much time will you lose? Time you were assigned to spend on the actual assignment.
Do you have any guarantee that removing components X or replacing them with technology Y will increase performance, scalability, maintainability?
It seems to me that a web application of this nature could certainly benefit from most, if not all, components it appears to have: O/RM, caching strategy, strong typing, REST capabilities, some mobile-ready features, ...
The pertinent question is not "should this project be made up of components X, Y and Z but rather: was it well written? Does it make sound use of said components?
You didn't mention for how long you have been and will continue to be working on this project, but to me an architectural redesign or component swap-out should be a last resort after you have thoroughly examined the application, made it your proverbial home (and this preferably takes a lot of time and research), whereas it sadly tends to be out with the old, in with the new.
So, in the end, it's not up to us to decide but up to you. Just be careful that if you decide to go ahead and redesign / swap-out / rewrite, you do it for the right reasons.
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.