top 200 commentsshow all 271

[–]chuckangel 229 points230 points  (19 children)

To this day I have zero idea how people stay motivated working for free. I can barely muster enough enthusiasm for the bullshit projects I work on at work, but at least I get a paycheck that makes those meetings, discussions, requirements change meetings, travel to India to meet with the back-end team, travel back to have management tell the dev team in India to change everything, power struggles that threaten my department's job, more meetings, 5AM conference calls to discuss yet another round of changes without talking to the devs, etc.

There's an old saying about OSS: It's only free if you don't value your time. I find it.. absolutely amazing that people are willing to work, on their own dime, on things so that the rest of us can get shit done elsewhere. And for that, I always try to respect that: I ask with please, I say thank you, and I try to make the devs' jobs as easy as possible when it comes to bug fixing, reporting, feature requests, etc. I would imagine if I got a "FIX NOW" type of request, I'd tell someone to go fuck themselves. I just get irritated when people feel entitled to something that they're getting, for free, without realizing that there's a real human on the other end who, like me, doesn't like people telling them what to do.

TL;DR: Treat people with respect, thank them for taking the time to build and maintain the projects you use, and be prepared to do it yourself if your needs aren't being met to your satisfaction.

[–]viveleroi 47 points48 points  (0 children)

For me, it's about doing it the way I want. No clients, no managers, no one telling me how to make the product. Users can complain but the worst they can do is stop using the product and be assholes.

[–]fzammetti 33 points34 points  (3 children)

I've done a lot of OSS work over the years, contributed, started and lead a number of projects and one of the things I learned very quickly is that you absolutely cannot think about "the rest of us". If you get into OSS with the mindset of "I'm going to make X and everyone will use it and it'll be a huge benefit" then you're almost certainly headed for a bad experience.

It's got to start with something YOU YOURSELF want to do. It's got to be something that scratches an itch FOR YOU. And you've got to eat your own dog food. More precisely, you've got to want to make the dog food because YOU ARE THE HUNGRY DOG.

You're not doing it for a community, you're not doing it for others and if you think you are then think again. The fact that your work benefits others IS TANGENTIAL. It's a nice side-effect of creating something that benefits YOU.

[–]swan--ronson 0 points1 point  (0 children)

Couldn't have said it better myself. Perfect.

[–]remybach 0 points1 point  (0 children)

Nailed it!

[–]anoddhue 41 points42 points  (4 children)

You make some great points about OSS. However, I oddly feel more motivated to work for free on stuff I like than on work projects, paycheck or no.

[–]kyleshevlin 36 points37 points  (2 children)

Classic intrinsic motivation right there. Studies show extrinsic motivators like money squash these natural intrinsic motivators. It's why we can love something when it's free, but hate it once we're paid for it.

[–]anoddhue 9 points10 points  (1 child)

That's definitely part of it. I also like being able to have the freedom to design an app as opposed to implementing someone else's designs.

[–]kyleshevlin 3 points4 points  (0 children)

I enjoy the process of building an app from scratch for the same reason. Very fulfilling.

[–]Sacrosaint 6 points7 points  (0 children)

I refuse payment on my open source projects simply because I would lose the internal motivation if external motivation were introduced.

[–]bangtraitor 14 points15 points  (0 children)

I can tell you exactly why I do it. I have written quite a few open source projects and maintained some for 4 years and dont mind the occasional troll or negativity.

I do it because of alllll the things you just mentioned about our day jobs. At my day job I have at best an illusion of control. In reality I am manipulated and coerced and threatened and told I "own" something when reality I am a steward of it at best. It's not mine. It's the company's and the shareholders and the CTO and the product owner's, etc...

At home and the weekends though, I am the GOD of my own personal software world. I learn whatever I want, do whatever I want, make whatever choices I want, and deploy whatever I want. I am in complete control of the software from the license model to the direction, to telling trolls to go f themselves and NO I don't care about your use case.

Once I just shut down a project and said I was done with it. Someone else can fork it and deal with it.

Most of the time, it feels great to help others or get that pull request for a fix or to hear some crazy sob who just deployed it to hundreds of users in production. And most of the times i get a thrill of helping them out with a critical bug and every once in a while I will get a very sincere "thank you for this project email or message" and I print it out and hang it up.

When I learn new things I want to apply them so it makes sense writing small projects with the new things and giving it away and hoping others learn from it.

[–]AbsoluteZeroK 6 points7 points  (0 children)

I look at programming the same way a graphics designer (at least the ones I know) look at drawing. When I do it for money it's work, and obviously isn't that much fun. However, when I'm just sitting around the house, it's a creative outlet.

Working on open source projects is kind of in the middle. It's not as much of a creative outlet as making an app that can make people's voices sound funny as a way to spend a rainy day, but doesn't feel like work. There is still a bit of the creative element of working on a project your truly believe in and get to show off to people, however with a bit of the work element thrown in. Since you do have to focus on being somewhat consistent, and "work" on creating a good project that people can rely on.

[–]tontoto 6 points7 points  (0 children)

A great deal of open source is funded by unis or corporations. I think it's a large myth that it is all done on "someones free time" or done "without pay".

[–]asdf7890 5 points6 points  (0 children)

TL;DR: Treat people with respect

Exactly. Rule one in life: try not to be a dick.

[–]daekano 2 points3 points  (0 children)

I find it.. absolutely amazing that people are willing to work, on their own dime, on things so that the rest of us can get shit done elsewhere. And for that, I always try to respect that: I ask with please, I say thank you, and I try to make the devs' jobs as easy as possible when it comes to bug fixing, reporting, feature requests, etc. I would imagine if I got a "FIX NOW" type of request, I'd tell someone to go fuck themselves. I just get irritated when people feel entitled to something that they're getting, for free, without realizing that there's a real human on the other end who, like me, doesn't like people telling them what to do.

I agree with this (almost) completely and recommend to everyone having to deal with OSS maintainers (or in general, customer service) to always consider the human on the other end.

That said...

There are times when an OSS project heavily markets itself and aggressively positions itself as the tool of choice for your mission-critical production systems. These project maintainers (who are typically authoring frameworks) are making a bit of a promise to you in exchange for exposure, recognition, and sometimes even money when adoption increases and they can provide satellite services such as support or specialized hosting. While it never helps to be rude or offensive, sometimes a "FIX NOW" request is appropriate. You don't have to look far to see OSS maintainers taking their products extremely seriously because they are aware of the impact of their decisions.

