Ask HN: I'm considering leaving a startup to look for big-company jobs (really). - <AUTHOR> I know this decision may not be popular around here, but I think the quality of advice that I'll get is good, so I'm going to ask for it. I'm a talented programmer who is now considering leaving a startup and moving back into the big-company fold. My savings are near zero-- that rules out another startup-- and a part of me thinks that a big-company job for a while might not be the worst thing in the world.
I've decided to leave a startup in which I was a founder, although the partnership was always a bit unequal (I'm the youngest and don't have any contacts to potential customers or VCs) and our CEO often takes the attitude of it being a one-man show (i.e. he tends to get "set" in decisions without appeal, he makes shitty comments if we take a long lunch, and we deal with 2-4 status checks per day). I've been treated enough like an employee that my motivation has crashed and I essentially am "just an employee" at this point. I don't have a sense of authorship over my work. At which point, why am I continuing to work for low pay? If the major benefit of being at a startup is autonomy, and I don't have that, then what the fuck am I doing?
It's been almost 3 years, and we haven't failed, but we haven't launched or secured funding yet and "just around the corner" syndrome has been ongoing ever since I started. I don't think our CEO would lie, but I can't trust his perception that things are "just about to heat up" because he's been wrong on that matter for so long.
I don't think, for the record, that our lack of success (to this point) is the CEO's fault, and it's definitely not mine: I'm just a developer. I'd prefer to leave details out, but we expended a lot of energy chasing features for customers who flaked on us, or that would/might appeal to VCs, and hence we are at Year 3 and have a lot of cool code but no minimum viable product.
I feel a bit disloyal and selfish for considering quitting, but I also feel like it's what I need to do. It's my career and I need to be selfish.
I also know that established, large companies aren't held in high regard here and I share that prejudice. On the other hand, I think large-company jobs, even if they don't lead to nine-figure exits, can turn out well. My view of large company jobs is this: sure, the default is to get bad projects and not learn much, in which case one leaves after 8-24 months for greener pastures; but they're great if someone powerful taps you as protege, favors you in project allocation, and makes you a "made man" (or "made woman") in the company. In other words, "startup" and "big company" are just two games with good and bad possible outcomes, with more variance in the startup scenario and, in both, with the "good" outcome being somewhat rare (1/5) and the "bad" being the norm. The career game is just about spinning the wheel, repeatedly, until you actually win. And I think it's time for another spin.
The question: what does leaving a startup-- one that a future employer won't have heard of-- do for (or to) one's career? Is it right for me to expect "career credit" for the 3 years I spent? Or am I fucked in that regard? Strategically, what should I be doing to maximize my chances of getting a decent big-company job? Also, what is the programmer job market like? When I last looked around (2008) it was horrendous. Has it improved? <comment><USER3> I've went from a startup to a large (15k+) company and back to a small company.

The overall experience is that it's hard to foresee what workplace factors are important to you. Perhaps the ones you take for granted, but won't be at the other place.

After leaving the startup, I had high hopes for better organized workplace at larger company. Boy, I was wrong.

Untill I took a goot root at the large company, I never imagined programmers and managers could create so many, countless even, artificial problems. Every tool in our toolbox was inadequate, but changing that was next to impossible (decisions taken at the uppermost level). Most people exhibited the ``don't touch it if it works'' attitude that drove me almost crazy. The software would pass the tests but a lot of weirdness was swept under the proverbial rug with copious amounts of special-cased code. Software delivery took months. We were implementing features in an ungainly way, and had no way of reporting a much better implementation of very similar feature was possible on this hardware. The list goes on...

Now I'm happy at a 60 strong company. We aren't a software shop, but a small dev team builds software for internal use, marketing purposes and for our co- operants. We iterate quickly and deliver features in between 3 hours and 3 weeks. Every person in team has vertical responsibility -- oversees all steps of development of his feature. We are in touch with users (both internal and external ones) and work with them closely (that turned out to be an important factor to me I never appreciated before -- I thought I'm a lone wolf, turns out it's not the case).

But the best thing for me: people genuinely like using my software. Feels great! :-)

</comment><comment><USER4> 3 years is an eternity in Internet years. If there's a failure to generate a MVP like you mentioned in 3 yrs (one should've been able to get something out in 6 months to a year at most to test the markets), then it's time to cut your losses. Tenacity and willingness to not give up is one thing, but it's also another to know when to call it quits.

Each day spent without releasing an MVP is a day of lost opportunity that could've been spent elsewhere.

A large company isn't necessarily a bad thing either as it'll help you accumulate savings in your early years (which are the most important years to accumulate savings so you can put it to work generating interest, capital gains, etc. so that the power of compounding works passively for you). There's some chart out there somewhere comparing savings compounded early on vs. someone that started later and the difference when you retire is huge.

Plus sometimes you learn alot about how big companies processes work, how they make purchases, contacts, etc. that will help you later on in life if you do intend to go back to a startup world or start your own.

Good luck!

</comment><comment><USER5> 1\. The programmer market is HOT HOT HOT now. We're having no end of trouble finding developers.

2\. You need to take stock of what you've done these past 3 years. How are you different today from when you started? THAT is your "career credit", and you need to figure out how to communicate that to a big company. You probably have a ton of management skills (project management, people management, time management, etc). Big companies like that.

3\. There's NOTHING wrong with going to work for a big company. Big company = stability, and after a long roller coaster ride with daily uncertainty, that can be appealing. You can always start over if it turns out you're stuck with the entrepreneurial bug ;-)

The key to being an entrepreneur is failing fast, right? You're 3 years in and haven't launched. Why? Do you know what your customers want? Because once you build what they actually want, no matter how crappy your first launch (within reason), you'll have the opposite problem of not being able to retain enough talent to keep up with their demands. You'll be constantly inundated with emails to the effect of "Yeah I really like your product, but it'd be so much better if it did X..." Failing is not just the CEO's decision; it's EVERYBODY'S decision. YOU are an entrepreneur, too. Use your spidey sense!

And make sure you're honest about it when you talk to your CEO. If you can't come to common ground, that's too bad, but if you CAN, you might turn this around yet.

Also: Read up on Founder's Syndrome if you haven't yet: <http://managementhelp.org/misc/founders.htm>

Edit: And if you're an Android or iPhone developer who's interested in education and games and lives in the bay area, forget everything I just said. Your company is beyond help and you should come work with us ;-)

<comment><AUTHOR> > Edit: And if you're an Android or iPhone developer who's interested in > education and games and lives in the bay area, forget everything I just > said. Your company is beyond help and you should come work with us ;-)

Who is "us"?

I'm in New York and wouldn't leave except for a really great job, but I meet at least some of that bill. I'm also not available for at least 2-3 months. But I would love to talk to you even if it doesn't lead to anything. Care to take this offline? email@example.com

<comment><USER5> We're MindSnacks. We do bite-sized mobile learning in a fun way that makes people come back for more!

You should be receiving a message in your mailbox shortly.

<comment><USER6> MindSnacks is the cutest thing I've seen all day.

</comment></comment></comment></comment><comment><USER7> I sense a slight tinge of guilt in your post where you mention being selfish. Choosing what is right for you is always acceptable. If any of your co- founders cannot release you with love, then it is they who are being selfish. I'm going through the opposite right now, losing one of my best employees to a better opportunity. She has to choose what's right for her.

I would not rule out other, perhaps funded startups, during your job search. You won't get as big a piece of the action as a founder, but that may be irrelevant, depending on where you land.

On the other hand, being an entrepreneur is not for everyone. You seem to deeply desire autonomy. The are two truths about autonomy. First, one is never fully autonomous, there are always customers that will hold you accountable. Second, autonomy has it's price. The most successful entrepreneurs usually have a long stream of failures in their wake. It's about taking and applying the lessons from the failures, redoubling efforts, sometimes living an austere lifestyle while figuring out how to keep the bills paid, and trying again. Like I said, it's not for everyone. I have many times considered leaving my venture for the stability of a steady paycheck at a "regular" job. I would be much less concerned about the future for my family and children. But I know that choice would be a choice to accept a mediocre vision for my children, cutting off access to the best toys/learning tools, schools, etc. and I want better than that for them. I believe the same mediocrity would ripple through my career path as well. That pressure has caused me to apply the past lessons, and take risks, some of which are paying off.

The bottom line, reward comes with risk. At a corporate job, the big wigs and shareholders are taking most of the risk, so they get most of the reward.

Your CEO, from the limited information you have presented, sounds perhaps like he is more charismatic than he is in possession of the skills necessary to steer your venture toward profitability. If he has time to check in on all the guys 2-4 times a day, it sounds to me like he has run out of ideas or has no real sense of direction for doing what is needed, securing customers or funding, or just choosing a vision for a product and keeping the lid on the feature set until v1.0 is achieved. I am also wondering what kind of legal agreements you have in writing for your startup. He sounds like he is setting himself up to be the lone founder, claim the lion's share of the spoils, and screw you and the other co-founders.

</comment><comment><USER8> "I don't think, for the record, that our lack of success (to this point) is the CEO's fault, and it's definitely not mine: I'm just a developer"

