8 ms·
I'm an "enterprise" programmer because I write in Java... I'm also older than the average age of a start-up employee (late twenties). I've never written a lin
by throwaway456789 11y ago
I'm an "enterprise" programmer because I write in Java... I'm also older than the average age of a start-up employee (late twenties). I've never written a line of Ruby, and I've never written object oriented JavaScript or used Node.js.
However, I'm a really good programmer. I just happen to write the majority of my code in Java. If tomorrow we decided to use a new language, I could pick it up in a few days... I have a feeling the "enterprise" thing is just veiled age-ism. Anyone can feel free to correct me if I'm wrong, but at this point, it's literally impossible to learn every new technology. And anyone whose worth their salt should be able to learn a new environment and programming language without too much trouble.
I have a feeling that the enterprise thing is just a way for these employers to screen out the older, more experienced programmers.
This will probably get this throwaway banned, but Michael O'Church (who I am not) writes a lot about this on his blog. I tend to agree with him.
- deleted 11y ago[deleted]
- JustSomeNobody 11y agoI think age-ism is part of it. However, being an Enterprise dev myself (kind of), I feel that Startups don't think Enterprise devs "move" fast enough. They are too busy abstracting things and trying to get to the holy grail of the "perfect" architecture. Startups don't necessarily care about that right away, but enterprise devs have been steeped in it.
- eldavido 11y agoYeah well, that depends on whether you're used to working on a mature project with lots of structure and process (and usually, customers) or something newer where you're more in POC mode. I'd favor someone who could do either but I guess if you have to pick one or the other I'd take "hack and ship" over "let's make it perfect", especially considering the second probably has lots of great options at BigCo.
- sgarman 11y agoI think a lot of companies want to hire people who also have programming as a hobby. It seems if this was true it would be very unlikely that someone would be a seasoned great programmer who only ever programmed in one language. I'd be curious why this candidate never wanted to try other styles/approaches.
- throwaway456789 11y agoI never understood why that was a prerequisite. I program for 60 hours a week. So what if I don't want to do it on the weekends too.
- shimon 11y agoUnfortunately, tinkering in your off-hours is a key way for programmers to keep their skills current. The industry changes rapidly and the skills that were most marketable over the past 10 years are not the same as those that will be most marketable over the next 10. If you're not changing jobs constantly, the rate of tech change at your workplace is unlikely to be enough to keep your skills marketable. So you need to tinker. This is one reason why people 40+ with kids tend to migrate into management. Their technical skills are getting rusty and having kids decimates your ability to take on major tinkering projects that help you learn new skills. However, their people skills are evergreen and even sharpened by their experience as parents.
- ryandrake 11y agoWhy is this not true in other professions? Why don't hospitals give preference to surgeons who like to dissect frogs in their spare time or build better scalpels on their garage workbench?
- ones_and_zeros 11y agoI know you are being rhetorical but to those that don't know it's because surgeons have a proper profession that protects surgeons from management/lobbyists/politicians etc bossing them around. Software developers don't have such protection and any mention of such a thing will get you blackballed within the industry by employers and ostracized by peers as most have bought in to the narrative that cooperating is bad for the individual. However, my SO is a physician and they spend A LOT of time on skill mastery beyond med school and residency, however, their keeper is their profession, not their employer which is a major difference.
- ammon 11y agoAuthor here. Ageism is real, and we'll be analyzing it in a future post. But in this case I don't think it's ageism. I think it's big-company-ism. Startups define themselves in opposition to big companies, and take signs of big company culture as strong negatives (which may or may not be justified statistically, I honestly don't know). But there are great programmers at big companies in any case, and startups should figure out how to hire them.
- silverpikezero 11y agoStartups should realize that this is a thoroughly idiotic notion, and should abandon it ASAP. The one thing that large software companies do well is SHIP PRODUCTS. A good software engineer is someone who can ship a product, even if its ill-defined or not feature-complete. This is a virtue. Small companies, especially startups, have a horrible track record for shipping software that in any way resembles its product plan. At my startup, candidates from large companies are immediately prioritized in the hiring queue. This strategy has always paid off; there is a high correlation between large company experience and good software engineering practices.
- curun1r 11y agoWhich large companies have you worked for? I've worked in both environments and seen way more failed projects on the enterprise side. However when an enterprise ships something, the shipped product tends to be more stable. There's tradeoffs to be made and large companies often prioritize stability and their reputation over time to market and spending money. As a startup, I would look for people who have less specialized experience and are able to cover as many of my bases as possible. Can the developer field a page at 2am and login to the production environment to fix a problem? Can the developer help my sales people with a desktop support issue while the lone IT guy is on vacation? Can the developer make the product work on a single AWS micro instances until we get some sort of traction/funding? The theme here is a scrappy, do-whatever-it-takes mindset that's often missing in the enterprise where people learn to CYA lest the bureaucracy come down on them for cutting corners.
- 11y ago
- ScottBurson 11y agoThe first time I read your post I missed the parenthetical in the first paragraph, and was inclined to agree with you. Then I looked again and saw "(late twenties)", and had to laugh. On the one hand, you're right, you can't learn everything. On the other, to be able to realistically claim that you can pick up new languages quickly, you should already know three or four different kinds of languages. If all you know is Java, you probably are farther away than you think from picking up a very different language like Ruby. I would encourage you to do some study on the side. Your late twenties is far too early to let yourself get pigeonholed.
- throwaway456789 11y agoI am pigeonholed. Sure I know other languages: Shell Scripting, Perl, HTML/CSS/JS, Groovy, SQL, C#, etc, but 80 percent of the code I write is in Java. I'm at a Java shop and have golden handcuffs. It's Java or bust for me.
- vorg 11y ago> I just happen to write the majority of my code in Java. If tomorrow we decided to use a new language, I could pick it up in a few days... The languages in your list are: * declarative: HTML, CSS, Groovy (for Gradle), SQL * scripting: Shell, Perl, JS, Groovy (for testing) * Java-clones: C# I found it difficult to pick up Clojure and Haskell "in a few days" when all I had was experience in those types of languages. In fact, mastering each of those languages requires a change in thinking that can only occur over a much longer time.
- throwaway456789 11y agoI agree with you about Clojure in particular. I did do some non trivial work in Lisp in a graduate class, but its not the same as using it all day. I don't believe I would seek out an opportunity where a Lisp dialect was the programming language of choice, anyway... (I found ML to be easier to work with than Lisp. I guess it's technically not a pure functional language though).
- alexwebb2 11y agoHiring manager here, and after many interviews with enterprise programmers, I do find myself putting more and more of them into the "no" pile right off the bat. The problem is that those candidates, in my experience, tend to throw up way more red flags than others - their code is extremely verbose, they rattle off factory patterns like they're reading a textbook without any inkling what sort of problems they're actually solving, they parrot popular opinions without being able to articulate the reasoning behind them, they're not comfortable with developing a new feature without extensive documentation, and they miss the forest for the trees when it comes to things like testing and code organization. Enterprise programmers usually leave me with the impression that they're heavily indoctrinated into one specific mode of thought, and that they would struggle to break out of it.
- throwaway456789 11y agoIt's funny you say that. I can't name one factory pattern off the top of my head... Never needed to learn one. I should clarify -- I'm in my late twenties, and I've spent my entire career (10 years) writing Java code. I don't understand how that negatively hiring managers against me.
- shimon 11y agoHave you worked at multiple jobs over those 10 years? As a hiring manager (working with only the limited data you've provided here) I'd be concerned that you value stability very highly, and you might be thrown by the rate of change (in requirements, tools used, business goals, desired feature set, etc) that is typical of a startup. Long tenure at a single job suggests you enjoy getting deeply specialized and developing mastery of a stable set of tools, which is needed at a certain stage of company but not at most early-stage startups. Is that true of you? I.e. would you be frustrated by 3-4x/year significant churn in your technological tooling and top-level business goals? Would you be excited to learn a few new toolsets? If so, why haven't you done that on your own?
- jmagoon 11y agoIs this really true of the startup world? What possible business reason could there be for swapping your stack / tooling 3-4x per year? Do you mean learning something new 3-4 times per year that is unrelated to large architectural changes? In terms of 'on your own'--I don't know, maybe this person has a life outside of writing code?
- taurath 11y agoThe difference in skillset and mindset in a large organization vs a startup is pretty huge. A large organization values stability and conformity (your software must work within usually a much larger picture), whereas in a startup the organization values speed and flexibility (large business changes or new data may come in at any point). The challenge when coming in from a big company is convincing people you can "hack" it to get things done quickly while still bringing the monolith of process and organizational knowledge from the big company.
- theworstshill 11y agoAnybody who expects you to know every new technology is a fool. The most important thing is being able to teach yourself the new technology and figure out its kinks.
- darkerside 11y agoMore likely it's just an inability to judge the programming skills of someone writing in a language you are unfamiliar with. My guess is that most YC founders don't write in C# or Java. Whether it behooves them to screen those applicants out is another question.
- squozzer 11y agoI work in an enterprise environment though my skill set is mostly on the admin side. Ageism may play a part in the bias against enterprise workers, but other factors exist as well - whether justified or not. 1) Over-specialization - the vogue for startups is to hire full-stack engineers, which to me reads as a desire to have one person perform the work of three. The constraints of a startup environment may justify such desires. 2) Risk-aversion - many of us in enterprise environments groan about all of the meetings, deferments of decisions to superiors / domain experts, and other risk-avoidance strategies, but in the end we like our butts covered just like everyone else. 3) Tolerance / preference for a certain amount of friction - some might call this a lack of urgency or an excess of complacency. Consider the problem of selecting a platform for your new project. In most enterprise environments, the decision has already been made for you - what is on the approved product / vendor list? Another is how to get a person who reports to a different chain of command to do their job. All of these factors and others seem to exist at odds with the startup culture, which is a general term for the composite self-image of a startup's founders. Generally, they see themselves as pirates who plunder market share from the lumbering galleons of large enterprises, at least until they sell.
- perlgeek 11y agoage-ism for somebody in the late twenties? That sounds, ... dunno, exaggerated or even ridiculous. I'd expected age-ism to start at the 50s or maybe 40s, but then I'm not in Silicon Valley either :-)
- jakub_g 11y agoCan not find it now but apparently the average age of a developer in Facebook is way below 30 (27 IIRC). I guess it could be true that in some startups if you're 29 and everyone is 22 you're not perceived a "cultural fit" (my evidence on it is purely from HN threads though)
- kod 11y ago> If tomorrow we decided to use a new language, I could pick it up in a few days... If all you've written is OO code, this is probably false bravado. Chances are you're not going to be productive in Prolog or APL in a few days without some prior exposure to those concepts.
- eldavido 11y agoI've written a lot of code in both Ruby and C#. Like a parent, I love both of them for completely different reasons. From a pure language standpoint, Java and C# are _really_ well-designed tools. I call them "Cathedral Languages" after esr's "Cathedral and the Bazaar" -- both were designed by highly-qualified teams of experts who had the privilege of spending years designing them, after already spending collectively many lifetimes doing language design. For examples of what I'm talking about, look at C#'s implementation of generics. Look at the quality of .NET or Java's multi-generational mark-and-sweep garage collector implementations. Ruby has a lot of warts. It's slow. MRI/REE are children's toys compared to the CLR or JVM. Ruby's implementation of coroutines (blocks vs. procs vs. lambdas) is a huge mess, its concurrency story is terrible, it has nothing like .NET's async/await...I could go on, but I feel the point is made. However... It's easy, when using .NET and Java, since they're such "batteries-included" languages, to get into the mindset that "I'll never need another tool", which is _manifestly_ untrue. I am a committed polyglot programmer and I am appalled how frequently I encounter "cultural ignorance" within the big enterprise language communities. So I think the issue is more cultural (O'Church writes about this), one of trying to avoid "Java Shop Politics", with the associated ManagerFactorySingletonImpls, needing to write about 100 lines to get a single thing done, etc. The problem is the cultural baggage that many enterprise developers bring with them, not the language itself. In my current project, I'm doing small-program development in .NET for a Windows LOB project. It's pretty refreshing. I get all the benefits of UNIX-style systems design, i.e.. small composable program elements, services, Git (TFS? are you kidding me?), proper CI/CD, and command-line automation, alongside the maturity of not having to deal with breaking changes on point releases of OSS libs, a thoroughly-documented, consistent BCL (.NET Framework 4.5), high-quality runtime, and generally less "hipster" culture. I'd highly recommend it.
- deleted 11y ago[deleted]
- schandur 11y ago> I've never written a line of Ruby I say this exact same thing on my Linkedin profile: "I have never written a line of Ruby... but I bet you can make me if it comes to that."
- coffeemug 11y ago> However, I'm a really good programmer. How do you know?
- throwaway456789 11y agoPlead see previous comment about my compensation. I don't think a company would pay someone that much unless they were really good.
- buckbova 11y agoI don't expect any job actually programming pays more than that, even if you are literally doing 1 1/2 jobs (60 hrs/wk). Only way to get that kind of pay and work for someone else is as an executive and a higher up VP/CTO/CIO etc. Keep that job and don't spend all that money in one place. You might be one of those folks who can retire while they are (relatively) young.
- throwaway456789 11y agoThat's actually the plan... And then maybe join a SV start up because money doesn't matter anymore... Going to be tough to do as an enterprise Java developer though. =P.
- spopejoy 11y agoNaw, just learn a new language or two when you quit. Haskell is a particularly good choice. After fighting with Java generics for decades I found it really nice to work with a real type system. Also, go is trivial for an experienced Java programmer to master.
- balls187 11y agoI'll just point out (as a much older engineer than you), that this article is HIGHLY skewed to YC Companies, that have self-selected as not solving hard technical problems. As a founder, being in YC is probably great. As an engineering employee, it doesn't seem all that compelling to work for a YC company compared to a non-yc company. None of the benefits of being a YC founder seemingly apply to an employee of a YC company. This feels like serious echo-chamber nonsense that has little applicability outside the world of startups (and more likely YC startups). Glassdoor just listed the top companies to work for. https://www.glassdoor.com/Best-Places-to-Work-LST_KQ0,19.htm https://www.glassdoor.com/Best-Places-to-Work-LST_KQ0,19.htm Airbnb (YC company). First job i found on their careers page (note, required a lot of clicking...): https://www.airbnb.com/careers/departments/position/90884 https://www.airbnb.com/careers/departments/position/90884 Back-end, Front-end, Full Stack and Machine Learning engineers. Strong proficiency in any of: C/C++, Java, Python, Ruby-on-Rails Exposure to architectural patterns of a large, high-scale web application Rigor in A/B testing, test coverage, and other web best practices Hubspot. Jobs page: http://product.hubspot.com/apply?gh_jid=86940 http://product.hubspot.com/apply?gh_jid=86940 Back End: We write lots of micro-services, primarily with Java 8. Our APIs are RESTful and use the minimal Dropwizard framework, and we take advantage of Kafka, Spark, Hadoop for processing volumes of data. And Zillow (not I skipped Facebook,Google, and Linkedin, and went to Zillow as it's the first Seattle based company listed). http://www.zillow.com/jobs/openings?j=oXn70fwb http://www.zillow.com/jobs/openings?j=oXn70fwb Strong experience with Java, Objective-C or C++