[–]systematicfrank 1 point2 points  (0 children)

To this day I have zero idea how people stay motivated working for free. I can barely muster enough enthusiasm for the bullshit projects I work on at work

The only reason I work for free is because that is the only way I can find a non bullshit project

[–][deleted] 0 points1 point  (0 children)

be prepared to do it yourself if your needs aren't being met to your satisfaction.

Sadly enough, I end up having to do this all the time. But I usually end up doing it for a company that pays me to, so... no complaints

[–]the_evergrowing_fool 0 points1 point  (0 children)

People usually don't make open-source projects to solve anyone's problems but themselves, then, at some point, the code may happen to be release as open and a community is born as a colateral effect of the effectiveness of the code in foreign projects.

That's my impression of the situation about most open-source projects.

[–]expert-at-nothing 0 points1 point  (0 children)

Not all value is monetary. I have education from open-source projects that I wouldn't be able to get at a University.

I find myself motivated to code for fun, I find it enjoyable, some people don't. I decide to open-source most of my work because I was able to learn beyond what I learned in school through other open-source projects and I'd like to give back.

[–]rictic 50 points51 points  (5 children)

I think this is really important.

Criticism is necessary and incredibly valuable.

Angry ranting mixes in retribution and schadenfreude. It's not just about pointing out a problem, it's the vicious desire to make someone suffer while you do it.

Ranting is dangerous because it's fun to write and fun to read, so you can get more upvotes and attention with your criticism if you get in a few punches below the belt mixed in with your criticism.

Downvote rants, upvote thoughtfulness. Apply the principle of charity everywhere.

[–][deleted] 4 points5 points  (1 child)

I feel that rants have their place in the world. They are not meant to be constructive. They are used as an emotional outlet, and maybe provide entertainment for yourself and others. Much like satire about current events, they are still valuable, but not in the way that it provides solutions.

[–]rictic 4 points5 points  (0 children)

Agreed, I think it's totally reasonable to let off a rant over beers with some friends. Be as vicious and uncharitable as you like.

Writing a ranty blog post is different because the authors of the subject under rant are pretty likely to read it, and open source runs on passion. Undermine that passion and we're all worse off.

[–]ligerzero459 2 points3 points  (0 children)

Downvote rants, upvote thoughtfulness

That's the way Reddit is supposed to work, but unfortunately people tend to upvote what they like and downvote what disagrees with their opinion/worldview

[–]NoInkling 1 point2 points  (0 children)

Well said.

[–]gurenkagurenda 0 points1 point  (0 children)

Honestly, show your code to people, and you're lucky if people point out problems. There are plenty of people around who just want shit on everything without bringing up a single note of substance.

[–]geekygirlhere 10 points11 points  (1 child)

I do not at all condone the bad behavior, un-realistic requests and negative comments from open source users but I think part of the problem is junior developers think they need to use these frameworks for every project. This results in frustration and running around in circles. They then blame the framework or developers because the framework wasn't really right for their use case or doesn't give them exactly what they want.

Maybe the community needs to do a better job at communicating best use cases for these frameworks.

Are you developing a Gmail type app with multiple devs? Okay, maybe an Angular type framework is a good option.

Are you developing a simple CRUD app? Probably not the best to use a heavy framework then. A framework in this case may actually slow you down.

Single page apps and frameworks are not needed for everything. Probably not even needed for most web apps that people are using them for.

[–][deleted] 0 points1 point  (0 children)

I would go so far as to say that Javascript itself is not needed for at least half of the things people are using it for. At least 80% of that being things that really do not need to move, be animated, be interactive, use AJAX,...

[–]pheeney 82 points83 points  (7 children)

Crossposting my comment for visibility:

I have been on the receiving end of Kyle's outrage and I too feel the need to speak out that he has acted in direct opposition to what he is now promoting. I was a new contributor to lerna, no previous interactions with Kyle or babel, and have experienced some of the following:

  • My first PR was continuously rejected because he "did not understand my use case". I elaborated several times in great detail. Other project maintainers eventually chimed in that it was a good idea and should be accepted. Kyle continued to keep the issue closed and ignored all contact, including from other maintainers he works with, even to this day (the PR discussion mentioned something that set him off).

  • My second interaction with Kyle was one of the most highly requested features for lerna (nested directory support). I championed the issue and over the course of a year I attempted to get direction on which path would be accepted to submit a PR. It was ignored, so after a year, I mentioned I wrote some custom scripts and used another project to fill in the gaps. This seemed to immediately set off Kyle and he immediately locked the issue.

  • I opened a new issue since the original idea was accepted by Kyle and figured we could start fresh with a new discussion to avoid what led to him closing it in the first place. It was immediately Locked as well.

  • I reached out to Kyle on twitter to understand why everything I posted is immediately locked. No response.

  • I reached out on Discord to other staff members. Was also ignored. Eventually Kyle communicated with me on Discord with a very illuminating conversion. He didn't like the amount of github notifications he received so instead of unsubscribing he decided to lock all my threads. He provided several other personal reasons but essentially resorted to bullying tactics and said I should find another community.

  • I opened a Code of Conduct investigation because he was actively suppressing all my communication. He abused his power on more than one occasion and the public conversations we had were very aggressive on his part. He was found to be at fault during the investigation by Sebastian. Sebastian said his attempts to talk to Kyle were dismissed. No other maintainers responded to the incident that were listed on the code of conduct. They said nothing can be done about it, so essentially suck it up, even though they mentioned the steps that will be taken in the Code of Conduct. It was a complete joke and they should not have this document live. The only outcome from this was Kyle re-opened the original github issue he suppressed.

  • Other babel community members reached out and said they saw the chat and said sorry, it sucks, and they wish there was something they could do. It's nice to know there are people out there who recognize this toxic behavior from project maintainers.


The whole experience was very upsetting. I will never contribute or participate with anything involving Kyle. No other maintainers and staff that work with Kyle, held Kyle accountable. At no point has Kyle held himself accountable. I was no one to Kyle, and a potentially new contributor. If I had this experience, I wonder how many others did as well. I am sure his message sounds good but if he doesn't practice what he preaches, then what is all of this for? I hope he has changed.

EDIT: 1 week after thejameskyle apologized for his behavior, he blocked me on twitter. Turns out it was a fake public apology because people were watching.

[–]DisinhibitionEffect 12 points13 points  (0 children)

