Hacker News new | ask | show | jobs
by pbreit 3585 days ago
Caveat: novice programmer here.

Even Angular is still difficult for me to grok and sometimes I wonder if stuff that comes out of Google "suffers" (for me) from Google having unlimited resources and employing superior engineers? Would Google have a difficult time empathizing with "average" programmers with limited resources?

6 comments

I think Angular takes a considerable amount of time to wrap your head around. I think the largest issues that you will most likely run into is an ng-repeat with large collection of objects (which, due to dirty checking, may impact your site), memory leaking, and using multiple controllers or controller as syntax.

I used Mithril for a while and it opened up my eyes as far as thinking "functionally"; it makes your code easier to understand and extend.

If you use filters functionally with Angular, you can get great performance on large collections in a ng-repeat. Likewise, if you understand prototypical inheritance, it will make working with multiple controllers/states a lot easier.

I really enjoy developing Angular, but it took a lot of time to really process. jQuery just works out of the box, but for me, it feels like it is more for little snippets of codes across various pages. It just depends on what you are trying to do.

If angular were produced by superior engineers, it would be easier, not harder, for lesser engineers to grok it.

The problem is not with you, but with a those that made angular more complicated than it could have been.

For Angular 1, I'd recommend sitting through Dan Wahlin's hour intro to Angular. Don't code, just watch. It really helped me get that initial chunk of knowledge in my head.

https://www.youtube.com/watch?v=i9MHigUZKEM

I think the reason Angular2 might be difficult for a novice programmer is because of the nature of problems it tries to solve. It is an MVC framework with an emphasis on dependency injection and test-driven development. A novice programmer probably has at most a limited understanding of MVC, dependency inversion, and TDD, so you would need to learn more about those concepts to even work through the tutorial. Taking that into account, in may or may not be the right tool for the job depending on the problem.
I've run into a lot of people who found angular hard to pick up; it's not just you.

One of them now works on the React team, and I found it pretty easy to pick up from the official docs: https://facebook.github.io/react/ . I recommend not bothering with stuff other than the base react library at first (although jsx/babel is nice); you can use react without it and potentially learn that later.

It's also totally valid to just start with basic js/html/jquery. The Mozilla's MDN docs for most html/js things are decent, and jQuery's api docs are pretty good in my experience.

Angular is difficult to grok because it makes computer programming second class and limited to what you can cram into HTML tags.

Angular isnt really a Google product - Misko Hevery and another guy (both Google SW Engineers) developed in their free time.

Dart is a Google product and I would say is much easier to grok than Angular.

> Angular is difficult to grok because it makes computer programming second class and limited to what you can cram into HTML tags.

...say what? I've done a lot of work with Angular, and a lot of work without it, and it's possible that I might agree with what you're saying here if I understood it, but I don't. Can you elaborate?

I'm just saying that everything that Angular makes convenient via the hints it throws in HTML is handled behind the scenes by calling Javascript libraries.

I would much rather the QooxDoo approach of writing apps in pure Javascript and using Javascript libraries instead of the HTML/JS/CSS soup that Angular tries to serve up to me as convenience.

It might be more convenient for someone who cant write computer programs. But for me it insults my ability to read, extend and use well-documented APIs.

> I'm just saying that everything that Angular makes convenient via the hints it throws in HTML is handled behind the scenes by calling Javascript libraries.

Well, of course, but I'm not sure why this would be an issue. Earlier, less well implemented versions of Angular sometimes produced headaches this way. Current versions really don't. Considering the amount of boilerplate I find this saves me having to write and maintain - thus freeing me to spend effort on those parts of my application which are essentially complex, not just accidentally so - I find Angular a pretty clear win there.

Of course, maybe I just can't write computer programs, and my now almost two-decade-long professional career doing so is simply a preposterously unlikely fluke. Who knows?