If you really have the attitude "it's not my fault... I'm just a developer" then you should look for a job at a larger company where work processes are institutionalized. And if you get the temptation to do startup life again start your own thing on the side WITHOUT a co-founder so you don't have any temptation to fall into this mindset again.

Without assigning fault, it isn't good that you're abdicating the responsibility to define the business and get customers, and then balking when your partner makes demands. You've settled into a subordinate position and your post basically reads as if you want to switch to another alpha male since this one doesn't seem capable of driving growth.

I don't mean this to sound critical, but life doesn't work this way, or at least it never has for me and most of the people I know. When you start a business you have to do almost everything (if only because most other people can't). So - sure - work somewhere insulated from the market to support yourself and and force yourself to be more entrepreneurial by starting a side business.

<comment><AUTHOR> Wow. Thanks for the criticism. (No, I'm not being sarcastic. One of the great things about the Internet is that people say what they honestly think.)

I have settled into "just a developer" mindset, because every time I raise issues, I lose. I pointed out things that were screwed up a long time ago, and they never changed. I guess, subconsciously, I've just accepted that I'm not an alpha male, at least not _yet_. I'd love to be wrong on that, but I've felt "beta" for more than a year.

<comment><USER9> If you _were_ an alpha male, under these circumstances you would have left long ago. Someone who refuses to address problems is not worth keeping as a co-founder.

<comment><AUTHOR> I did. Not in a "here's why you're wrong" confrontational manner, nor with lines in the sand, but I did raise many of the issues. It got me nowhere.

I don't think I'm an alpha male, though I wouldn't step as far as "not worth keeping". I make decisions about when to confront and when not and sometimes they're the right ones, sometimes not.

<comment><USER9> No, no, I meant _he's_ not worth keeping as a partner, not you!

</comment></comment></comment></comment></comment><comment><USER10> One tip if you join a bigger company: make sure you join a team that knows how to ship and is critical to the company. I don't think you want to spend _another_ three years on something that doesn't get traction. Working at Microsoft for several years, I saw too many team that didn't know how to really arrive at a meaningful feature set and ship. Well established companies often have so much money these teams don't get weeded out as quickly.

Fortunately, I didn't have to ever live through this first-hand. And that was by far my favorite aspect of working at a big company, I knew that I was working on something that tens of millions of people would use, and it would be a significant part of their lives.

Go for it! There's plenty you'll learn and you can get financially rewarded a lot more than many startups.

<comment><USER11> This is not that important. What's important at a big company is title or pay grade; after you're there for a while, it's going to be very hard to get a significant raise. But when you're coming in, it's very easy. Plan how long you want to be at the company, then ask for the title and salary you want _then_. Otherwise you are just going to be bitter, because the people that have no programming ability but have been warming the chairs for ten years are going to make a lot more money and have a lot more decision-making power than you.

Remember, as a programmer: they need you more than you need them. There are plenty of other places to work.

<comment> brown9-2 "Not that important" depends on what your goals are. Sounds to me like the GP is taking the view that job satisfaction and the pleasure of seeing the work you are doing contribute to the bottom line will be significant to the OP - <USER2> think this is good advice.

Your advice also makes sense if all you are concerned about is the size of your paycheck. But we all have different goals at different time, taking a good look at which ones are currently important to the OP will help him/her find a happier spot in life.

<comment><USER11> You don't need a job to have fun programming.

<comment><USER12> Real programmers have day jobs? :)

</comment></comment></comment></comment></comment><comment><USER13> I've been working at a large company for the last 7 years, recently quit to join another large company. I have always had projects "on the side," but those have (so far) never led anywhere, and I can only dream of joining a startup -- Why? Because the money in corporate work is good enough, the job is stable, and you are right that if someone takes you under their wing, you can go far.

On the flipside, upper management is usually not a good place for (ex-)developers (which means less money). Maybe it's just my perception of things, but it seems like you already have to be a part of the upper management club to join the upper management club, if that makes sense.

Another bad point is you have to deal with people that you will never be sure how they even got a job. This can be very frustrating at times because sometimes these people can hold a position of power, and you just have to learn to say "yes sir" in the face of an obviously-bad decision -- in fact, you may be experiencing this right now.

Finally, you there can be a huge amount of bureaucracy that you have to deal with and this can be frustrating if you're the type that just wants to get stuff done.

After joining corporate, you might not want to join a startup because your job is "cushy" and you don't want to take on that much risk. You will be "comfortable." And if you're ok with that, I say go for it, it's not so bad as everyone here thinks it is :)

</comment><comment><USER14> What's wrong with a job at a small or medium sized company? I'm guessing you're very, very young (18-22) to have such a myopic view of things. "The career game is just about spinning the wheel, repeatedly, until you actually win." Wow. Really? How about making things happen for yourself instead of spinning a wheel? There's more opportunities in this world beyond startups and "big" companies. Plenty of mid-sized companies would love to get their hands on a talented individual like you. And not all jobs will suck your soul and drive you to the edge of sanity.

BTW, at 3 years in, you guys aren't "startup"-ing anything. You're playing around at best. Time to get out and get some experience.

</comment><comment><USER15> 2-4 status checks a day, and you have not launched? That is dysfunctional. The only time that kind of status checking is warranted is during some sort of production crisis, which by definition you cannot be having.

The right big company job can be fulfilling and good for your career. Like any other career choice, it has to be evaluated on its own merits.

<comment><AUTHOR> _2-4 status checks a day, and you have not launched? That is dysfunctional._

Thank you. It's a bit much. I've observed that it leads to the micromanagement death spiral: status checking leads to low productivity leads to a further sense (on the manager's part) of the need for status checks. Too high a ping frequency leads to a work environment that's about "beating" the checks, which is shitty going both ways, an awful way to work (from an employee's perspective) and a terrible work ethic (from a manager's viewpoint). If you manage people like children, they either become children or get out.

I really let myself slide, staying out of a sense of loyalty, even though the negatives turned me from an A-player to a B-player to now a middle C. I want to be an A-player again. If that means changing jobs, so be it. The nice thing about this job search (as opposed to others) is that I have a job and no urgency.

I really enjoyed this job for the first 18 months, though. For all the negatives, it was fucking fun as hell at first, even though I was living on very little money. Then we had a panic point when we discovered how terrible our first technical hire did his part, and how much work that put between us and a launch. (No one had, to that point, audited his code. Ever. The guy is very smart and has been programming for 10+ years so no one, myself included, saw the need. Lesson learned: a programmer can be smart as hell and have years of experience and still be bad in his specific role. Trust but verify.) I disagreed with the CEO on how to manage this awful code (he wanted to use it and put me into kludge/workaround hell, I wanted to rewrite) and lost, so I dropped to a 9-to-5er because I was pissed about his decision, and _then_ the insanely-frequent status checks came.

</comment></comment><comment><USER16> I'm sorry to hear about your situation. From the way it sounds, you were never treated as a cofounder and three years and still no launch is an insane amount of time for a startup. Regardless of what the reason may have been, it should definitely not have taken that long.

Given your low reserves and being unable to join another startup because of that, I don't see an issue with joining a company that can payroll you till you're able to pursue another startup idea down the road. You should be able to work on something on the side. I actually don't share the sentiment that working at a big company is bad (or as you say, not held in high regard). Definitions of startups are skewed. Technically Facebook is a startup, yet I look at them like they're a big company. It really depends. I think there's value in being at a big company as well. Some of my best business lessons were from regular jobs working at some bigCo prior to building a startup.

In regards to your career credit... you should have been vested for stocks on a typical four year vesting schedule where if you've been there for three years, you should have vested 3/4th of your stocks already. If you were an employee, and had stock options, that's different. You would need to check.

As a developer, assuming you're good, the market is wide open.

PS As a side note, if you're ever interested in joining another startup, I am looking for a cofounder (made a post on here earlier).

<comment><AUTHOR> _From the way it sounds, you were never treated as a cofounder_

On a personal level, I like our CEO a lot. He's really smart and one hell of a great guy but he wants to hold the power/control in his hands as much as possible-- a "benevolent dictatorship" of sorts. I also think he has a great vision and would be excellent in a lot of contexts.

My issue, personally, is that I am doing this to get to a position of high autonomy-- and that may never happen, I'm coming to realize. I figure that if I work to get rich, I'll probably be miserable and might fail and, even if I succeed, won't be for the better for it (though if I have kids, they will be). Or I can work toward autonomy and enjoyment, maybe get rich and maybe not, but at least have the rare privilege of actually _enjoying_ going to work. I'm doing the startup because, if it pans out, I'll have a really cool job and lots of autonomy. Maybe. But if the CEO decides I'm "just a developer" and I end up answering to some hired-gun VP, then I'll have no choice but to quit and, if my equity doesn't do well, years of my life will have been lost.

There's a certain natural distrust I have of business people. Most of them don't mean to do any harm, but they waste others' time and ruin lives with their overconfident promises and their willingness to trample others' interests if they see it as the profitable thing to do. On the other hand, a dismal realist like me, one who acknowledges that failure is _possible_ , can't inspire people in the way profound promises can, now can he?

 _three years and still no launch is an insane amount of time for a startup. Regardless of what the reason may have been, it should definitely not have taken that long._

I'm not sure how I feel about that one. First of all, there were definite (but forgivable IMO) time-eating mistakes we made in the process, and our first technical hire is brilliant but was a really bad choice for the first programmer, and we're still paying that down. As for time-to-launch, I think there are a lot of "social" startups that can be hacked together in a few weeks, but deep technology takes longer. Maybe not 3 years, but definitely 12 to 18 months.

 _As a developer, assuming you're good, the market is wide open._

I think I'm both too good and not good enough. "Too good" in the sense that I die a little bit when I have to use languages like Java instead of languages like Haskell or at least Python. "Not good enough" in the sense that I didn't become a programmer until age 24 and, despite natural talent, I feel like I have a _lot_ of catching up to do. There's so much in software that I've never touched; it was only a few months ago that I learned HTTP and REST.

 _PS As a side note, if you're ever interested in joining another startup, I am looking for a cofounder (made a post on here earlier)._

Thanks. I'll look at it. I'm actually not looking to move until mid-summer. Given that this is a tiny company, I'm more inclined to give 2-3 months' notice than the standard 2 weeks.

<comment><USER17> > (though if I have kids, they will be)

Not a parent, but I think the best thing you can do for your kids is to lead a good life yourself -- where good is by your own standards.

> I feel like I have a lot of catching up to do.

I must say -- you describe your skills similarly to most people I know who are _seriously_ good. Really good people recognize there's a lot of stuff out there they don't know and would benefit from learning.

</comment></comment></comment><comment><USER18> Leave. Your hard work is being wasted there. I was in almost an identical situation. When I left the company folded, but funding was getting short anyway (the first time a check bounced I used that as my excuse). The boss won't be happy, but you can only go up from where you're at.

Happy side note: 10 years later I'm running my own startup (only founder) and it's great. However, working in big companies between the two was definitely helpful.

</comment><comment><USER19> I've found that small companies,100 or so people, with shipping profitable product are a good fit. They are small enough that an individual developer has an impact, but they dont have the stifling bureaucracy of larger, especially public, companies.

Surprisingly, I've found that the frequency of releases is a good indicator of how happy I'll be. A release every week or two is very comfortable without huge pressure. Releases every few months are hell. Death marches, endless requirements documents, way too much process, lack of tools, cant get something because it wasnt budgeted last year. You get the picture.

</comment><comment><USER20> There is also an option to go for mediums-sized companies that have validated business model and revenue stream: Eventbrite, Chegg, Twilio, Palantir, etc...

<comment><AUTHOR> Good point. I've never worked in a truly large company before. For me, 100 is "large". Most people probably call that medium-size.

I have nothing against working for a funded startup at this point.

<comment><USER21> Not sure of your background or skill set, but Heroku is hiring like crazy. We're now owned by Salesforce.com but that relationship is as hands-off as you can imagine. I think we've got the best of both worlds (startup & big company). Take a look at jobs.heroku.com or send me your info if you're at all interested. Did I mention we're remote-friendly? b [at] heroku.com

</comment></comment></comment><comment><USER22> It seems you are in a situation where I was a long time ago. I also was frustrated, because the CEO had the same attitude, the start-up never started making money, low pay, no savings.

I was thinking about quitting for a long time, but didn't do so. I felt loyalty, I was green, I was the developer guy, I didn't really know how businesses are created, yadda, yadda. At the same time I felt that things were not right, we were not going to the right direction.

After some years I decided to quit. Being broke was the last straw. I was also becoming toxic, a hostage, I had to quit to save myself and the start-up.

It was a bit hard to find a corporate job, because I didn't develop any good connections to the industry during my start-up time. Eventually I landed a job in a big company. It wasn't the best of jobs, but got me started in my current career. After two years I got a call from a manager that quit from that company. That's how I got my next corporate job. Then after three years, the same manager called me again and I got my current corporate job. And now I called that manager and some other ex-colleagues to offer job opportunities. You get the picture.

In hindsight quitting was the best decision I ever made. Two years after I left the start-up lost funding and went bust. Steady income improved my life significantly, I paid off debts, started saving, travelled, had real vacations. Almost all the stress and pain in my life was gone.

The only thing I regret is that I didn't quit earlier. I didn't believe in the start-up, but I kept hanging around, I was wasting my time. Since this experience I have made the decision to trust my gut feelings. If I feel something is wrong, I'll trust myself. So far this has served me well. I keep large savings. The idea is that if I ever need to make a jump to the void, then I'm able to do it.

My advice based on my own experiences:

\- If you are finished, get out, because you are wasting your time and potentially other people's time.

\- To maximize your chances to get a job in a big company look for a good match. When I quit I applied to all sorts of interesting jobs, but never got a reply. I did graphics programming, and unsurprisingly I was eventually hired by a company that desperately needed a graphics programmer.

</comment><comment><USER23> I work for an established company - we are only 60ish people, but the company has been around for a very long time now. The resumes I see often contain companies I have never heard of and that is perfectly fine - as long as you can tell me what cool things you worked on, you would be a candidate I would listen to. Just because you haven't worked at some larger agency, it really wouldn't matter. It's how good of a coder that you are that really matters.

</comment><comment><USER24> I agree with some of the other posters here, there is no shame in working for a big company, there is also no shame in working for a startup and not having an exit (lots of people do it)

I would say you are a great fit for some well funded companies that are still considered "startups" i.e. Twilio, Airbnb , HipMunk, etc. judging from your comments and without seeing your resume.

I am rare in the sense that I have never actually looked for a job since I have always had my own ideas for projects or startups that I have always decided to pursue. But I can tell you the one thing I see most often when I am looking around is that almost everyone hiring is looking for a 4 year degree (since I am a dropout maybe thats why I usually dont look/apply for jobs) but if you have finished your degree I am sure you'll do fine.

Personally I was not even going to school for programming I started doing it in middle school for a hobby and it progressed from there, I sold a software company in my junior year of college and never looked back, even still I am not sure many companies would hire me because of my lack of a degree, so that is something else to consider as well.

I dont think you should at all feel selfish for considering your future or desiring to be able to save money again, at the end of the day if you are not happy you are not putting your all into the product and the MVP probably will never be as good today as it would have been if you had put it out 3 years ago with a fresher vision and lots of drive.

I'd say to follow your gut, seems to me most peoples first instinct is almost always their best.

Good luck with everything!

</comment><comment><USER25> Moving from a start-up to bigco: Most important change - you can go from VP/head Engineering (in a 2-man team) to something significantly smaller, especially if you don't have many years of experience.

Career credit: Depends entirely on what you have done at the start up and how it fits with the target company/role.

The answers aside, life decisions are not popularity contests. You need to do what makes most sense for you and most importantly, what sits right with you. Outstanding HN karma does not pay anyone's bills :)

Early stage companies are much like relationships, they don't always work out. You need to know where the invisible line that demarcates your being good for the company and being bad for it lies. Sometimes, the propensity of things/people you love and care for the most to cause you more harm than even your worst enemy is incredible. Stay on the right side of the line.

Not everyone will like you all the time, you can't do everything right all the time, nor will good fortune follow you all the time. When it is bad, lie low, survive, find your way out. When it is good, pay it forward and make up for the bad you have done.

Good luck :)

</comment><comment><USER26> Here is my story about leaving my own and joining a big.

We started it aiming to be a big fish in a tiny pond (software for embedded wireless devices, niche market, yes). But, as an expected result for a project without well-defined goals, we weren't able to build any working software. While we were at it we made money with contract jobs and that reduced time to work on the project furthermore as we were self-funded and it wasn't enough to feed us for more than six months.

To make it worse, one of the founding member, who is a specialist about digital signal processing and we couldn't go without, was considering pursuing academic research.

After plodding through that muddy state for almost five years, I had accumulated enough fatigue and eventually we decided to dissolve it.

Other members had found their own way and I found a job at a big company. Maybe I was fortunate, because it's quite difficult for a thirty-some with somewhat messy job records to find a job at an established company, esp. in Japan. Or maybe not, because my experience and skill set were considered versatile particularly in embedded systems industry.

As others says, I thought of it as bartering freedom with stability. That is partly true, but it wasn't that bad. Among others, it's a definitely invaluable experience to make software of a hardware product that are to be sold in thousand millions. That is what I never do in a small startup.

So mine is one example favoring your move, whatever your motivation is. I believe many big companies think your 3 years at a startup a big plus. Why? Because big companies are full of people without that experience, often only top execs have it, but they sometimes have to start new to survive.

As for maximizing your chances of getting a job at a big co, it is critical to understand and clearly state why you failed. I'm sure they will ask about it if they are decent.

</comment><comment><USER27> While I can fully appreciate your sense of loss about leaving your company, you have to do what's good for you. If you've been in development limbo this long, odds are the CEO doesn't have the vision and or the leadership required to get over the finish line. Just remember that if need be, the company would get rid of you without a second thought.

</comment><comment><USER28> Go for it. Take a quick detour job to build up savings, and then find (or create) another startup in a year or two.

>Strategically, what should I be doing to maximize my chances of getting a decent big-company job?

I had a hell of a time getting interviews as a 'co-founder', and ultimately ended up changing my title to 'lead developer'. YMMV.

</comment><comment><USER29> Don't focus on the size of the company.

Smaller companies will be more ready to discuss and consider nontraditional job experience. Smaller companies will be easier to analyze for exactly what kinds of projects you'll be working on. Smaller companies will be more transparent in terms of giving you an idea how your work environment will feel. Smaller companies will allow you to make changes to your own circumstances more easily. Smaller companies will be more likely to recognize, and reward, _real_ talent rather than ass-kissing and toeing the company line. While larger companies tend to be more resilient to the vagaries of the market, thus ensuring their continued existence, they achieve that in part by being willing to lay off hundreds or thousands of good workers at a time when the going gets tough, thus eliminating any imagined job security benefit (though there are exceptions, like Toyota).

About the only advantage a big company really has is the ability to make a lateral career move with greater ease, in organizations that encourage hiring from within, because they're more willing to hire someone without relevant experience as long as they have plenty of experience within that organization.

Remember, there's a difference between "startup" and "smaller company". Many smaller companies are stable, friendly work environments where people have a fair bit of autonomy (relative to the vast majority of the bigger companies), _without_ suffering the problems that afflict dysfunctional startups. You don't need to take the diametrical opposite career track to get a couple of benefits that are lacking in your current circumstances; you just need to make a change by enough degrees that it addresses the specific problems you currently face. In fact, you're more likely to be happy that way, because you don't have to give up as much of what you _like_ about your current circumstances (even if you do not realize there are things you like about it).

edit: Okay, maybe you should focus on the size of the company somewhat -- but not the way you think.

</comment><comment><USER30> Please for the love of ada lovelace. Do Not Do This. Pivot, start something new, what ever you do stay free. Do it for those of us who dream to have the will to someday also break free of the share cropping bit shoveling that is big-company job-land.

</comment><comment><USER31> I started out in a medium company not really doing anything exciting, but doing it fast (and in .NET... bleh!). I decided to go the startup route and tried that and failed twice over the next two years. At some point I got fed up with job hunting and decided to move into a bigger company.

It did wonders for me. Not only did I learn all the things I couldn't with startups (managing 200+ webservers, 75 DBs, tables with over 100 million rows etc...) but I was able to fine tune exactly what I DO want in a career.

Every opportunity offers something unique so its just a matter of extracting the things that benefit you until the point at which it becomes boring or you stagnate. Then move on :)