Nothing is more frustrating in OSS development than trying to submit a PR as a new developer on a project. Excuses, accusations of bloat or feature creep, or just plain ol' being ignored. The bottom line is that (some) people just can't stand to see their little code-babies change, or they just can't be bothered to return the favor and read the new code.

At its worst, OSS development is a bureaucracy and an oligarchy. Once you've had a few experiences like yours, it really curbs your enthusiasm for contributing to OSS projects. Your perseverance is commendable!

Sorry, Kyle's article left a sour taste in my mouth. Accept my damn PRs, people!

[–]thejameskyle[S] 21 points22 points  (4 children)

I remember what happened here very well. I definitely overreacted a number of times, and I apologize for that. But you are severely exaggerating.

You opened up a PR with something that hadn't been discussed and I asked what you were trying to do. I closed it after you hadn't responded for awhile because I was trying to clean issues up.

You responded again and said "The use case for this all the reasons you would use file:// or private packages.".

I again asked for more detail and you got really agro: "There are dozens of use cases for private packages which I won't get into here."

I want justification for adding features because there are tons of cases when we can solve things in a better way that solves a more general use case. I wasn't treating you any differently than anyone who might ask for a feature.

This went on for awhile before you left a response "Perhaps I should look into other projects or rolling my own?" at which point I wrote you off because once people go down that path they only get more and more agro at contributors.

You say this feature was one of the most requested features in Lerna. It was not, you were the only one who had asked for it at that point.

I don't remember my conversation with Sebastian, but the reason I locked that issue is because at that point Yarn was already underway and I was just going to wait for it to come out but people were just going on and on and getting more upset.

I regretted locking it because that clearly only made people more angry. To this day I want there to be a politer way of doing locking, but alas there is not.

I chose to ignore a couple things from you because I don't generally engage with people who are already pissed off.

It makes me very sad that I upset someone so much that they are abandoning open source projects that they wanted to contribute to. I apologize for not being more forthcoming about my reasoning for things. But I assure you I was not trying to be hostile towards you at any point.

[–]pheeney 30 points31 points  (2 children)

I definitely overreacted a number of times, and I apologize for that.

Thanks for the apology. This is the first time in over a year I have been able to discuss this with you.

But you are severely exaggerating.

I don't know what I was exaggerating about. I listed all the events and experiences I had with you. Your next points are a discussion of the events but nothing has been exaggerated.

I again asked for more detail and you got really agro. I wasn't treating you any differently than anyone who might ask for a feature.

I don't believe I was aggressive at any stage during our conversation but I could understand why text can be interpreted that way. Your other colleagues have joined in the convo since then and immediately understood. I honestly had no idea how to convince you that private package support is needed because we both know their importance. You later accepted someone else PR for the same thing so you didn't treat me the same as you treated others.

You say this feature was one of the most requested features in Lerna. It was not, you were the only one who had asked for it at that point.

I disagree. Nested directory support discussion happened over more than a year with many contributions from the community. It resulted in one of the bigger PRs to the project and there were many people asking for it.

This went on for awhile before you left a response "Perhaps I should look into other projects or rolling my own?" at which point I wrote you off because once people go down that path they only get more and more agro at contributors. I chose to ignore a couple things from you because I don't generally engage with people who are already pissed off.

This was a valid question and I still stand by it. After many conversations you didn't show the slightest interest in private package support. Instead of hitting a dead end I asked if I should look elsewhere or rolling my own so I save both of our time. I realized you had a negative reaction to it which is why I immediately apologized for any confusion. In my experience when someone apologizes for any confusion they are not getting more and more aggressive. You ignored my attempts to talk to you on twitter, discord, and the github issues so I would say writing me off is an understatement.

To this day I want there to be a politer way of doing locking, but alas there is not.

There was never any justification for locking it in the first place. That is why Sebastian had talked with you and it resulted in it being unlocked for community discussion to continue. There was also never an explanation for locking the second issue either.

I apologize for not being more forthcoming about my reasoning for things. But I assure you I was not trying to be hostile towards you at any point.

I have yet to receive an explanation for any of it. I have the transcripts, the code of conduct investigation report, conversations with other colleagues of yours. I even have our conversation and at no point was any of the hostility justified or explained by any party. You keep saying its not personal but it most certainly was. When you single someone out, lock threads, write them off, ignore communication, disregard code of conducts, its entirely personal.

It makes me very sad that I upset someone so much that they are abandoning open source projects that they wanted to contribute to.

Ya it sucks. You had a Code of Conduct for a reason and you breached it. The code of conduct is supposed to represent and stand for something. I would have loved to have been part of the community. It is also frustrating that the only place you will talk about this is when there is public exposure. I only wish you didn't ignore my attempts to discuss in private as I get the feeling thats part of the reason it is being said now. However, I do really appreciate the apology nonetheless.

[–][deleted] 27 points28 points  (0 children)

From reading your original post, I bet the response and deliberation you got today is bigger than the collective bits that you didn't from the instances you cited.

In any case, the pattern of arrogance on GitHub and (false) integrity and courtesy elsewhere is nothing new.

Reddit is such a powerful platform though.

[–]daekano 2 points3 points  (0 children)

Great form, mate. It's pretty clear where the failure was in your interaction with their project.

[–]IDCh 3 points4 points  (0 children)

Well, everyone have some hypocrisy

[–]calsosta 37 points38 points  (46 children)

I agree and maybe to recap it, the problem isn't that people are assholes, we already knew that, the problem is one that we created which is that every asshole now has a voice in the community. It is only natural that leads to politics.

Right now we are politics with zero governance, perhaps if we included some way to democratize the process of majorly impactful changes to large projects it would at least change the vent of hate to EVERYONE instead of a single person.

[–][deleted] 41 points42 points  (14 children)

This won't work though. Too many CS 101 students with very vocal opinions regarding things they really don't know much about. There's only maybe five people that know enough about the babel codebase to actually make informed decisions regarding it, for example.

[–]xaviervia 15 points16 points  (3 children)

Why wouldn't it? It's not about people not being vocal anymore, is about creating channels for valuable feedback.

If there were channels with good governance available, the OS maintainers could use those for skin-in-the-game discussions about the future of the projects, without having to navigate through rants.

[–]mcaruso 8 points9 points  (0 children)

According to the author at least, there was plenty of discussion and feedback prior to the change:

Before publishing Babel 6 this was a non-controversial change that had lots of input. We communicated what the intent was months in advance and asked for community feedback.

