TE
科技回声
首页24小时热榜最新最佳问答展示工作
GitHubTwitter
首页

科技回声

基于 Next.js 构建的科技新闻平台,提供全球科技新闻和讨论内容。

GitHubTwitter

首页

首页最新最佳问答展示工作

资源链接

HackerNews API原版 HackerNewsNext.js

© 2025 科技回声. 版权所有。

Ask HN: Breadth vs. Depth in Learning, What to Aim For?

9 点作者 dprophecyguy超过 7 年前
Hey everyone, This is Vijay. I am a junior developer and I start working for around 6 month ago. Here at my workplace they are using Angular and Node stack along with Mysql. As I have told that I am working here for 6 month I have been exposed to all of these three technologies and I am learning all three at once. I worked on backend for 3 months then I switched to front end. Also a little bit of mysql for defining views to fetch different type of data that consists of joins and aggregate.<p>I am being careful to learn about all important stuff as in authentication and authorization, defining caching layer at backend side.<p>To learn good practices for good performance UI, where I have realized we have messed up our front end codebase a lot right now. Because we don&#x27;t have any senior I can ask questions too. All I could have counted on was myself and all the things I can explore. After 6 months of learning and trying all these things have now started to make sense. Why codebase layout is super important, why MVP, MVVM and almost anything sucks.<p>I really feel afraid of telling my manager to use any given kind of layout for our code because I can&#x27;t imagine in my head how a given methodology will help us solve make sense of our code in a good way. So I think I have a lot of questions right now?<p>1 Am I going on a right path where I am giving breadth of topics more preference over depth.<p>2. How to look at your codebase both backend and front end lay it out in a way that feels natural, what I meant is MVM and MVVM is kind of messed up when you have lot of things to put around. My boss is saying to turn monolith app into micro services and to use dockers and all which I still have to learn. So any kind if help would be appreciated.<p>Any kind of advice that you can give a 6 month old developer on which path to follow to become a world class problem solver. Thank you. I know it&#x27;s long but thanks for reading till now.

6 条评论

muzani超过 7 年前
Programming via practice is actually a very inefficient way of learning to program. It&#x27;s sort of like a professional basketball player learning by playing matches. It wears people out fast and teaches them very little they don&#x27;t know.<p>To truly improve, they have to train properly. A basketball player trains their dribbles, running, shots, peripheral vision. A programmer has a lot of other small things to train - algorithm, optimization, passing around bits of code from one class to another, or disciplining themselves to stay in flow.<p>My training routine breaks things down into 4 levels:<p>1. Understanding the concept. Also includes knowing how to google certain types of code, knowing what to look for, what to copy.<p>2. Being able to build it without any hints.<p>3. Feeling&#x2F;instinct. You no longer have to think. Not only that, but you can immediately &#x27;feel&#x27; a mistake or error, and where.<p>4. Potency. You do it faster and smaller. There&#x27;s no end to it.<p>The people who are deep in level 4 are invisible to those at level 2 or less. Sometimes it seems like magic, sometimes it seems like incompetence or stubbornness.<p>Creativity only happens when you have many parts at level 3 and above. You have to internalize&#x2F;feel the parts, before you can code very effectively. Then when you have a problem you&#x27;re trying to solve, your brain just sorts it out in the shower.<p>But with programming, once you code something once, it becomes a function. Many people don&#x27;t solve the same problem twice. It gets copied and pasted. And thanks to Stack Overflow, it&#x27;s possible to go 20 years of experience without ever reaching level 1 skill.<p>This is not necessarily a bad thing. This means you can ignore parts like memory management or effective sort algorithms and focus on the important things. It&#x27;s up to you to figure out which skills are really core to your ambition and focus on that.
cimmanom超过 7 年前
A lot of juniors make the mistake of choosing breadth first. But there&#x27;s so much breadth involved in making a modern web app that if you go for breadth it&#x27;ll take you a decade to get to be good enough at anything for someone else to trust you to do it without micromanagement (i.e. To be mid-level instead of junior).<p>At the beginning you need only as much breadth as is required to survive with your stack. It&#x27;s ok for entire other sections to be black boxes (&quot;we get requests from the front end in JSON and we process the request this way return other JSON and somehow &lt;hand wave&gt; it gets rendered&quot;).<p>After that you want to work on depth until you can work on a single part of the stack (pick back end, front end, or sysadmin&#x2F;ops) without help or supervision. To get there, you may need to even focus on understanding one site feature and its technologies and concepts at a time. You may need to spend multiple years on this first portion of the stack before hitting mid-level competency with it. That&#x27;s totally normal.<p>Once you&#x27;ve gained the competency to work independently in one area, you&#x27;re ready to increase your breadth again: pick another part of the stack and do a deeper dive there.
matt_s超过 7 年前
It sounds like you have gone with the breadth approach so far. Maybe go deep on a couple of things where there are problems at work.<p>You mentioned &quot;little bit of mysql&quot; dive on that a bit more. There is a huge amount of tuning that can be done on SQL queries to make them faster. If you have small data sets that are expected to grow over time, they may be fast now but will slow down. This is usually the biggest bottleneck on any web app.<p>In the early, wild west days of the internet, people stuck SQL code, Javascript, CSS and HTML into one PHP page (or Perl script or whatever). Good idea or bad idea? Those types of things have driven a need for separation of concerns. That is why MVC, MVVM, etc. have come about. Usually you are stuck with whatever design pattern your tooling uses.<p>Maybe have a discussion with your manager about what is driving the need to use micro services and docker containers? Typical useful answers are scale, traffic and reuse. If you get more of a blank stare or jumbled type of answer &quot;monoliths are bad&quot; then it sounds like someone wants to get buzzwords on a resume.
itamarst超过 7 年前
Part of the problems you may be suffering from is a system that is overcomplicated for no good reason.<p>1. Unless you have a truly massive number of users, or a very interactive UI, chances are you don&#x27;t need Angular.js at all. Just node should suffice, perhaps with something like <a href="http:&#x2F;&#x2F;intercoolerjs.org&#x2F;" rel="nofollow">http:&#x2F;&#x2F;intercoolerjs.org&#x2F;</a> if it&#x27;s interactive enough.<p>2. Unless you have large number of developers, chances are you don&#x27;t need microservices.<p>So maybe instead of thinking about breadth vs. depth, think in terms of simplicity vs. complexity— given what you now know, how would you <i>simplify</i> the system you have now? What can you take out?<p>(Organizational constraints might mean you can&#x27;t actually simplify, but it&#x27;s a useful learning exercise.)
eb0la超过 7 年前
Read code. In paper.<p>Do not clone a repo, compile it, and run it.<p>Get code about something you want to learn about, or code written by someone you admire, make a <i>printed</i> copy, and read it <i>carefully</i>.<p>Follow how stuff is done. Try to understand the hows and whys without a compiler at hand. Without documentation.<p>Then, start looking for stuff you don&#x27;t know how it works and consult documentation only after you cannot figure out what&#x27;s happening.<p>I learnt a lot of C++ and Win32 this way from Microsoft Systems Journal (a long time ago).<p>And believe me, it works.
danschumann超过 7 年前
If I were you, I&#x27;d just start a weekend project and see where it leads you. On a weekend project, you can make any change you want without anyone telling you not to. You&#x27;ll find what you like.<p>Another great technique is looking back on your life and find some peak experiences. &quot;Start with why&quot; is a pretty cool course to go through, but you could also just reflect on your own. Find your best experiences, and do similar things.
评论 #16389906 未加载