</comment><comment><USER32> Just wanted to add that unless your partners in a startup (and that includes the youngest employee or the newest employee) does not have an emotional ownership in the goals and objectives of the startup, unless they are incentivized by the belief (beyond monetary incentives) that what they each create will embody their deepest passions and aspirations while enabling them to achieve their best potential.

I didnt write this though. I am borrowing from "What makes entrepreneurs entrepreneurial" a study that tries to understand the spirit of an entrepreneur. You are well advised to share the study with your CEO.

<comment><AUTHOR> Thanks.

I gotta say that the drop in my motivation was gradual. I posted this above: the first 18 months were great. A lot of coding and I had a hell of a good time. When we hit a panic point the CEO made a decision that I thought was bad, and became a 9-to-5er during the 6+ month shit project this bad decision generated, mainly because I just couldn't work on it for longer and saw no point in putting in more ass-in-chair time to keep up appearances. So he started ramping up the status checks (to 2-4 per day) on everyone. I think this high-frequency checking had more to do with our panic point than anything punitive, because everyone else got hit with more pings, but it _felt_ punitive. And when status checks are that frequent, it's hard to be more than a 9-to-5er. An 8-hour day with frequent interruptions is, IME, about the same as a 13-hour day, in terms of fatigue, in coding flow. Much less fun and far less productive, too.