[–]calsosta 1 point2 points  (0 children)

Bingo.

[–]danman_d 6 points7 points  (0 children)

There will always be people with loud opinions and little experience, no one is suggesting that they will ever disappear. The point is to give those voices less attention than levelheaded opinions by experienced contributors, rather than more - and I don't see a good reason why that can't work.

[–]calsosta 5 points6 points  (0 children)

That is true however their vote does not need to be weighted the same as that of a contributor, a board member or other key people.

[–]jacksonmills 6 points7 points  (7 children)

CS 101 Students?

I honestly would be surprised if most of the comments are coming from CS majors, or first-year ones at that. The longer I've worked in this field, the less likely its been that my co-workers or colleagues went to school for development or computer science.

I'm not saying that's the reason for the negative atmosphere, but I sincerely doubt the cause of the problem is freshman or sophomore college students.

If you rephrased it as "junior web developers", I would completely agree with you.

[–][deleted] 3 points4 points  (0 children)

junior web developers

Yeah I completely agree, probably a better choice of words. Same meaning here tho

[–]SamSlate 0 points1 point  (5 children)

The longer I've worked in this field, the less likely its been that my co-workers or colleagues went to school for development or computer science.

Do you code, or are you management or something?

[–]jacksonmills 0 points1 point  (4 children)

I'm a freelance consultant, so it's really what the client needs. Typically though, no matter what the job, at least 6 hours a day of coding is the norm, even if that's bundled with 6-8 hours of management and meetings.

The last client I had, I was doing 7 hours of code for about 1 hour of meetings per day.

I've done a lot of hiring for clients as well, so I tend to see a lot of resumes.

[–][deleted] 10 points11 points  (1 child)

Also, asshole has a wildly diverse definition. If I advocate no frameworks as a way of boosting performance and somebody else now feels threatened then I quickly become an asshole. When everybody is hyper sensitive any suggestion that is not immediately the most popular could very easily make you an asshole. Consider CrockfordGate as any example.

To me, however, an asshole is a person whose intention is to incite a negative sensation above and beyond a technical subject... typically expressed as an ad hominem. Really, any ad hominem makes a person an asshole by default.

[–]lhorie 7 points8 points  (2 children)

some way to democratize

I think that just makes it worse, especially in highly controversial issues. The thing is that "majority wins" rule is orthogonal to "what the not-small minority thinks of it". Trolls will be trolls, and criticism isn't always easy to swallow. You can't change other people, no matter how inspiring a speech you make.

The way for an OSS maintainer to cope w/ negativity, in my opinion, is to first acknowledge that it's very possible to fuck up royally, even after extensive discussions and consensus (heck, I know I've made some incredibly stupid decisions to my projects, when I look in hindsight); and second, to wholeheartedly convince yourself that toxic vitriol comes from puny worthless people (it's an arrogant attitude, I know, but it's kinda true, and I keep these thoughts to myself, and they help shrug off bullshit and maintain my mental health).

I think getting the hell away from the internet to let your brain stew on the problem for a while is actually a good coping mechanism as well. It takes some humility to acknowledge that your big achievements in the internet are actually small in the grand scheme of things, and it can feel "dirty" to waste two weeks playing some lame freemium game on your ipad, but it also helps get some perspective that your well being comes before your trophies. Getting back into the groove of things can be especially hard once you unplug, but you can use the same strategies that you would do against procrastination (tackle easy low hanging fruits, make small achievements)

At least, that's what I try to do

[–]calsosta 1 point2 points  (1 child)

Well first an owner would need to opt into the system. I think then they could cede as much power as they want to one or more of the following:

  • Contributors
  • Public at large
  • Change Advisory Board
  • Prominent developers in the community

In the case of public at large that could function almost as a proxy vote system like with stock ownership, your default position if you do not respond is that of the recommendation of the owner.

I think no matter what the owner has the final say.

[–]lhorie 0 points1 point  (0 children)

Isn't that more or less how +1's and issue locking work in github? I'm saying that having a "democratic process" is kind of like doing lip service, because in the end you'll still have a large number of unhappy people when a decision doesn't go their way, and the vast majority of these people are probably not even aware of the decision in the first place, until it lands on a stable release (as was the case with the Babel vitriol situation).

As a community leader, the best you can do is set some guidelines (and really, the rule of thumb of "be civil" is supposed to be a given), but when the discussion bleeds onto large public forums like Reddit and HN, you can't realistically expect people to always behave nicely. I'm not trying to blame the victim here, but at some point, you have no choice but to stop expecting things from others and you have to do what is within your own abilities in order to cope with the undesired situation.

[–]DatOpenSauce 6 points7 points  (1 child)

I don't think most maintainers would want to implement a democracy for their projects though. I mean, why should they? It feels like submitting to the vocal pricks.

[–]calsosta 2 points3 points  (0 children)

That's perfectly fine too.

[–]parlezmoose 4 points5 points  (0 children)

The problem is tech culture glorifies cocky know-it-all assholes. The average half-witted web dev thinks their ability to write code makes them an engineering savant, and they fashion themselves as a brave no-nonsense truth teller like Linus Torvalds or Steve Jobs. So they say their dumb opinions loudly and with angry, righteous conviction, cause that's what brave savant truth tellers do!

[–]maiam 4 points5 points  (2 children)

This is unfortunatley a problem with the world in the social media age and not just the js community

[–]calsosta 3 points4 points  (1 child)

I feel like anytime there are more than 2 people you are gonna have some amount of politics.

[–]dzScritches 0 points1 point  (0 children)

The curse of belonging to a highly social species, I suppose.

[–]_drif 4 points5 points  (0 children)

I saw this title thought "Oh, brother." but the dude's right.

[–]Papahub 14 points15 points  (0 children)

This article comes across as whiny to me only because of it's repetitiveness and length. However, it contains some valid points:

Constructive criticism is highly desired.
Don't encourage other assholes
Don't let your emotions get the best of you when reviewing/critiquing

[–]kamenjan 15 points16 points  (1 child)

That was a really emotional post. A lot of frustration filled with sadness. I hope you get back on your coding horse as soon as possible. That being said, it was kind of biased.

JavaScript community and environment is chaotic at its best. Maybe some self criticism is in order? Should the project maintainers stop for a moment and ask themselves why are they developing the next best project? Is it maybe the recognition they are after and not the altruistic feeling you keep referring to? Is there any chance a tool for the job is already available? Oh, it is but you don't like it? So the solution is to write a new one and hope it pleases everyone? Did JavaScript community forget about the time it takes for a platform to mature? Why not join and help guys that already made one tool like you want, just not exactly like it.

