TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Do Not Learn Frameworks – Learn the Architecture

187 pointsby skazka16about 10 years ago

26 comments

ef4about 10 years ago
The author is only partway through the learning process. There is a circular progression.<p>The total newbie just &quot;learns the framework&quot; and is helpless to debug through leaking abstractions. I agree 100% that you don&#x27;t want to be stuck there.<p>So eventually she decides to just compose her own architecture. Now she understands all the pieces. But as she matures further as a programmer and architect, she starts to see all the myriad ways that her bespoke architecture is not as good as the more standardized alternatives.<p><i>It can&#x27;t be</i>, because all the people spending their time on bespoke solutions are solving the same problems over and over again separately, whereas the people working on shared solutions keep building off each other. Over the long-run it gives a massive quality advantage to the shared solutions.<p>Her journey is complete when she circles back around and can pick up somebody else&#x27;s framework with shared community conventions <i>and still understand all the pieces</i>. She&#x27;s not intimidated by the prospect of debugging down through layers of abstraction. Because she&#x27;s good enough to write a framework, <i>she doesn&#x27;t have to</i>. She can just contribute to one, and benefit from everybody else who&#x27;s also contributing.
评论 #9314682 未加载
评论 #9314672 未加载
评论 #9314882 未加载
评论 #9316372 未加载
评论 #9315325 未加载
评论 #9315478 未加载
评论 #9314764 未加载
xtrumanxabout 10 years ago
Let&#x27;s say I&#x27;m building a web app and develop my own patterns and practices. Obviously it&#x27;ll be a bad idea to have everyone working on my project create their own patterns and will make sense to mandate everyone follow one set of patterns so we don&#x27;t have to keep context-switching whenever we&#x27;re working on a different part of the app.<p>To an outsider who needs to now contribute code to my web app, what&#x27;s the difference between following my patterns and following a framework&#x27;s patterns if a framework was used instead?<p>What&#x27;s good about most frameworks is the fact they come with documentation, tutorials, tests and all that good stuff so someone new to the framework can quickly get up to speed. The author even admits to having people have problems understanding his architecture.<p>My advice to the author is don&#x27;t worry, people will eventually get better. JavaScript seemed inaccessible to a lot of people (including myself) until jQuery came along. The more jQuery code I wrote and gained more experience in JavaScript, the more I learned how little I needed to use jQuery to accomplish a ton of stuff. Backbone, Angular and other frameworks will probably have the same effect on people some day.
评论 #9314494 未加载
评论 #9314403 未加载
shawn-furyanabout 10 years ago
The biggest counterpoint that I can think of to actually putting your own framework into production, especially if it&#x27;s a one man&#x2F;woman show, is security. A large open source framework will have implemented and fixed a ton of security blunders which you will not have. It doesn&#x27;t really matter how encyclopedic your knowledge of software architectural patterns is, even though design is important for system security, there is a large component that is case-by-case attack mitigation. Your almost always going to be better off with a security conscious framework than with an ad-hoc framework.<p>Another way to look at it is that every production framework needs a subset of its development team that is really knowledgeable and paranoid about security, proactively watches for new attacks, and which can very quickly roll out effective mitigations. If you don&#x27;t have at least one person on your team that will handle this role, then you&#x27;re better off using a security conscious framework, and if you only have one, then they&#x27;d better be very good.<p>Otherwise, sure, make your own framework to learn architectural principals, to improve your ability to digest the architecture of production frameworks, and to improve your ability to extend the framework into areas that are unique to your use case. Just keep it out of production.<p>[disclaimer to avoid discussion forks: for this comment, I&#x27;m assuming that the framework is being used for non-trivial systems, if what you&#x27;re doing is trivial, then you may not need a framework at all, bespoke or otherwise. I&#x27;m not particularly interested in the question of what constitutes a non-trivial system. Set the bar wherever it makes sense to you to consider significant code reuse imperative.]
fskabout 10 years ago
&gt;Do I use frameworks? Only when it&#x27;s not required to maintain a product in future.<p>I&#x27;ve been on the flip side of this too many times. Some outsourcing company developed a product using a framework (usually on a fixed-price bid), which enabled them to ship something that sort of mostly worked so they could get paid. Then, I&#x27;m stuck supporting and maintaining it, and it takes 3x-5x longer than it should because of the poor framework choice and poor usage of that framework.
评论 #9317218 未加载
maxpupmaxabout 10 years ago
So this is neat and all, and I&#x27;m all about learning more about whatever... but what does it mean to learn the architecture? It&#x27;s not stated in the article where this is useful to me personally (in terms of experience), and I assume for others like myself. What does it mean to write something in javascript with &quot;module libraries&quot; only? That doesn&#x27;t mean anything to me.<p>Does anyone have specific recommendations on how to pursue what the author suggests?
评论 #9314463 未加载
jmatsushitaabout 10 years ago
A lot of folks here ask how to learn architecture. I really love this intro statement from &quot;The Architecture of Open Source Applications&quot;[1] and higly recommend reading the book!<p>&quot;Architects look at thousands of buildings during their training, and study critiques of those buildings written by masters. In contrast, most software developers only ever get to know a handful of large programs well—usually programs they wrote themselves—and never study the great programs of history. As a result, they repeat one another&#x27;s mistakes rather than building on one another&#x27;s successes.&quot;<p>[1] <a href="http:&#x2F;&#x2F;aosabook.org&#x2F;en&#x2F;index.html" rel="nofollow">http:&#x2F;&#x2F;aosabook.org&#x2F;en&#x2F;index.html</a>
prank7about 10 years ago
I have been doing web development for last 1 year. Can someone recommend a resource to learn Architecture?
评论 #9316336 未加载
评论 #9316968 未加载
felipellrochaabout 10 years ago
I generally agreed with the article. I think people concentrate too much on learning the specifics of frameworks, and forget about the underlying ideas behind the frameworks itself.<p>I do think, though, that he wrongly blames frameworks for the bad code people usually write. It doesn&#x27;t matter if you&#x27;re writing homegrown code, you still have to write a framework of some sort around it in order to get any work done. I think that the front end frameworks currently available out there all are really bad solutions for what they purport to solve.<p>It&#x27;s like you&#x27;re promised a cutter that cuts cubes, when you need your cube to fit a hole in a shape of a circle. Even after you&#x27;re done using the cutter, you still need to cut around the edges to make it fit, and in doing so, you probably could&#x27;ve just skipped the first step in the first place.<p>Instead of blaming the tool, the blame should be placed in the abstraction. To keep with the analogy, if I had been handed a circle cutter, I could probably fit my shape in the hole with no problem. Better yet, if I was able to choose between a square or a circle cutter before I start a job, that&#x27;d be perfect.<p>As it currently stands, Backbone did a great job at separating the concerns of a web app, but its rendering methods resort to too much thrashing of the dom. Angular attempted to solve the thrashing, but, along its way, it ended up lowering the divide between logic and presentation via its assortment of ng attributes. I haven&#x27;t tried yet, but I have high hopes for React and its solutions.<p>The hallmark of a great framework is one which clearly defines what its one task will be and executes it beautifully, and simply. Allowing newcomers to start from the top, and work their way to the bottom without much effort. Since none of the javascript frameworks out there are of high quality at this point, most of the code written in those frameworks will just not be very good, and it&#x27;s ok for right now. That&#x27;s the learning process that the industry goes through every time a new technology is introduced, and I have high hopes that sometime in the next couple of years a framework will come out that will set the tone for the years going forward.
aikahabout 10 years ago
This is a false dichotomy but I&#x27;m not surprised, especially in the js world. JavaScript is so little opinionated that developers refuse to read each others code, because it&#x27;s usually not written in the way they think js should be written. And soon it will be worse with classes,proxies and all the python like &quot;ninja&quot; features of ES6.<p>It&#x27;s not about &quot;not using framework&quot;,it&#x27;s about reading the source of anything you&#x27;re going to use and vet it. Obviously that&#x27;s the last thing js developers like to do.<p>That&#x27;s why I like Go by the way.The language is so limited anybody with a minimal understanding of Go can read it. No fancy stuff,just ifs,functions and for loops.<p>Angular is what, 10000 of codes with the comment striped at most. Well you&#x27;ll learn a lot of &quot;architecture&quot; just by scaning it.<p>Don&#x27;t listen people telling you not to use frameworks,where do you think their skills come from,how do you think they earn money,by spending time building their own undocumented ,sub tested ,full of cross site scripting exploits, frameworks again and again? bullshit.<p>But use libs and frameworks you&#x27;re ready to spend time debugging. Thus something with a source code YOU can understand.<p>I agree however, that angularjs &quot;check what error codes means online&quot; instead of explaining them in the console is terrible.<p>I say it again, want to be a great dev? read source code.You&#x27;ll learn much more about programming because the practice is right here in the source, than with crappy article like the OP.
评论 #9317020 未加载
fskabout 10 years ago
The problem is that job ads always say &quot;We want experience in X, Y, Z.&quot; They never say &quot;We want someone who can code without a framework, and could learn whatever we&#x27;re using quickly.&quot;
评论 #9314326 未加载
评论 #9314312 未加载
评论 #9314454 未加载
tracker1about 10 years ago
One thing that I think is especially true with this mindset, is that being able to pull in just about any utility via npm has really changed the landscape for JS development.
swalshabout 10 years ago
I&#x27;m going to admit, I didn&#x27;t finish the article. So, I apologize if my point is useless. I&#x27;ve done plenty of web development before Angular&#x2F;backbone etc. The productivity that I&#x27;ve experienced after becoming proficient in these frameworks more then makes up for any debugging issues. My other experience is that though sometimes it may take a tediously long time to figure something out, once you get it working... it just works.<p>Seriously, using knockout js recently. I completed a project, and all its mile stones in 2 weeks. We had 6 months planned. I completed the whole project in 2 weeks. When I was done, there were NO bugs under priority 4. In the 7 years of development before that, I have never experienced such a pleasant development cycle. I&#x27;d kill someone if they ever took this new tool away from me.
评论 #9315103 未加载
评论 #9314699 未加载
评论 #9314793 未加载
asgard1024about 10 years ago
I think patterns are stupid idea. You bother learning a way of doing things (the <i>pattern</i>), and you bother all you colleagues learning that way of doing things. OK, cool, that sounds good.<p>But you <i>never</i> bother to teach it the computer! The computer should understand the pattern as well, in form of some abstraction. Because now you force yourself and others to recognize pattern every time you need to use it (either read or write it in the code). That&#x27;s ridiculous.<p>In some languages, patterns are commonly expressed via macros. Instead of learning patterns, you learn set of macros. That way, even computer understands those patterns and it is clearly obvious from the code what pattern was used, you don&#x27;t have to translate code back to patterns. But the macros are not the only way to do it.
评论 #9314858 未加载
mgobabout 10 years ago
Any recommendations for learning web app architectures for an otherwise experienced back-end dev?
评论 #9315014 未加载
phatbyteabout 10 years ago
I agree with the author. As a self-taught developer I have fallen into the &quot;learn frameworks&quot; trap in the past, but once I started to really study computer science, SOLID practices, patterns and so on...oh boy what a eye opener.
j45about 10 years ago
One of the best lessons I&#x27;ve learnt from mentors is that meaningful architecture that is even a little clever will most often make more of an impact on a project than any particular framework or language, because many are reasonably capable.<p>Architecture, and the approach to, and through it, is one of the most valuable (and transferable) skills as we spend our lives guaranteed to use new tools that somehow need to do the same things, more efficiently.<p>Looking at any problem and synthesizing it down to it&#x27;s architecture before frameworks and language is a fun and useful exercise.
tehchromicabout 10 years ago
Or learn the architecture by learning lots of frameworks
spectrum1234about 10 years ago
Typical frameworks will soon enough become less popular as &quot;modular&quot; frameworks are beginning to surface. See Aurelia or Este.js or even web components.<p>Frameworks are only helpful when modules can&#x27;t easily interpret data from IO all the way to metal. The said above modular frameworks can do this and will begin to change the SPA game completely. Exciting times ahead.
评论 #9314418 未加载
decentralityabout 10 years ago
Wondering where jQuery fits in the author&#x27;s mind right about now.<p>Yes, it&#x27;s a &quot;library&quot; but come on, all the framework versus principles narrative applies with that too.<p>Directly interacting with the DOM without abstraction seems way too risky, in exchange for some bloat.
评论 #9314629 未加载
评论 #9314893 未加载
tuxabout 10 years ago
Good article, I agree with learning architecture first. No one should start learning by using framework first. But don&#x27;t forget about &quot;loosely coupled&quot; frameworks like PhalconPHP. It allows you to code your own without using pre-built one.
评论 #9314634 未加载
reddybabout 10 years ago
&quot;They are the guys who have been in the industry for 10 years, just like me, but they studied specific solutions rather than principles.&quot;<p>I couldn&#x27;t agree more with that.
task_queueabout 10 years ago
This blog slows to a crawl on a 4 core phone with 3 GB of RAM.<p>Something about not using javascript heavy frameworks for a site that displays articles.
thegreatpeterabout 10 years ago
TLDR; You start out as a noobie, you get better and learn from your mistakes.
symlinkkabout 10 years ago
Ok, so I want to &quot;learn architecture.&quot; How do I do that?
评论 #9315023 未加载
knownabout 10 years ago
Best advice I&#x27;ve seen for a longtime;
jbejaabout 10 years ago
I agree with and I want to add that using this approach is more effective is you are using statically types language, which can set upon more rules and constraints to the architecture vision; design patterns and frameworks can only get you so far