</comment></comment><comment><USER33> Not all startups are created equal, and I seriously think you can probably find a place that is not a "big company" but nevertheless has things you are looking for. Why not get a job at something like Dropbox?

</comment><comment><USER34> _"just about to heat up"_ If you haven't launched there is nothing to heat up, well maybe the air(as in nothing but hot air.)

 _one that a future employer won't have heard of-- do for (or to) one's career_ Do you believe your future employer has heard of every company that has ever employed a software developer? Sure they won't be like wow that guy worked at Google, but they also won't say he has been living in his mom's basement for the past three years. It will be up to you to convey what you have been doing professionally in that time.

</comment><comment><USER35> don't worry so much about the career thing. if you're at a good and challenging spot that meets your personal needs, you'll start to shine automatically.

think about what really makes you tick, and try to find a place that matches this. why are you in a startup? for the autonomy? or for the superhero feeling? for the potential big money? other way around, what of that won't you mind missing if you switch to a big company? answering these questions may help you find the kind of spots you like best. describe the workplace you'd like before giving it a name.

i mean, there are middle grounds, it's not a black and white thing. i work for a 250-ish people software consultancy firm, who 'rent' me to a well-funded and well-managed 10 people startup. i have all the joys (and occasional overtime/stress) of working at a startup. this includes high degrees of autonomy ("we need something fixed here and there, kind of, to solve this and that problem. we think. you work it out.") and a cozy "us against the world" atmosphere.

meanwhile, at my actual employer, i get coaching from experienced engineers and managers, a training budget, and the comfort knowing that if ever my work at the startup stops being challenging enough, i can switch projects without even quitting my job.

this matches my needs, as a result of which i'm learning and growing fast. what are yours?

</comment><comment><USER36> If you've been working at something for three years and have not shipped anything yet, you're not at a startup.

This is a perfect example of the anti-lean "startup", though, so I'm sure you've learned a lot about what not to do.

I would leave for sure. Wether you choose a safe desk job at a megacorp or at an actual startup this time around is your choice. Just keep in mind that real startups ship, iterate and learn. Constantly.

</comment><comment><USER17> If you are seriously considering leaving, it seems like you have a lot of leverage to ask your CEO to be treated differently.

<comment><USER37> you don't ask to be treated differently, you demonstrate that you're worth being treated differently. an attitude like "its not my fault, i'm just a developer" isn't helping.

<comment><AUTHOR> _you don't ask to be treated differently, you demonstrate that you're worth being treated differently. an attitude like "its not my fault, i'm just a developer" isn't helping._

Damn right. A kick in the pants for which I thank you.

CEO said he didn't intend on having me attend investor meetings because blah, blah I was too green. I figured I'd work hard for 6 months and change his mind. Never happened. At the time, I didn't see the need to go to investor meetings, didn't see that they'd be a good use of my time. But now, with a CEO who meets with customers and investors alone, he actually can call all the shots unquestioned because he's the only one with knowledge of what they need.