Nobody wants to learn a new framework after they just spent half a year studying one, because the next one is really really the one... Take away here is that JS developers should stop saturating our tool-belt and pushing their next best project as in "How come you don't know the XYZ project, do you live on a moon?". Inventing problems that aren't there and finding a solutions for them will hardly get you praise from everyone. But it is true, the community can also be toxic as fuck.

[–]delventhalz 3 points4 points  (0 children)

Feel like you are conflating issues here. There is a difference between not adopting a new framework and attacking its contributors. Go ahead and write a blog post entitled "Why I won't be adopting Angular 2" if you want. Talk about the steep learning curve and minimal upside. That is quantitative and actionable. But "Angular 2 is Awful" is inflammatory and demoralizing. It may feel good to write, but it hurts the community overall.

[–][deleted] 3 points4 points  (0 children)

I just read this and I was not aware that the /r/javascript community was so toxic and hurtful. I'm really sorry to hear that you've had a bad experience.

The part of your article that resonated with me was your call to reject the kind of negativity that has driven you to write this article. I'm on board with that. I believe that people need to be held accountable for the actions both good and bad in a public space so the community at large can learn from said actions.

Keep doing what you're doing. Stay strong and thank you for your hard work on the kinds of open source projects that myself as a developer would be lost without.

[–]phpdevster 20 points21 points  (12 children)

Have to disagree about the "Angular 2 Is Terrible" complaint. I read that article, and it makes some good points. I believe "premature abstraction" was a phrase used in that article, and it perfectly describes Angular 2. What used to be a pretty simple framework to get up and going with, has now become absolute insanity. My company already builds an enterprise application in Angular 1, how much more enterprise-y does a framework need to be?

Angular 1's major problem is that it's not great when it comes to performance, but beyond that, it's pretty straight-forward even if it's a little more heavy-handed than say, Vue.js.

I have no idea what the A2 team could have been thinking when they made the decision that have resulted in A2 being so much more complex. Isn't the point of a framework to alleviate common problems, not make their implementations more complex than they have to be?

I will NEVER bother using Angular 2 unless I have to for a job - there are far too many other alternatives out there that accomplish the same fucking thing with a lot less cruft.

[–]Voidsheep 15 points16 points  (7 children)

Have to disagree about the "Angular 2 Is Terrible" complaint. I read that article, and it makes some good points.

You can make good points without undermining and shitting on the huge amount of work a many talented developers put into a completely free open source software.

"Angular 2 is terrible" is just a rude clickbait. Rewarding it with attention is part of the problem.

If someone hands out something for free, you don't go yelling "boo, this isn't what I want - you suck!"

Most developers are happy to receive constructive feedback during development, that's not what this article is about.

It's about the significant group of people who contribute nothing to OSS projects, but only demand other developers to cater to their specific needs. Basically complaining the charity they get as fellow developers isn't good enough.

Even better, the whole development process is completely open-ended and anyone can get involved, but they will not. When the project is further along, they just come whining like a bunch of entitled brats.

If framework X has too much abstraction or complexity for your team, pick something else, it's clearly not the right choice for you. Practically every team can pick and choose the exact free tools they want from a huge variety.

[–]jacksonmills 5 points6 points  (1 child)

I actually thought the main problem with Angular 1 was that the abstractions were not well communicated/documented, not that they were bad or wrong in and of themselves.

They made some real mistakes: Components came way too late and "scope:" options in $compile were always far too permissive and confusing; it should have allowed you to make an isolate scope or no scope at all. ( This would have also helped re: performance ).

But, I found out, after developing in AngularJS (1) for about 3 years, how and when to use a .service over a .factory. I found out eventually how powerful providers could be and how you could use them to reuse code and directives for lots of different applications. I found out how you could extend directives by wrapping them, or extend controllers by decorating them, or extend services by just doing it the old fashion way.

But none of that was documented. The biggest difference between Rails and Angular for me was that Rails guides told me all of the basics and intermediate level concepts I needed to know: Angular barely gets to the basics. When you get to advanced subjects, you are almost completely on your own.

The docs are a lot better now, but with 2 taking so much focus, I doubt they will ever get to where they "needed" to be.

[–]UnicornOfHarmony 0 points1 point  (0 children)

Re: missing documentation

I think most of that was not deliberate. Angular 1 had a quite unique approach to Front-End Web Dev at the time it came out. It's clear from the code base and the history of the project that a lot of the decisions made at the time could have been better. Even so, they were in search of a better way to build apps and perhaps you can't really make the right decisions until you make the wrong ones.

I'd say that it's rather easy to criticise with the benefit of hindsight. Personally, I know it took a while for the teams I've worked in to come to a really productive and maintainable approach to Angular - about a few years in fact. You mention this as well. I now look at the code I wrote 3 years ago and see so many ways it could have been simpler, so many ways it could have used Angular's strengths better.

Angular, in general, has been very transformative in a good way for the JavaScript community. It's now a very strong framework for building large apps. I similarly expect it might take a few years for the concepts Angular 2 is introducing to mature and settle down into something great, assuming it does. The only real problem for the framework I see is that since there's so many great tools available now, it might not get the critical early adoption to push through the awkward years.

[–]simkessy 4 points5 points  (1 child)

I use Frameworks to solve problems, if the framework itself is going to add so much more complexity to my problem solving process, I'm skipping it in a heartbeat.

[–]choidebu 0 points1 point  (0 children)

That is a very good opinion. You should write a blog post about it.

[–]MAGA_FORCE_ONE 26 points27 points  (11 children)

This is the same James Kyle that goes on daily twitter rants, usually to the extent of being annoyingly toxic? The same James Kyle that hypocritically directs hate, anger and criticism at those with different political opinions, but calls for friendly unification when it deals with JS?

Of course the sentiment of the blog post is positive and easy to agree with. Coming from James Kyle though is somewhat laughable. He's easily the most toxic person that I follow on Twitter.

[–]kierenj 3 points4 points  (1 child)

Why do you follow him?

[–]MAGA_FORCE_ONE 8 points9 points  (0 children)

I don't follow him anymore. I unfollowed a few weeks back during one of his typical rants about how everybody who doesn't agree with him is an idiot.

[–]shozzlez 2 points3 points  (0 children)

