5 ms·
Is it bad if I don't want to work at a C++/Java startup?
I have an opportunity to work at a company coming in as employee# < 10. They are doing so well that they are already profitable after a year and trying to keep up with the demand. I think I would really like working there, except that they use C++/Java. I want to accomplish as much as possible in my life, and coding memory management in C++ or otherwise being limited to unexpressive languages just seems to prevent that goal.
- PindaxDotCom 19y agoIf you really want to accomplish as much as possible in your life, you could start by throwing out your prejudices. Computer languages aren't religions, they're tools, get over it.
- gregwebs 19y agoThrowing out predjudices is always good advice. However, Paul Graham and others have argued (convincingly) that a language is not a tool. A compiler is a tool. A language is the actual medium that a programmer works in. It will effect every aspect of a software project, including the way in which the programmers think.
- mdakin 19y agoSucks to your Sapir-Whorf hypothesis! That said higher-level languages do have real, non-mythical advantages over lower-level ones if one is trying to work quickly and with minimal effort. Good luck with your decision.
- euccastro 19y agoWhat is the tradeoff you imply here? I don't suppose you think there are situations where you want to be slower or spend more effort just for the sake of it?
- mdakin 19y agoMy point is that there are many really good, legitimate and numerically quantifiable reasons for using a high-level language that have nothing to do with the mythical, unprovable Sapir-Whorf justification. As for the "tradeoff" I mean that high-level languages are particularly useful if one is primarily interested in minimizing development time possibly at the expense of other variables. Examples of "other variables" include processing time, memory usage, ease of hiring cog-like but adequate developers to maintain the system, company politics, etc. Such other factors are used everyday to justify the higher-effort solutions. Does that make more sense? Sorry for any confusion.
- euccastro 19y agoSaying that the programming language conditions how you think is not equivalent to Sapir-Whorf. Think of it this way: an expert Lisp programmer using C++ will be very aware of the shortcuts, simplifications, generalizations, ... that he could be implementing with higher order functions, closures, macros, etc. He can have these thoughts even though he is using C++, so no Sapir-Whorf here. But many of these thoughts will only serve to cause him pain, since the required techniques are impossible or not worth it in the less expressive language. Processing time is a real tradeoff, but you can go a long way if you get good at identifying the bottlenecks and translating the critical code to a faster language. I work in a massively multiplayer online game, which is a very performance sensitive application both client and server side, and most of our code is Python (and I think a good part of our C/C++ code could be ported to Python without significantly hurting performance). Theoretically, high level languages should eventually perform better, not worse, than low level languages, as compiler technology improves, because the compiler has more information and freedom to perform optimizations. OCaml is a high level language which claims performance on the order of C. Re: memory usage, I'm not convinced the overhead of higher level languages is a big deal, except for apps in very restricted hardware. Unless you mean cache coherency, which goes back to speed. Re: easy of hiring, in my company we had some graphics guys picking up Python and contributing useful code in a very short time. We also had C++ programmers picking up Python easily, although I must admit C++ habits and idioms die hard. That said, ease of hiring cog-like developers and company politics is not what I'd look for in a startup. I admit I cheated by mentioning Lisp, OCaml, and Python to reply different points. Lisp and OCaml are less mainstream and not as trivial to pick as Python, which in turn is not as powerful or as efficient as these. So yes, there are tradeoffs, but I wouldn't pick C++ as the pragmatic compromise, not even for big business. IMHO, Python + C (via ctypes) for close to the metal stuff would be it. For personal/startup work, I'd go for Scheme, and be happy to limit my hiring choices to people willing to learn that.
- budu3 19y agoI think you're being petty. If you like the vibe of the startup and you think they have a future then go ahead.
- mattculbreth 19y agoGoing to dissent with the other respondents. If you think you'll be unhappy (and therefore probably unproductive) using C++ then don't do it. There are other startups, and of course you could always do your own thing and pick your tools. This isn't to say that C++ is necessarily bad, but I wouldn't want to work in it (again) either.
- gregwebs 19y agoI don't think I would be unhappy and uproductive, just not as happy and productive as I could be.
- brlewis 19y agoThere are many more factors to accomplishing as much as possible than coding efficiently. Go join them and find out what they're doing right. Later you can do your own project and add the advantage of a superior language to the advantage of knowing what a successful startup looks like.
- gibsonf1 19y agoAs much as I am a huge Lisp fan, you give some excellent advice.
- brett 19y agoDefinitely. If your main goal is joining a startup with a chance of success then you should be evaluating the people involved. Their language choice should be a data point, but ought to be taken strongly in context of their backgrounds and the problem they are trying to solve. In the context of I want to accomplish as much as possible in my life, all other things being equal the particular language you happen to be using for the next few month-years will probably prove insignificant.
- nostrademons 19y agoA caution: if they're doing everything else right except the language choice, then chances are they will end profitable and successful by at least some definition of success, but will not be as successful as they could be. It's very tempting in this situation to sit back and enjoy being an employee at a successful company. That will not get you any of the big payoffs or excitement of a startup. If you're going to settle on programming language choice so you can learn all the other stuff, you have to be willing to cut said successful startup loose and strike out on your own once you've learned all the other stuff. This will look increasingly irrational the better you do at your job.
- willarson 19y agoI think the important question is "why are they using C++/Java?" If they are using them for efficiency reasons, then this may be a case prematurely optimization, and they may not like the tools either, but feel trapped into using them. On the other hand they may be using them because they are most comfortable and experienced using them. This is a pretty good reason to use a language, but eventually leads to stagnation.
- gregwebs 19y agoFrom what I gather, it would always be better for their product to run faster, so they probably felt they had to use C++. I believe they are using Java for the front end because they found good libraries for what they wanted to do. It is possible they are being productive with their Java code by using pre-exising libraries, but their C++ is from scratch. It does also seems that they are comfortable and experienced using both languages. I don't think it crossed their mind to use other fast languages in place of C++ such as D, O'Caml, or Haskell.
- aston 19y agoThis is some hardcore language hate. C++ is the production coding language. Java is the enterprise coding language. You should want to join these guys just to get your head around why all the companies who make a truckloads of money doing software use these languages.
- pg 19y agoWhat is "production?" Whatever it is, few web apps I admire do it, if it means writing code in C++.
- aston 19y agoPoint taken, but mine still stands. Basically all of the software companies with market cap north of a billion dollars have web-facing apps written in C++ and Java. Whether you admire them or not is another issue entirely.
- nostrademons 19y ago"Basically all of the software companies with market cap north of a billion dollars have web-facing apps written in C++ and Java." Not really true, unless you mean "have web-facing apps written in C++ and Java" in the same sense that they "have web-facing apps written in PHP and Python". I posted a list on Reddit, based on publicly available information (employee blog posts, mailing lists): http://programming.reddit.com/info/2614t/comments/c264lk http://programming.reddit.com/info/2614t/comments/c264lk There's some Java and C++, but there's also a lot of Python and PHP.
- aston 19y agoYou're collapsing stuff down in an interesting way that makes these marginal languages look more important than they probably are. If you were to do it by lines of codes, organizational importance, financial pay off, number of engineers working in a language, or pretty much any metric other than "does ___ use ___ somewhere in their codebase?," I think you'll find that Java and C++ are huge. That said, sure, folks use other languages, too. Yahoo and Facebook are particularly good examples of companies that have more than the typical share of a non-Java/non-C++ language for their apps. And even they use C++ (and maybe Java) elsewhere.
- maxklein 19y agoDon't be fulled by selective perception. C++ and Java are the backbone of software.
- smg 19y agoIf you are really good at C++ (gork template metaprogramming, Alexandrescu's Modern C++ design) you will be as or more productive than most average people programming in Ruby or Python. Instead of focusing on the language think about the kind of people you are working with. Today you will find a lot of kool aid drinking kids coding in lightweight languages and quoting from Hackers and Painters at every opportunity. That does not mean they produce high quality software
- euccastro 19y agoThat's not saying much in favor of C++ is it? If you are really really good at assembly you will be more productive than most average people programming in any language. That's because most average people aren't very productive at all. But this wasn't his question. If he has what it takes to get really good at C++, he will probably get really good at Ruby or Python in that time. I happen to work in a place where we use Python and C++, and I claim that for any problem domain for which higher level (lightweight?) languages are suitable, they are a clear productivity win over C++, for people of similar experience. I agree that people are more important than language, but the choice of language also tells you something about the people. I suppose the poster has more relevant information about the people, though.
- umjames 19y agoIt also doesn't mean that they don't produce high quality software. Remember, that when it comes to programming language choice, you often end up with programmer happiness (low ramp-up time to get something implemented) vs. performance. It would be good to find out how open the place is to different languages. You may be able to write most of it in the language of your choice and only have to switch to C++/Java where necessary. This should especially be true at a Web-focused company.
- mdakin 19y agoPersonally I'd take a great team of smart, flexible people over my choice of programming language any day. I think it all comes down to the specifics of your nature, the team, and its environment.
- edgeztv 19y agoI hear you. Right after grad school, I turned down an offer to work in a small (and very profitable) CAD company with good people mainly because I didn't want to code in C++ (and wanted to work with the web). A year later I chose a smaller web company over Microsoft partially for the same reason. Java, one the other hand, works pretty well if you have a lot of experience with it and use the right tools (IntelliJ IDE). I feel like I am more productive with Java+IntelliJ than with Python. Good luck with your decision.
- sabhishek 19y agoIt depends, If you don't like doing C++/Java don't go for that. imo don't force yourself to do anything you don't like for that matter. True that C++ is losing its sheen and Java is being called a new age Cobol , but they still dominate the scene, its a matter of personal preference.
- mynameishere 19y agoC++. Pshaw. Only crap companies like ID Software use that. What has Quake got on the awesome expressiveness of Flickr, or Facebook or Google Suggest? I mean, just in terms of sheer output, consider that BOTH Flickr and Facebook are able to...display text on a screen! And put jpegs in neat columns in div tags! Pshaw. What has C++ got on that? Seriously. Do away with the tunnel vision. When you're talking consumer software, all of the output of all of the languages of the world combined absolutely pale compared with that of C/C++.
- euccastro 19y agoNope. Hand optimized assembly pwns C/C++. And still, ID uses almost none of that. Do they have tunnel vision too? Flickr and Facebook don't display text on a screen. The web browser does that. What Flickr and Facebook do is serve content to huge amounts of people. In order to scale to these extents, your choice of language is not nearly the most relevant decision. Also, speed of execution is critical for web companies, while one of id's mottos is "it's done when it's done".
- nostrademons 19y agoI am in almost the exact same situation, except with 2 years of hindsight. I joined a startup straight out of college as employee #13 (at the time, it had about 8 employees in the office at any given time). It was profitable, I liked the people, and they were doing some pretty cool stuff. Overall, I would do it over again but probably will not remain with them for much longer, if that makes any sense. Some observations: The language choice will grate on you after a while. I dunno what the background of posters saying "Be professional. Suck it up." is, but I actually liked Java coding when I started, and have since learned to hate it. If you're going in with a strong aversion to Java & C++ already, it'll probably only get worse. Flip side is that you do get better at these languages after you work with them a while, as long as you keep an open mind. There are tricks and tools in C++ to help you manage memory - you shouldn't be tracing pointers from new to delete. And Java's verbosity isn't as bad once you get used it and consider "for(int i = 0; i < array.length; ++i)...." to be a single map function that just has a really long name. ;-) One question to ask that'll help you determine if the language will end up becoming a total drag: are they using it because the problem fits the language's strengths, or are they using it because they don't know any better and aren't comfortable with multi-language solutions? Every mainstream language is good for something. In my case, I was perfectly happy as long as I was writing IDE plugins and server software in Java, and then became very unhappy once I had to write a webapp. (IMNSHO, Java is irredeemably broken for webapps; the only sane way to do them is to strip out all the JavaEE bullshit and program on bare servlets, but then you get something that's nowhere near as nice as Python/PHP/Perl.) There are plenty of things beyond programming that you learn from working in a successful (profitable) startup. OTOH, it's not rocket science. Basically, you can boil it all down to: 1.) Make something people want, 2.) Charge more for it than it costs you, and 3.) Fix problems now rather than later. Every failed startup I've been involved with has neglected at least one of these: every successful startup has done all three. I dunno what you expect financially out of this, but be aware that founders get rich, late-stage employees get paid, and early-stage employees get screwed. At least in proportion to the amount of effort they put in. One startup I worked in went bust, taking my 0.1% of stock options with it. One that I interviewed at offered me about 0.01% of the company; I did the math, and calculated that at their expected $40M exit, I would get a whole $4000. I have no equity at my current employer. My cubemate was an early employee at CCBN, which was sold to Thomson for about $40M. He got $3K or so. I have another friend who was employee #35 at Stratus and later a VP; she was rich for a while when they ended up with a billion-$ market cap, but ended up poor again after the stock crashed. If you plan on being an early employee at a startup, you should do it for learning or for the experience rather than any perceived financial rewards.
- cwilbur 19y agoIf you think you'll be unhappy doing the actual work that you'll be doing when you take the job, the job isn't worth it. There's no difference between being employee #9 or being employee #99999 in that regard. Also, if they're successful enough with their current languages, you will not change them. Taking a job saying "I know they use X, but I'll talk them into using Y instead, and then I'll be happy!" is like entering a relationship saying "I know she does X that drives me nuts, but I know if I pester her enough, she'll stop it, and then I'll be happy!" Doesn't work that way.
- uuilly 19y agoI think there is nothing more miserable than working with tools that you don't like. Part of the allure of starting a startup was not compromising an inch on the exact tools you want. Follow your bliss, not your stock options. That said, I suspect most people that pan C++ have never extensively used or understood the STL or Boost Libraries. Undergrad C++ is nothing more than a basic introduction to the language.
- reeses 19y agoThere's a broad line with "C++/Java". You can use C++ as a safer C, and yes, that's generally unpleasant. But if you're leveraging STL, Boost, and some GC like Boehm, among other extensions, it's a great deal better. Same with Java -- if you're leveraging Java 5/6 functionality, using Groovy for scripting, etc., you're going to be stretching your brain with something other than memory management. Ask them how they use the languages, and you might find they wrote their own compilers for DSLs or other things you'll enjoy working on. All that said, the market is ripe right now, and it's a good time to be a prima donna about what you'll work on.
- jsjenkins168 19y agoI've noticed there is a negative bias towards the "enterprise" languages by many on this forum. Not calling out gregwebs in particular, just speaking generally. I think much of the negativism stems from the hacker mentality that big companies are evil and that breaking the rules is cool. Therefore anything that big companies do or use is automatically uncool. Nothing wrong with this mindset, but I think it often goes too far with some. Java and C++ are not bad languages. Yes, most large software companies use them but there are some reasons why they might be a desirable choice. One is that these languages work well in a collaborative work environment. There are many proven debugging tools, established QA practices, very good IDEs with integrated revision synchronization tools, etc. While these may not matter for the hacker or small group of hackers creating something cool, they are very important considerations for a growing software company who has plans to scale. So with this understanding in mind I wouldn't automatically rule out a company based on the fact they code in C++/Java. Ask them why do and you might discover that there's more there than what meets the eye.
- gregwebs 19y agoThere is definitely something wrong with the mindset that big companies being evil. However, the bias towards "enterprise" languages does not come from this. It stems from experience in working in big companies that are unproductive. It also comes from personal use of the languages, and reading about, exploring, and programming in different languages.
- herdrick 19y agoYour instincts are good - I'd guess that you'd slowly come to despise your job So, what're your languages/tools of choice?
- gregwebs 19y agoI am still working on the language of choice- I am learning Haskell and Scheme.
- herdrick 19y agoGreat. I don't know much about Haskell, but Scheme is a great language for startups. Start your own and apply to YC! What are you using for learning Scheme? I recommend this one: http://herdrick.blogspot.com/2006/03/what-all-books-ought-to-be.html http://herdrick.blogspot.com/2006/03/what-all-books-ought-to... After that, take a look at the Scheme Cookbook for specific tasks. http://schemecookbook.org/Cookbook/ http://schemecookbook.org/Cookbook/
- gregwebs 19y agoI am going through SICP. I planned to look at the Little Schemer afterwards. The cookbook link will be very helpful- thanks.
- euccastro 19y agoI followed the same route and I kinda regret it. The Little Schemer is best read with a Lisp-virgin mind. If you intend to read it at all, do it before SICP. Then again, if you don't want to wait for SICP I fully understand you too.
- gregwebs 19y agoOK, I am buying the Little Schemer today
- 19y ago
- cmars232 19y agoAll languages suck, they're all Blub. Get over it. It seems kind of silly to be a language snob if the team and opportunity are right. Who knows, you might be able to embed scripting in their product. Maybe automate a test suite with dynamic bindings to their libraries. Or maybe be the voice of reason when someone on the team discovers design patterns or IoC and gets delusions of grandeur.
- davidz 19y agoWhy place so much emphasis on the language rather than the outlook of the startup? If the startup looks promising and you believe in it. It shouldn't matter if you need to work in _____(Write language here), I'd certainly go for it.
- tx 19y agoNobody in their right mind has been coding "memory management" in C++ for the last 10 years. This is not early 90s anymore. Also, if your ability to "accomplish as much as possible" in your life is so severely limited by the programming language s(i.e. tool) you use, then you should probably rethink your approach to engineering.
- tx 19y agoAnother thought. Just very recently someone posted "Ask Reddit: what is the most beautiful code you've ever seen?"... Knowing how much reddit dudes love LISP, Haskell, Ruby and Python, I was very surprised to see that almost exclusively everyone's favorite piece of code was written... you guessed it - in C.
- tx 19y agoYet another thought! :-) Since company is so small, you can actually get them to migrate from C++ to D! That would have been awesome...
- geebee 19y agoI know I'm chiming in very late here. The original post asked if it is "bad if I don't want to work at a C++/Java startup." Of course not. This thread has turned it around a bit - phrasing the question as if you wanted to work for a C++/Java startup (or at least if you felt neutral about it). I'm not surprised that's what's being discussed, because those are the more interesting questions. But if you feel in your gut that you don't want to work in C++ or Java, then for god's sake man, don't do it. You'll be really unhappy, and I'm sure you'll have other opportunities.