He was actually honest with me, before I even started, that he didn't think I was true co-founder material... by saying that he'd not be bringing me in on investor meetings. I was just naive and thought I could "prove myself". And I only got to double-digit equity because of going on deferred cash for so many months (far more than he thought it'd take to get VC). I just let myself deny it, figuring I'd win him over with 12 months of hard work. It never happened, and now my attitude is weak, my work ethic has become mediocre, and I just need to change everything: circumstances and attitude.

<comment><USER37> hi! so, yeah, you were never a founder, it was a sugar title. I don't think I'd ever co with someone where there wasn't an equal balance of value and credibility.

HN sometimes has an attitude of "oh, you aren't a founder? you suck" but that isn't true at all. If you do have the itch to take on founder challenges, don't let this stop you from trying again, in a domain where you are credible and with a balanced founding team. Or, stop worrying about it now, put yourself in places where you will pick up these skills from mentors, you will wake up in a few years with the skills and credibility to found a company of this magnitude.

</comment></comment></comment></comment><comment><USER38> Three years in without success is not terrible, but three years in without even launching is a big red flag. Sounds like even if they do eventually succeed, your boss, er co-founder, will try to marginalize your share/compensation/etc anyway. I'd go.

</comment><comment><USER39> Look to joining another startup. Three years is too long. Look into evaluating your current predicament every 6 months. In a corp job, two years is the maximum I'd expect in any position, and you stayed three with a startup...

Seriously look to join another startup.

<comment><AUTHOR> I could definitely do this if the startup job could pay me full salary. Alas, I'm in New York and would not leave the city lightly: family and friends. It'd have to be a dream job for me to consider moving, and with the rocky career I've had I don't even think dream jobs are available (or maybe it's just that I feel like a failure because I'm near 30 and haven't broken out yet).

My appraisal of startup vs. big-company life is that startups have more variation in individual monetary payoff, while big companies have more variance in quality of work. At a startup, you get a mix of interesting work and shitty grunt work that has to be done, and there's nothing personal about it because everyone is getting about the same quality of work, and because doing the grunt work is well worth it if the startup pays off. In a big company, you can end up in an AI/machine learning research group with high autonomy... or you can end up maintaining some shitty legacy payroll system.

But yes, I would consider a job at another startup. Or at a big company. Or at my current company if I knew the situation would improve. I don't _want_ to be a "job hopper" and would love to find a job where it's still worth it to show up for work after 5 years.

</comment></comment><comment><USER40> If I were not working on my own startup, or an important stakeholder in the startup I'm working for, I'd much rather work for a big company. The stable hours and free time would give me more time to work on my own startup on the side.

</comment><comment><USER41> You might consider contracting for a big company rather than being a bigco employee. More time coding, less time in meetings/politics, etc. I did that for a few years before focusing on founding startups of my own.

</comment><comment><USER42> It's also possible to work at a growth-stage startup (Twitter, FB, Zynga, Groupon, etc). They pay market salaries, but there's some upside too.

</comment><comment><USER43> Just shot you an email -- you should consider working with us (Profitably) if the fit is good.

</comment><comment><USER44> Is it better to be known as a quitter or loser?

Is that the question???

</comment><comment><USER45> I'm not going to comment on whether you should try to fix things at your current company but I have some good perspective on the job market and some of the options that you are looking at so I will comment on those things (both from your original question and in some of the comments)

I just finished a job search focusing on medium size companies (specifically I was looking for funded, growing startups with say 20 < total staff < 200). I have a good network and got some great leads and had three great offers in hand after a one month search process. I don't say that to boast, just to point out that there are lots of opportunities out there. Everything that I saw and heard in the process confirmed that this is a great market for a developer looking for a job. Several other people whom I know were looking at the same time and all have accepted or are close to accepting new positions. For more confirmation look at Fred Wilson's post today, it even links to the USV jobs board: <http://www.avc.com/a_vc/2011/03/the-war-for-talent.html>

Unless there is something specific that you are looking for in a large company (and it sounds like there isn't particularly) then maybe you should be looking at funded startups as well? This can be a great option: the company is funded so you probably don't have to worry about getting paid this month or next month (although that concern may come sooner or later, keep alert!); they are small and hopefully growing so you still get to wear lots of hats and can have a large say in defining your role and can still see your personal impact on the company's future; they won't have the bureaucracy or organizational overhead of a large co; lots more too. True you won't have as large a stake as you have now but 0.001% of something valuable is better than 25% of nothing!

As to finding a job, in my experience getting in through a recruiter is the hardest way and least likely to succeed. Having your resume submitted by someone in the company or finding a founder here on HN or whatever other inside track you can find is much more useful. Now that I think about it, I realize that in 16 years in the industry I have never once gotten a job through a recruiter (that isn't entirely true, my first contract position went through a recruiter but they were given my resume by someone at the company that was hiring contractors). Every time except that first one I started the conversation with the person or people who would be making the hire/no-hire decision and going back to recruiting to setup the interview loop, etc. was just a formality.

So fire up your network (and if you don't have a good one then start building one! Go to startup events, Python tech talks, whatever excites you). Start looking for opportunities, talk to people, maybe go on some interviews to see what is out there and to see how you do.

In one of the comments you express concern about your age, "near 30 and haven't broken out yet". Well, I say don't worry so much about that. I was 27 when I got my first computer industry job as a contract Software Test Engineer at Microsoft; I am 42 now and doing very well in Senior Engineer/Architect level positions. Don't be fooled by the myth that you have to make it by 25 or whatever.

Your resume may be a bit thin, that is a concern but remember that everyone started with a blank resume. You need to figure out how to explain your accomplishments over the past three years that doesn't focus on not shipping and does focus on what _you_ did do.

Don't worry too much about being a job hopper at this point; three years is a long time at one job and squarely within the normal range. If I saw someone with a string of <2 year jobs or a couple of 6 month jobs I would ask about it, and there could be a reasonable explanation, but 3 year jobs? No worries there.

One very good piece of advice that I got as I started my search: you only get to pick a new job half a dozen or at the most a dozen times in your career so pick good jobs!

</comment><comment><USER46> "It's been almost 3 years, and we haven't failed, but we haven't launched or secured funding yet"

Dude, drop what you're doing and get out.

</comment><comment><USER47> There's no absolute truth about whether the "work gap" or whatever will affect you. It's all about who you approach and how you spin it.

Theoretically, when I got my first job at 21, the fact that I'd never worked for anyone else, never had a set office schedule, never worked in an office at all in fact... would have been a detractor. But I wrote a beautiful cover letter explaining just how well freelancing prepared me to be a take-charge, self-motivated, self-managing and flexible worker.

See what I did there? You do the same. Plus you obviously demonstrate staying power.

There are never enough good people to fill tech jobs.

Finally, why would you feel disloyal to someone who was disloyal to you? You clearly tried to put more into the relationship than he did. You can only do so much. He decided the tone of your relationship, he decided how (little?) much you were worth to him, and that's that. He made his decision - exit with a clear conscience.</comment>


Ask HN: Any good resource for learning about GIS? - <AUTHOR> Topics I'm interested on: GIS, coordinate systems, projections, geometric computing?<p>Thanks <comment><USER2> You may find this useful: [https://www.osgeo.org/resources/](https://www.osgeo.org/resources/)

<comment><AUTHOR> Thanks!</comment></comment>


The Bull's Case For Groupon  - <AUTHOR> http://www.businessinsider.com/the-bulls-case-for-groupon-2011-8

<comment><USER2> _Groupon has finally found a way to get local businesses to spend on advertising, which is a ginormous market._

Uh, Groupon has some ways to spend enormous amounts of money to get a few businesses to waste some money on ads.

What Groupon probably knows by now and anyone who invests in it will find-out, is that at the end of the day, local businesses simply don't extra money to spend on advertising. Local businesses such as restaurants or food store are distributing scarce resources with a low margin. They are mostly "stones" and you can't squeeze "blood" out of them. So its not just that Groupon's model won't work and that Groupon has no customer loyalty. It's there's just no alternative model that could work.

If Groupon were to somehow 100% succeed and every small business had to pay them something to get customers, they would simply face a rebellion as the average, pushed-to-boards small business owner realized they'd just gotten one more fixed cost that was bring them nothing. I mean, the thing that's not understood is most small businesses have no economies of scale, most small businesses have low profit margin. Small businesses altogether represent a huge chunk of capital but very little profits. Most small businesses _fail_ \- think about it. If a given field offered serious profits, a large business would have already taken it over.</comment>


Ask HN: Is there a sane alternative to Angular and React? - <AUTHOR> Slightly tongue-in-cheek but nonetheless serious question. I've recently started looking into JavaScript UI frameworks and have the uneasy feeling they are actually worse than the now defunct Flash and Silverlight.
Angular and React seem to be a mish-mash of proprietary syntax and technologies (AtScript, JSX, TypeScript etc.) that paper over some of the cracks in JavaScript and CSS.
Are these transitory technologies that will be replaced by something better in the near future? Is there a better alternative available today? <comment><USER2> No, none of this platform is sane. It's not designed, it's evolved. Embrace the madness or fail.

The web is not desktop applications. The network is always there, the network is slow, the network is asynchronous. The network can fail. You cannot abstract over this with a clever library. Unless you don't care about pushing out 4mb of javascript before first render, you can't ignore it.

The front-end is not a server based application. It's relatively straightforward to just echo out some html from a server. This works pretty well, and conceptually it's easy. But the UI has events. Events are asynchronous. You cannot abstract over this. It cannot be ignored. Unless all you need is the off the shelf components and no custom interactions, animations or logic.

Every UI framework for the front end is aimed at solving a _specific_ problem, a _specific_ complexity. Before adopting ANY of them, you have to seriously ask yourself if you actually have that problem before just jumping on the bandwagon- in most cases, in my experience, you probably don't. But by adopting some "framework" you've just added a problem. you've added a complexity. If you had the problem, it might be worth it. You might have netted less complexity.

But probably not.

Browsers have come a long way in 10 years, if you haven't been paying attention. _Most_ of the cross browser problems have disappeared unless you're using new things like web sockets, web rtc or indexedDB, or something crazy like that. The browser is already a UI framework with all the basic widgets, text layout, image manipulation, audio processing, etc. etc.

From a perspective of a _user of your website or service_ , ask yourself what value something like react is really adding.

<comment><AUTHOR> This is one the most insightful responses, so much of this rings true to me.

 _It 's relatively straightforward to just echo out some html from a server. This works pretty well, and conceptually it's easy._

I remember reading an article recently (I can't find it) that argued that the human readable part of the web should have been just this, a place for static pages to render and be read. The reason it works so well is because that was what it was designed and build for. So it has basically just completely escalated by its attempt to replace native applications. Except it is and always will be worse at everything a native application does.

 _You have to seriously ask yourself if you actually have that problem before just jumping on the bandwagon._

I suppose that is sort of complicated by the fact that every framework out there tries to sell itself as the best thing since sliced bread, except advertising what is _for_.

 _Browsers have come a long way in 10 years, if you haven 't been paying attention._

It is absolutely amazing what has been achieved.

<comment><USER2> To clarify, when I said "the web is not desktop applications", I meant that you cannot program a "web app" as if it's a desktop application. The assumptions are all different. The entire execution model, and the way modules are included is different. You can achieve things very much like a desktop application, as far as a user is concerned. But: The network will slap you if you ever decide it's something the compiler is taking care of for you.

</comment></comment></comment><comment><USER3> I cannot fault the communities around React and Angular and the support that they give to each ecosystem. I would say that the React community seems to be 'stronger' these days.

I note some people are mentioning other JavasScript frameworks (e.g. [http://aurelia.io/](http://aurelia.io/) [https://vuejs.org/](https://vuejs.org/) [https://mithril.js.org/](https://mithril.js.org/) [https://choo.io/](https://choo.io/) [https://svelte.technology/](https://svelte.technology/) ) They ALL have their merits, but it all comes down to the development community around them, and for me, the jobs out there.

Recently somebody asked in our local JS group what framework to learn and everyone responded with React. The jobs are there, the dev community is strong, and more importantly the learning curve is good, particularly with the hand holding create-react-app now does. Yes, down the line, you will have to learn react-router and maybe redux/mobx, but all in good time.

</comment><comment><USER4> Excellent question. Turns out there is: [http://elm-lang.org](http://elm- lang.org)

Is a Haskell inspired programming language that makes developing front end a delight.

It helps to build Reliable front ends. Watch this conference to get a sense of what Elm does. Making the Backend Team Jelous[1]

Plus the Elm architecture makes everything orderly and easy to understand.

Quite a change from the mess of react components and Angular rewrites.

[1] [https://youtu.be/FV0DXNB94NE](https://youtu.be/FV0DXNB94NE)

<comment><AUTHOR> This looks great, and thanks for providing the links. Is Elm production ready? Have you used it to build any apps?

<comment><USER5> I talk about my experience. I deployed Elm to production in several projects for the biggest group fitness company in the US.

It's incredible. Compiler errors are incredible. No undefined bullshit. It's purely functional, so the code you need to understand at the same time is always gonna be inside 20 lines. And you can use it with javascript if you want too.

You will learn a lot using a pure functional programming language. Programming is about transforming data, so even if I go back to any OO language I learned that state can cause several problems.

<comment><AUTHOR> That sounds great. Did you have to convince anyone to adopt Elm or were you free to pick your language of choice? Using a pure functional language appeals to me as well.

</comment></comment></comment></comment><comment><USER6> Vue.js is saner because it does not have that JSX nonsense and you can still write most of the code however you like, and later upgrade to babel,typescript etc. Particularly I like component structure [https://vuejs.org/v2/guide/single-file- components.html](https://vuejs.org/v2/guide/single-file-components.html) which kinda does the same in more traditional approach.

<comment><USER7> The main reason I didn't consider Vue was because I like coupling HTML and JS like React does. But this seems like a much nicer way of doing it than JSX. I'll have to give Vue another chance.

<comment><USER8> > But this seems like a much nicer way of doing it than JSX.

Note that there is no requirement to use JSX, JSX is just syntactic sugar for the underlying function calls which you can use directly: [https://facebook.github.io/react/docs/react-without- jsx.html](https://facebook.github.io/react/docs/react-without-jsx.html)

That's useful when you don't want to add a local compilation file when developing/debugging.

<comment><USER9> This argument doesn't make sense because doing it like that is even worse that JSX.

</comment></comment></comment></comment><comment><USER10> ASP.NET MVC for the back end is beautiful, clean, simple, and then you can use a bit of jQuery on the front or use Knockout JS if you want to do data-binding with MVVM and not have to learn with or deal with all the other crap of those frameworks mentioned as that is what MVC already does for you.

Don't reinvent a browser in the browser or waste more time on JS than you need to, you'll feel so clean separating things.

<comment><USER11> Please don't.

I already have a really hard time communicating reason to m$ people. They get these ridiculous ideas from the likes of you, and waste countless hours beating a dead horse.

There will be no servers to configure in the future. We will be spinning up containers in a swarm, and communicating with those services via de- centralized lambda function pools. Bulk of future devs will spring up in frontend. m$ lost its monopoly in backend to AWS and the likes. Do you think they started OSS because they are nice? They are desperate and throwing money at the problem.

> jQuery on the front or use Knockout JS if you want to do data-binding with > MVVM

I'll say the same thing to someone who tried to make a case for PHP; you are doing a disservice to the clueless reader (likely a new grad). Kids, listen to me; don't ever say that in a job interview. You'll be politely rejected, and never hear from them again.

If you __started __to use jQuery after 2016, just keep that to yourself. It shouldn 't matter that much, but it does. It signals you are comfortable with being mediocre.

> waste more time on JS than you need to

Again; just don't. Just because your past 10 years of acting "1337 programmer" through drag-n-drop some VC (nuget?) modules vanished doesn't mean future programmers need to go through that soul crushing m$ travesty.

What is the UNIX philosophy? What is m$ (still) trying to do? Do you think those guys don't know how to pick successful ventures? Think. You are up against a company here, not a friendly group of developers.

Not that you can really resist the change, mind you. I'm not asking you to stop peddling your inferior wares because I'm afraid you might stop progress. I'm _suggesting it_ because you will be left holding the bag when m$ finally starts chopping bits off the MSDN network, and Oracle silently discontinues Java after v9.

Try to advance, not defend your crumbling castle.

p.s. Had to create a new account just to reply to this. Hadn't logged in in a couple years.

</comment></comment><comment><USER12> Server-side rendering with partial views?

You're never going to get something as simple as Flash, with a write-once works everywhere. But your user's aren't going to be annoyed at the crappy UX that Flash (or Flex) applications brought us.

EDIT: I'm dead serious about this, with the concept of isomorphic apps, I'm not convinced building thick Javascript-based clients is necessarily the way to go for a lot of use cases, including the traditional business information worker-type of application. With these modern JS frameworks working on the concept of rendering virtual DOM diffs, why not just render the partial diff on the server and swap out the specific DOM on the client page?

<comment><USER13> The application I've inherited and support is a Rails app that does this. I hate this pattern. It's very difficult to change things and burdens the backend developer with the responsibility.

<comment><USER14> I'm pretty new to Rails, but I'm implementing something very similar to this. Is there's any open source mature Rails app that might demonstrate what your seeing/maintaining? I'd be curious to see how this pattern looks as it grows.

</comment></comment></comment><comment><USER15> Both TypeScript and JSX are optional, you don't have to use either with them.

There is a ton of different choices out there to choose from if React and Angular are not your thing.

One example: Ember.js recently moved their rendering into a standalone library called Glimmer ([https://glimmerjs.com](https://glimmerjs.com)), which is a bit React-like in its approach but nonetheless different. They advocate Typescript as well but don't require it.

Elm seems like a thing people like as well, check it out here: [http://elm- lang.org](http://elm-lang.org) \- but it's a js compiler so it's also what you might classify as a "proprietary" tech.

If you haven't already, check out [http://todomvc.com](http://todomvc.com) \- it's the same sample todo app built in a buttload of frameworks so you can compare which one you like.

<comment><AUTHOR> It is interesting you are the second person replying in this thread to point to Elm. I must check it out!

I suppose both TypeScript and JSX are optional but they are symptomatic in a way in that their existence suggests the alternatives are sub-optimal (i.e. a combination plain JavaScript or a clear demarcation of markup and styling).

<comment><USER13> Elm is neat but definitely goes against the very properties you're looking for. But if you want to take a peek down that road: [http://mutanatum.com/posts/2017-01-12-Browser-FP-Head-to- Hea...](http://mutanatum.com/posts/2017-01-12-Browser-FP-Head-to-Head.html)

</comment></comment></comment><comment><USER16> If you haven't yet you must look into Vuejs as well - [https://vuejs.org/](https://vuejs.org/)

<comment><USER17> and Quasar too - [http://quasar-framework.org/](http://quasar-framework.org/)

</comment></comment><comment><USER18> > _Slightly tongue-in-cheek but nonetheless serious question. I 've recently > started looking into JavaScript UI frameworks and have the uneasy feeling > they are actually worse than the now defunct Flash and Silverlight._

Angular, at least up to 2.0 which I've checked, it's a conceptual mess.

React, on the other hand, is conceptually better than Flash and Silveright, and even has more powerful abstractions in several areas.

The problem is that React handles a small part of the logic that Flash and Silverlight do (or, something like Flex would), and does so at various levels of the whole stack (some low level like diff-ing repaints, others at higher level like component nesting), and all the wiring and extra handling is left to the programmer to handle.

For all the progress with React and co, it's still the wild west as far as programming efficiency is concerned. Elm is not much better either.

</comment><comment><USER19> React is, in many ways, a take on Flex's excellent MXML updated for a JS world that understands that 2-way data binding is the devil.

It is very sane.

<comment><USER12> I agree, I feel React, much like Flex's MXML forces the developers to componetize the entire UI as part of the development process in a way that feels natural.

</comment></comment><comment><USER20> As someone else said the platform itself is not sane.

However on the scale of things that we have, React is pretty sane.

I have never seen someone who spent significant time with React and thought it wasn't sane.

There are some people who are stuck with some 2005 MVC jQuery PHP AJAX mindset repeating worn-out lines like "don't mix logic with views". All their alarms go off when they see JSX.

I don't for a moment think any of this crap that we have is "elegant".

I hate TypeScript/Javascript/React/Redux/Webpack/JSX/Yarn/NPM/Node etc... and I also love them and use them.

Those things that I listed in 2017 enable a class of web applications to be created that is simply not practical to build with send-html-from-the-server- and-sprinkle-jquery-event-handlers-on-the-client technologies.

At this point it's Javascript vs everything else.

I used to build applications with PHP/Laravel/Django/Flask/Sinatra etc... now I don't consider them anymore for web applications (still ok for content sites, not complex applications).

The smooth robust magical UI/UX that I can achieve with TypeScript/React is miles ahead of all other options, it's still full of crap, but still miles ahead of other options.

Again I re-iterate my main point, which is things have now changed in such a way that the competition has become Javascript/TypeScript vs everyone else.

If you are going to build HTML in a string on the server and sprinkle some javascript on top it doesn't make that much difference whether you use PHP or Python.

</comment><comment><USER21> [https://vuejs.org/](https://vuejs.org/) is my favorite alternative

</comment><comment><USER22> React does not require JSX; it is just a sugar over React.createElement. By way of example:

Hello World

React.createElement('h1', { className: 'title' }, 'Hello World');

A very contrived example but it's pretty simple to see that if you're coming from a background where you previously used a lot of "JavaScript in HTML" and aren't used to "Markup in JavaScript" it makes for a good middle ground. As well, as you can likely infer from the example, when you start dealing with various nested children the pure JavaScript solution can get somewhat unwieldy; though that comes down to taste, mostly.

While I empathize with your position (I'm not a big fan of the transpilation trend) I do find React to be much more sane than Angular 1.x was and much more relevant to what I build than jQuery.

</comment><comment><USER23> Since I discovered Clojurescript using reagent, re-frame and figwheel it is hard to go back to any JS framework, or JS itself. The feedback cycle is so short that it feels like doing Smalltalk properly.

Now I wish I could use similar combo for mobile and desktop development.

<comment><USER24> > Now I wish I could use similar combo for mobile and desktop development.

Check out "re-natal". That at least gets you mobile, and perhaps desktop once react native has a good desktop story.

</comment></comment><comment><USER25> This whole JavaScript "revolution" seems surreal to me. I still can't believe they snuck JavaScript onto the backend.

Edit: Angry is a better word.

<comment><USER26> 'Angry' will be me once they start publishing metrics on how optimized JS (or what, webASM or something?) beats out native.

Oh, I'm sure it's being done already. At this point I'm just back in my comfort zone. Let them battle it out for a few more years, I can probably make my peace with whatever's left over or stay in my niche.

<comment><AUTHOR> Out of curiosity, what is your niche?

</comment></comment></comment><comment><USER27> If you wish to stay with the thick client model, Vue.js appears to be the simplest alternative.

If you are willing to consider returning to the original RESTful architecture of the web, intercooler.js will dramatically simplify your application:

[https://github.com/LeadDyno/intercooler- js](https://github.com/LeadDyno/intercooler-js)

</comment><comment><USER28> Let me take your question apart a little...

> Angular and React seem to be a mish-mash of proprietary syntax and > technologies (AtScript, JSX, TypeScript etc.) that paper over some of the > cracks in JavaScript and CSS.

They are not "proprietary", but such they are partly an attempt to overcome "some of the cracks in JavaScript and CSS".

> Are these transitory technologies that will be replaced by something better > in the near future?

I do not think so.

> Is there a better alternative available today?

As you mentioned JS (and to a lesser extend CSS) is the problem. A problem that Angular and React do not fix. People in this thread will mention Vue and Svelte as alternatives to Angular and React, but these also do not fix the underlying problem: JS.

TypeScript and Flow fix some of JS's problems. But a real next level approach that is available today is given by real compile-to-JS languages: Elm, PureScript and ReasonML.

It deserves to be mentioned these are all primarily "functional" languages. And not for no reason, FP is kind of the best option we have to avoid the OO/imperative-dramas we become tired of.

And Reason is particularly interesting as it can also compile to native (PureScript as well but not very mature in that regard), it is backed by Facebook (25% of messenger.com is ported to ReasonML already) and thus has well supported React bindings (allowing interop with the React ecosystem).

<comment> a-saleh I have been playing around with PureScript (more for the fun of learning interesting FP concepts than creating anything useful) and really liked the Purescript Book [0]. Is there something similiar for Reason as well?

[0] [https://leanpub.com/purescript/read](https://leanpub.com/purescript/read)

<comment><USER28> Not really.

This you've probably seen (the home page):

[https://facebook.github.io/reason/](https://facebook.github.io/reason/)

This is also quite nice (see the example app section at the bottom):

[https://github.com/vramana/awesome- reasonml](https://github.com/vramana/awesome-reasonml)

Also these talks are interesting (but nothing close to the format of the book you mentioned):

[https://www.youtube.com/watch?v=_0T5OSSzxms](https://www.youtube.com/watch?v=_0T5OSSzxms)

[https://www.youtube.com/watch?v=8LCmLQ1-YqQ](https://www.youtube.com/watch?v=8LCmLQ1-YqQ) (really bad audio, sorry)

</comment></comment></comment><comment><USER29> I think React is actually quite sane to use now. However, if you're looking for the future, you may want to check out Web Components and Polymer: [https://www.polymer-project.org](https://www.polymer-project.org)

<comment><USER18> Correction: if you're looking for what was once touted as the future, but never came to be and probably never will, and has been surpassed by React (and/or Angular), check Web Components and Polymer.

It's a committee driven over-engineered spec that's not going to be any more succesful than XHTML...

<comment><USER30> Yeah, sure that is the reason lots of big enterprises adopted it for their front facing products :-)

</comment></comment></comment><comment><USER31> VueJS is kinda got parts of both, but is entry level friendly. I'm probably not the best to give this advice though.

</comment><comment><USER32> [http://intercoolerjs.org](http://intercoolerjs.org)

I'm a big fan of Intercooler.

</comment><comment><USER33> Svelte is pretty elegant: [https://svelte.technology/](https://svelte.technology/)

</comment><comment><USER34> [http://aurelia.io/](http://aurelia.io/)

I am a backend guy with some experience in Angular 1.5, Backbone etc, but currently dabbling in the front end again, and Aurelia looks pretty cool. It seems like the least "learn our custom syntax and voodoo" option, so I'm going to give it a spin.

</comment><comment><USER35> Speaking of sanity, I've heard that somewhere under these hundreds of layers of libraries that you're supposed to mindlessly install there is a "native" javascript API inside the browser.

Is there any comprehensive documentation resource online or offline that teaches you how to use _that_ in a modern browser?

<comment><USER36> MDN is great: [https://developer.mozilla.org/en- US/docs/Web/JavaScript](https://developer.mozilla.org/en- US/docs/Web/JavaScript)

If you're more of a "show me 30 cool things I can do with none of that baggage" person, I found javascript30.com really fun.

</comment></comment><comment><USER37> You can use Scala.js[1] to transpile your Scala code to JavaScript and have type safety between client and server. You don't need to use any frameworks if you use Scala's features on the client well.

[1] [https://www.scala-js.org/](https://www.scala-js.org/)

</comment><comment><USER38> [https://mithril.js.org/](https://mithril.js.org/)

</comment><comment><USER39> Ractive[1] is pretty good imho. Development runs hot and cold but I've found it a joy to work with. Documentation could be a bit better, especially when it comes to components.

[1] [http://ractivejs.org](http://ractivejs.org)

</comment><comment><USER40> So, one might ask, "Why do we have these frameworks, anyway?" Well, they're attempts to _introduce_ sanity to the discordant relationship between HTML/CSS as a "Read a remotely stored document" system, and the desire to make the web browser into a fat client for every type of network-distributed application. Ever since "Web 2.0" was a thing, we've been trying to fit this round peg of delivering complex apps into the square hole of the web browser. Sometimes, we do a decent job. But, as we try to handle more total stuff, all of the moving parts overwhelm us.

With all that in mind, I think that we shouldn't blame "insanity" on the very tools that have been employed to control insanity. If anything, such a viewpoint tells us that maybe the attempts of today aren't the full answer, so there will be more tries tomorrow.

I'll leave you with these things: 1) If the only thing you're doing is creating a web page that serves as a thin visual layer over REST- or CRUD- based services, consider going back two generations to Backbone. Seriously. It does a few simple things for you, and lets you handle the rest in any way that you see fit. Those simple things may be the only thing that your app does. I suspect that this would be true for half of Silicon Valley. But, it goes against the constant pursuit of the new and shiny.

2) If your browser does _more_ than just send a few CRUD commands from the user to a server, then maybe it's time to look into what's good about these frameworks, instead of just considering them "insane". Everyone has their own good parts and pain points to be addressed, and all these tools were built with the best of intentions, to solve specific classes of tough problems, which may happen to be yours. Look at the success and failure stories, and see who's happy with their decisions about their tools, and which problems were solved with what framework.

3) For those people telling you "just use vanilla JS", I'll leave you this: Any sufficiently complicated vanilla JS program contains an ad-hoc, informally-specified, bug-ridden, slow implementation of half of Angular or React.

</comment><comment><USER41> Being both a TypeScript and Google Dart developer for a few years now (and a former Flash/Flex developer, and still missing lots of aspects of it), I can say:

\- On browsers: it is what it is. Neither React nor Angular will fix this for you. You're going to have to work with all existing browsers and their issues (which are quite a lot, especially when you want to go little 'deeper down'). \- On styling CSS: Either use a framework like Bootstrap or Material Design Lite, or try to use a pre-processor like SASS. LESS and Stylus, also 2 pre- processors, are losing a bit on popularity, or so it seems. SASS is a good 'safe bet'. There's lots of documentation and fairly decent frameworks were made around it.

\- React and Angular are both really good, have amazing documentation and tutorials. But for me personally, React translates really well my experience from Flash/Flex. Angular is also a very nice framework of course, but it feels to me like it is still more something I would use to make webSITES in, instead of webAPPS (although I'm building a huge app in it right now), since it is not as 'fast' and 'snappy' to create components and an architecture as it is with React. (I'm talking development wise, not performance)

\- On dependencies: I really dislike the entire dependency hell I always end up in when starting a JavaScript project. Since both JavaScript and TypeScript use NPM (at least, that's the current de-facto standard), TypeScript does not solve this for you. For instance: how do you manage your dependencies? NPM, Nuget or Yarn? What's the difference, and do you have a day to look it all up? How are you building your project and your .sass files? Gulp, Grunt, Webpack, NPM scripts, or just vanilla commandline? If you're creating a new class, how are you going import it in your consumer class? Declare all external JS files in your index.html? Or maybe you prefer CommonJS, RequireJS, UMD, SystemJS or ES2015(=ES6) native modules? And what if one dependency uses another system than you do?

\- On languages:

TYPESCRIPT: it's a very nice and powerful language, but like I said, it hooks into the standard JavaScript ecosystem. On top of the dependency hell, you'll have to use a lot of JS interops (to be able to use existing JS libraries), which aren't always that well maintained.

ES6: You could use the ES6 version of JavaScript. You'll need Babel to transpile to ES5 JavaScript, so your code will run in all browsers. No problems with JS interops here, but dependency hell and ecosystem problems will stay.

GOOGLE DART: Also an amazing language, written by Google. You can discuss on what's the better language (TypeScript or Dart), but the advantage here is the ecosystem. You build with Pub, you manage your dependencies with Pub, and there's only one way of importing external classes. A lot of modern API's you'll need, like Futures (kind of like Promises), and Streams (like Observables) are built in the language itself, meaning they are maintained and tested by Google. I've been using AngularDart (a Dart-based Angular) for over 6 months now, and it's going really well.

So for me, this results in:

\- JavaScript ES6: \+ Simple and fun language \+ Close to old-skool JavaScript \- Too limited in OOP features \- Inconsistent and way too fast changing JavaScript ecosystem (dependency management, build tools, importing external libraries, ..)

\- TypeScript: \+ Very nice language \+ Projects like Angular and React are written in it, so it's easy to find tutorials in TypeScript \+ Popular, and well documented \- Inconsistent and way too fast changing JavaScript ecosystem (dependency management, build tools, importing external libraries, ..) \- Had a lot of bullshit with JS interops (Both with finding good interops for JS libraries, as with creating interops myself)

\- Google Dart: \+ Very nice language (very close to Java and C#) \+ AngularDart is fun to work with \+ Very consistent eco-system \+ Really well documented \+ Good support from Google and community members on Gitter chat \+ The most common API's you'll need are either included in the SDK, or written and maintained by Google themselves. \- Third-party libraries are not always that well documented \- The community is not (yet?) as big as the TS or JS community, so obviously it's a little bit harder to find code examples etc

Conclusion:

\- React is awesome, but being dependent on TypeScript (or ES6), you'll spend lots and lots of time on managing your dependencies when your project grows even the slightest bit

\- Google Dart is awesome, but AngularDart, although it's a lovely piece of software, is still no React.

But for now I choose AngularDart. Perhaps in the future I'll choose for React+TS again. But I'll continue hoping for a real ReactDart. :)

<comment><AUTHOR> This is a fantastic response, thank you very much. It's a shame I can't up- vote more than once. I remember watching some Dart videos in the past and being really impressed by the language so I will revisit it as an option to pursue along with AngularDart.

<comment><USER41> Hehe, thanks for the compliment!! :)

</comment></comment></comment><comment><USER30> As few others mentioned here - look into Polymer. I used all three Angular, React and Polymer - and for me it feels very natural way to build applications. Companies like MCDonalds, General Electric, IBM, ING, USA Today (gannet), Electronic Arts, Coca Cola, (and obviously Google) and others adopted it too.

The 2.x version is quite nice, especially since it uses ES6 by default.

</comment><comment><USER42> I don't really know what you are trying to get at. Almost every front-end framework is going to have some type of "proprietary syntax" \-- that's basically what a framework is. Even backend templating languages have custom syntax that must be learned.

Otherwise, I guess there is jQuery or web components if you are only supporting modern browsers.

</comment><comment><USER43> React is excellent. I've been building UIs for 20 years and it is by far the best development experience I've ever had.

Watch out for contrarians and purist wonks. Set aside your preconceptions and bias against new things you don't understand.

Embrace reality with an open mind.

Fighting it and wishing for an alternate reality is not the path to happiness. I know that much.

</comment><comment><USER44> Dart is a sane language with great tooling. It has its own version of Angular which works great. It is available today!

</comment><comment><USER45> i asked myself the same 2 years ago when my team was deciding if we need all of that javascript framework madness. In the end we built whole product based on dartlang ([http://www.dartlang.org](http://www.dartlang.org)) which compiles down to javascript. We used only Dart language and no frameworks and best thing that came out of this is that we don't feel bound by restrictions of some framework but add stuff as we feel like. What we did is email marketing app [https://www.listshine.com](https://www.listshine.com), something like mailchimp but faster and with less clutter.

</comment><comment><USER46> You can also use just the JSX without React (using [https://www.npmjs.com/package/nativejsx](https://www.npmjs.com/package/nativejsx) or similar) to combine parts your own way.

</comment><comment><USER47> I've been dabbling with Riot.js and it looks promising. It's very lightweight compared to Angular / React and I was able to get going with it in ~30 minutes.

</comment><comment><USER48> For a more functional/reactive approach, there is CycleJS ([https://cycle.js.org/](https://cycle.js.org/)).

</comment><comment><USER49> All you need is vanilla JavaScript! Seriously. Email me at email@example.com I will be glad to discuss my approach to completely avoiding these frameworks.

</comment><comment><USER50> vue.js ... absolutely amazing.

</comment><comment><USER51> For java developers [http://www.totalcross.com](http://www.totalcross.com) is an option.

</comment><comment><USER52> Try Elm as an alternative: [http://elm-lang.org/](http://elm-lang.org/)

</comment><comment><USER53> Definitely worse than Silverlight!

</comment><comment><USER54> Polymer 2.0 is much closer to just writing vanilla HTML, CSS, and JS

</comment><comment><USER55> I'll semi-answer your question by giving you my standard set of advice and resources for learning React.

The article "A Study Plan to Cure Javascript Fatigue" ( [https://medium.freecodecamp.com/a-study-plan-to-cure- javascr...](https://medium.freecodecamp.com/a-study-plan-to-cure-javascript- fatigue-8ad3a54f2eb1) ) is a great place to start. It gives an excellent series of steps for tackling modern Javascript concepts one piece at a time: Javascript, React, ES6, and state management.

On that note, definitely don't over-complicate the learning process by trying to learn many different things at once. Some people will say you should use a "boilerplate" to learn React, and they're wrong - boilerplate projects almost always come with too many pieces configured, and are confusing for beginners.

Instead, the best advice is to focus on learning React itself first. Once you have a good understanding of how React works, you will better appreciate why a state management library like Redux can be useful, and you can learn about other tools later.

You should start out by reading through the official React docs and tutorial at [https://facebook.github.io/react/](https://facebook.github.io/react/), and I'd encourage you to use the official Create-React-App tool ( [https://github.com/facebookincubator/create-react- app](https://github.com/facebookincubator/create-react-app) ) for setting up projects. It creates a project with a solid build setup, with no configuration needed on your part. There's an excellent post called "Simple React Development in 2017" ( [https://hackernoon.com/simple-react-development- in-2017-113b...](https://hackernoon.com/simple-react-development- in-2017-113bd563691f) ) that gives some more specific instructions on the actual steps to follow.

Past that, I keep a big list of links to high-quality tutorials and articles on React, Redux, and related topics, at [https://github.com/markerikson/react- redux-links](https://github.com/markerikson/react-redux-links) . Specifically intended to be a great starting point for anyone trying to learn the ecosystem, as well as a solid source of good info on more advanced topics. It includes links for learning core Javascript (ES5), modern Javascript (ES6+), React, and much more. I also published an "Intro to React (and Redux)" presentation at [http://blog.isquaredsoftware.com/2017/02/presentation- react-...](http://blog.isquaredsoftware.com/2017/02/presentation-react-redux- intro/) , which is a good overview of the basic concepts for both React and Redux.

Finally, the Reactiflux chat channels on Discord are a great place to hang out, ask questions, and learn. The invite link is at [https://www.reactiflux.com](https://www.reactiflux.com) .

</comment><comment><USER56> Elm</comment>