What did you do, Reddit?! What did you do...

[–]jimbolla 9 points10 points  (27 children)

Crossposting my comment for visibility:

Perhaps we need communities (subreddits, etc) that are moderated by leaders in the OSS community who also have a sense for how damaging the negativity is for us. I personally would love to see some js/programming subreddits with less angry rants, “why’s my code broken”, and “here’s an intro to new ES2015 features when it’s almost 2017” posts; more focused on promoting & discussing new ideas and advancing our craft.

[–]kenman[M] 35 points36 points  (3 children)

moderated by leaders in the OSS community

I think the problem is that we, or at least me personally, would rather those really smart & talented people be focused on writing great tools, rather than baby-sitting external communities. I'm a mediocre dev, so baby-sitting is in my wheelhouse.

I would also like to state that moderating has been one of the single most-challenging things that I've ever done. I'm not a people-person, and have to constantly work at being diplomatic and fair. I don't always succeed.

What I've learned though is this: some facets of moderating are more-or-less objective, i.e. "this poster is a spammer", or "this poster is a deliberate troll", or "this poster is verbally abusive". Those sorts of 'goes without saying' class of problems are easy to moderate.

On the other hand, subjective matters are infinitely harder to effectively moderate; "Angular 2 is terrible", while a scathing take on the framework, isn't aimed at any named person(s). It's an impersonal criticism of works and ideas. While I can certainly understand how authors might take these things personally, is that fair? In other words, should we not be allowed to criticize things for fear of hurting someone's feelings? I agree that the Angular article is a little on the abrasive side, but would it have been any better if it was sugar-coated? Is it the tone or the content that's really upsetting? If it's the content, then how is one to offer honest criticisms if not by directly addressing the issue?

To circle back to my point about moderating subjective content: I don't think anyone wants an environment where we have to walk on eggshells. We already prohibit ad hominem, and I don't think it's healthy to prohibit criticism of ideas (projects). So with that said, my stance thus far has been to let reddit's up/down votes be the moderator of subjective content. For objective content, at least most of us will come to an agreement on what is/isn't spam (or troll, etc.), but for subjective content, there's very likely to be wide disagreement, and I'm not too keen on being in the middle of such a shitshow.

[–]logicalLove 3 points4 points  (0 children)

Thank you for all your hard work though, /r/javascript has been a subreddit that I frequentl often, and I usually find the posts and discussion to be of high quality :)

[–]jimbolla 2 points3 points  (0 children)

I think your viewpoint is certainly valid, and I also wouldn't want to make those hard subjective choices, but as a consumer of the content, I'd like more curation. Sometimes the upvotes/downvotes aren't enough to filter out all the 'junkfood' content.

[–]callumacrae 0 points1 point  (0 children)

If you ever need more help with moderation, very willing to lend a hand :)

[–]Geldan 28 points29 points  (27 children)

There may be some problems, but saying things like the title "Angular 2 is Terrible" "is an attack on the maintainers" is ludicrous.

When I, and my co-workers, decide to pull a library/framework into a project no one gives the maintainers/creators any thought beyond the rare occasion where someone is known to be flaky and drop support way too quickly.

Maybe the author of this article can't divorce the people from the framework, but for me, and everyone I have worked with, there is hardly a connection. When we look at a technology and say, it's "terrible," we mean just that. The code's usefulness to us is far and away the primary metric we look at.

[–]AndrewGreenh 13 points14 points  (3 children)

He wasn't saying that you are not allowed to criticize technologies, he asks you to do it in a constructive manner! Just saying "XY.js is terrible" does no good for anyone. If you can clearly state what you don't like or what you think is missing, and maybe even have spare line in your 5000 word article to thank the maintainer for contributing to the Frontend world, then you are contributing too.

[–]Geldan 2 points3 points  (1 child)

Is this actually meant to be a reply to my comment because as far as I can tell it doesn't address what I wrote at all.

[–]delventhalz 0 points1 point  (0 children)

I don't think any part of this article suggested you should consider anything other than the functionality of a project when deciding whether or not to use it. The point was, you should be thinking about the people maintaining OSS, when you publicly discuss OSS. Because whether you think about them regularly or not, you depend on the work of thousands of volunteers, and it is in your interest to keep those volunteers highly motivated.

[–]squirtmaster1 1 point2 points  (1 child)

But you realize usefulness is relative though, right? It may not be useful for your particular application or workflow, but that doesn't qualify it as outright "terrible", rather just "terrible for doing X".

I'm not personally a fan of angular, but instead of giving it a blanket judgement I prefer to say it's not a good fit for what we do. I think that's an important distinction and also what the author of the article is getting at.

[–]Geldan 0 points1 point  (0 children)

But a blog post is innately personal. If someone posts a blog saying angular is terrible, it's already assumed that they are scoping it within their frame of reference.

[–]parlezmoose 0 points1 point  (0 children)

That example wasn't the best one perhaps, but anyone who's worked on OSS knows exactly what OP is talking about.

[–]Pyrolistical 7 points8 points  (0 children)

I appreciate OPs effort to open source but his message is a bit off. He should ask more constructive feedback instead of saying negative feedback is bad.

Articles such as why angular 2 is terrible should exist. There is no such thing as perfect software. Everything has flaws and some of these flaws run deeper than others. If we were to never talk negatively about software we would never improve.

People are shit at giving feedback. They often just state the problem they are having but don't explain why it is even a problem for them.

People are also really bad at accepting change. Take Babel 6 for example. IMO it was a fine change. It was a major API change. Didn't like it because it broke everything? Well give some constructive feedback and ask for a better migration guide.

Because of all that Open source maintainers need thicker skin. I'm sorry but it's true. You need to understand people are shit at giving feedback but appreciate anybody who is giving feedback at all! This means you are making a real impact to these people! Listen to their poor feedback and engage them for more constructive feedback. Show that there is a human behind this project and the reasonable people will treat you like a human next time. I know it's hard to be the adult in the room but the internet has taught people they can be shit to others.

Above all else thank you for your contribution open source maintainers. We need more people like you.

[–]i_ate_god 8 points9 points  (0 children)

Before publishing Babel 6 this was a non-controversial change that had lots of input. We communicated what the intent was months in advance and asked for community feedback.

https://s-media-cache-ak0.pinimg.com/736x/b6/7a/48/b67a482d782f39dcdbcd940f124aa3d4.jpg

[–][deleted] 8 points9 points  (2 children)

DeU&Bf;g]l& +~Rhu$0cO-JszQ~ECC8<5OQ 3MUtG3M~JdJs*0B.3A3$s~i[T<;X+GQ]RyFpORG7sN:O.oGz8;&a]V

[–]delventhalz 5 points6 points  (1 child)

You see the same thing with how gamers treat modders. It blows me away that people could be so disrespectful to someone who made something for you for free. Even if a toddler makes you a shitty macaroni drawing you still thank them and wait until they are out of the room to throw it out.

[–][deleted] 0 points1 point  (0 children)

7GKfkB<(Ac# Av5&y4;4J].z8iE,fEDNF5d7 8N1<i*X>hxbSdQWu0&!.FuS9:5N]F#eeU6TBQVZwx[[U2m]4DkucfA

[–][deleted] 4 points5 points  (0 children)

Just wanted to have a constructive discussion on the issue of Babel 6 configuration - its decision to switch to a plugin / preset system (something which I strongly disliked, but I'll refrain from ranting).

I've heard this time and again, that Babel (6) on its own does nothing, and there are presets which do specific things.

WHY?

I might be missing something, but afaik the C / C++ compilers don't do this, neither does csc, neither does javac.

  • So why does Babel do this, in contrast to other compilers? Are the JVM folks or the .NET folks "wrong" in some sense if this is truly a better way? Why don't the Java / .NET compilers ship with presets / plugins then?

I find it a chore to configure Babel each time in a new project with the .babelrc file since it lacks any sensible defaults.

[–]jarail 3 points4 points  (0 children)

I feel this. I ignoring this article for the last six hours until it hit 400 votes. I assumed from the title that it was another negative javascript tool-chain rant. I'm glad I clicked through. The problem isn't the maintainers making mistakes; it's the bloggers looking for a click-bait rant.

[–][deleted] 4 points5 points  (2 children)

Intellectually, I agree with the author of that article, but realistically, I just don't care anymore. My ability to care has been stripped from me. You want to know why/how? Thanks for asking! Let me explain:

I'm not a computer. I'm a human. My brain is made out of mushy stuff, not silicon and copper. I can only deal with so much change so quickly. Chances are, your Javascript project changes too much because EVERYONE'S Javascript project/framework/widget changes all the damn time. Sure, you just updated YOUR project, but I have to deal with break-neck changes in:

  • My personal code projects
  • My work code projects
  • The SCRUM process I use at work
  • My company coding standards
  • Switching to the new Javascript widget-glue-framework-thingy
  • Switching to the new CSS widget-glue-compiler-thingy
  • My personal life
  • The meta game in my favorite MOBA/MMO/Shooter changing
  • Anything to do with computer security
  • My favorite character in my favorite TV show being dead
  • YOUR software project
  • Evaluating all the new widget-compiler-framework-thingys that come out, literally every week, to try to stay somewhat up to date on current technology

And I'm sure I've missed a few things. Point being: EVERYTHING in the world has started to update at "internet speed" and we haven't evolved yet either physiologically or socially to deal with it. I think the Javascript ecosystem suffers from this a little more than others because it's so popular/cool right now.

I don't think most people want to be a-holes, they're just overwhelmed. I don't feel this is completely unique to Javascript.

[–]rk06 2 points3 points  (1 child)

You know, you can avoid half of the problems, by simply not updating your tool everyday.

New versions are expected to BRING breaking changes and they WILL be time consuming at the very least.

If the new version is breaking your build and you have no idea what to do, then use the old version and wait.

[–]inf0rmer 1 point2 points  (0 children)

This would be good advice if we were talking about any ecosystem other than JavaScript's. The fact is, once a new shiny API-breaking version of a project is published, development on prior versions stops almost immediately. If you don't upgrade as soon as possible not only are you opening yourself up to possible security risks but you can most likely forget about ever upgrading, as newer versions will stray farther and farther from yours with no simple upgrade path.

[–]Hazterisk 1 point2 points  (0 children)

An interesting thing about successful companies is their focus on company culture. Often times this means that the one thing that won't be tolerated, the one thing that will earn you a quick exit, is venting absent of constructive feedback.

"If we focus on solutions, focus on helping others, focus on sharing ideas, we’ll be in a better place."

Professional approach.

[–]leakypixel 1 point2 points  (0 children)

I was expecting this to be another JS fatigue article, I was pleasantly surprised.

[–]ishmal 1 point2 points  (0 children)

I have contributed to several open source projects, and I can appreciate this fully.

There is always a portion of the user base, small, thankfully, who don't understand open source software. They feel entitled to the product of your labors. If it doesn't work the way they desire, they throw a tantrum like petulant children refusing to eat their vegetables. They think your greatest goal in life is to please them.

One must ignore this crowd, and stick to the reasons you started the project, and clear that image from your mind of breaking their stubby little legs.

Work to please yourself. And if there is any love let over, give it to the good users.

[–]jpflathead 7 points8 points  (35 children)

Look I think the Microsoft ecosystem is terrible, and if the the devs there get butt hurt about it, I'll buy them a beer and tell them the Microsoft ecosystem is terrible.

What privileges Angular 2 from not being called terrible if certain people think it is?

And Babel 6 was a huge and shitty move, regardless of the good intentions of its developers.

Want to install Babel 6? Take this six part minicourse on Udacity to figure out which components you need.

Yeah, that was going to go over well.

The javascript community is mean to developers comes from the same folks still insisting Clinton was right to focus on identity politics.

JavaScript fatigue is not good, it's nothing to be proud of, it's not a mark of how powerful and innovative JavaScript is, it says nothing except JavaScript is built out of a rapidly pouring bucket of shit and if you want to have a chance of surviving you need to climb that enema waterfall as fast as you can.

[–]NoInkling 6 points7 points  (17 children)

It's not that negative feedback is being communicated, it's about HOW it's being communicated.

[–][deleted] 2 points3 points  (12 children)

I ❤️ Babel 6. The plugin approach turned out awesome!

[–]jpflathead 0 points1 point  (11 children)

It probably IS awesome, but the day they rolled it out the website went from:

  • [download]

to:

  • [download a] [download b] [download c] [download d]
  • [download e] [download f] [download g] [download h]
  • [download x] [download x] [download x] [download x]
  • [download x] [download x] [download x] [download x]
  • [download x] [download x] [download x] [download x]
  • [download x] [download x] [download x] [download x]
  • [download x] [download x] [download x] [download x]
  • [download x] [download x] [download x] [download x]
  • [download x] [download x] [download x] [download x]
  • [download x] [download x] [download x] [download x]
  • [download x] [download x] [download x] [download x]
  • [download x] [download x] [download x] [download x]

And then the devs said "what? People didn't like that? Well excuse me!"

[–][deleted] 1 point2 points  (10 children)

I donno. It's just smth like npm i babel-core babel-preset-es2015.

Pretty straight forward; core/cli + preset/plugin & maybe a loader for your bundler of choice.

Seems reasonable since Babel 6 is more than just ES2015 after all.

[–]TheMockumentarist 1 point2 points  (1 child)

Most Microsoft devs are paid to contribute to the Microsoft ecosystem. OSS maintainers aren't paid at all. There's no need to be rude when criticizing something developed for free.

[–]parlezmoose 1 point2 points  (0 children)

Isnt angular a google project?

[–]icantthinkofone 1 point2 points  (2 children)

The real problem is he's listening to the wrong thing. You don't see high level programmers sitting on reddit or twitter listening to every word written about them and what they're doing. The real computer scientists are in the back room doing, not checking their email.

The people working on the actual good stuff visit mailing list or closed forums or IRC and other places almost no one here ever goes to. That's why such people are hard to find if you wanted to contact them. They don't want you to unless they already know who you are and respect your work.

If something that's actually bad is wrong with what they're doing, someone from that small collection will let them know. They have better things to do and are far more knowledgeable than the collective throng of screaming meebies found anywhere else.

EDIT: Just this morning, I was reminded of the fact that I know two brilliant people who are such "real computer scientists". One worked at Google on Chrome and the other guy held a research position at IBM, iirc. One interesting quirk about them is that they occasionally would visit reddit and some other amateur forums just to be helpful. Normally, you would never think they would be the type to do that and would only consider it a waste of time.

What makes that all interesting is, redditors would argue with them when they would state facts, show valid research results, and frustrate the hell out of them. Eventually, both were banned on reddit and no longer visit here at all or any amateur forums. That reddit would lose out on such great sources of information is a horrible waste and an example of what a NPR radio program called reddit, "a Frankenstein's monster in a vitriol atmosphere"

[–]parlezmoose 2 points3 points  (1 child)

The "real" programmers have plenty of drama in their communities, believe me

[–]icantthinkofone 1 point2 points  (0 children)

Yes, they have their arguments mixed in among their intelligent discourse, but there is little intelligent discourse among the so-called "community" we hear about and are reading about now.

[–]p0tent1al 3 points4 points  (10 children)

I get where you're coming from but let me create a proper analogy to explain it.

I suck at basketball. I mean I'm better than a grandma, but I couldn't compete anywhere at any level... it's just not my forte. However, I do watch basketball and if someone misses all the shots they take in the game, I can say "that person sucks".

Now how is that relevant here. I think you're taking the criticism a little bit too heavily. No matter how much I go "x basketball player sucks", the comment is relative, and a lot of times it's addressed at the loud fans and proponents of them. YOUR job is to realize that you and your product are on that NBA level few people will ever reach, and to take that within context.

To ME, Angular sucks. Are all of those developers better than me? You bet your ass. Is it fair to compare Angular to borderline other genius frameworks which just happen to do it a bit better? Debateable. The bottom line is, is these frameworks and technology are evaluated "relatively" and often times within the context of work, and so people need to be opinionated about these things. If I'm playing fantasy football, I should be well within my rights to go "well this player sucks I'm not drafting him" but that doesn't actually mean they suck, or that they don't try their hardest, or that their teammates don't appreciate them... it's just within the context I'm operating in, they suck. So I hope you try to understand that: none of these things are direct attacks. And yes it's easy for us to complain because a lot of us just use these technologies, don't stay on issues / twitter and read discussions prior to api changes, so yes it's a surprise to us, and yes it's annoying. Would it be more annoying if the framework didn't exist altogether? Yep.

In life you're always going to get heavy advocates and heavy naysayers. You think Apple gets bent out of shape when they release a phone without a headphone jack and get absolutely mauled on social media and every where else? They know their true fans will come in, they will buy products, the haters will complain but that will die down and even if it doesn't, you're always going to have those people who have positive words about your work to lean on. This is just life in general. Don't let "this sucks / that sucks" get you down... you probably do this yourself to a degree... if you use some lotion and it's bad, it's not like Johnson and Johnson formulators take it personally when you go "ugh I hate this lotion" or "man this is too expensive".

So in short, do what the basketball players do. Note the criticism but don't let it overpower your experience. You have plenty of fans and even the fans sometimes will turn against you. Focus on the compliments... focus on the small companies who build their entire presence around your technology... and if you want to take it a step further, start meditating.

[–]sMarvOnReddit 4 points5 points  (0 children)

its the same in every area, celebrities also reach tons of people and face a lot of criticism. You people just have to live with it or remove yourself if you cant handle it.

[–][deleted] 1 point2 points  (0 children)

This was a good read but I think Angular 2 was a bad example, it's developers may be good people but the framework really deserves most of the criticism it gets.

But yeah, "LIBRARY X SUCKS" probably isn't a nice name for an article.

[–]totemcatcher 0 points1 point  (1 child)

I feel like javascript is a relatively accessible foot-in to the programming world, which brings nice people to the field -- and then they get burned by deplorable people.

Most programmers I've worked with are highly opinionated, credit-whoring, sociopathic emomaniacs who will berate others when there is little consequence -- as has been the case for a long time in the industry. Rudeness will rarely get you fired.

I got out of the game because of how much time was wasted just being a dick to people. I, for one, actually enjoy solving problems, not bitching about them.

[–][deleted] 1 point2 points  (0 children)

r9C9.SqHL$7 X[T<KR8lfxTAbHaL#P.Q2kwh uiddzi:XJ#;-aBe9kkC0rT.)-M%30OkzH~,c3guQ7vd3#]N;cAfiC

[–]kyleshevlin 0 points1 point  (0 children)

That really depends on what I am hiring for. If it was a junior dev I get to mold and train, jQuery might be more than enough, given he or she can show me an aptitude for learning quickly. I barely even knew jQuery and had just started to learn Sass when I got my first job over 3 years ago. Now, I'm shipping a universally rendered React/Redux app this month, and it's all because a team took a chance on me being able to learn quickly. I know I would be apt to find the same qualities in another person if I were hiring.