Hello, we are RealCrowd, and we use C#

tl;dr – Do you love the web, JavaScript, CSS and industry changing products? – We’re hiring. Send an email to jobs@realcrowd.com.

That’s right, a one year old YCombinator company is hiring web developers and we use Microsoft technology. Perhaps hell has frozen over. Maybe pigs have evolved and now use those cute little tails as props for vertical takeoff and landing. Have us founders gone mad?

Some days I feel like we should be part of a support group.


“Hello, we’re RealCrowd, and we use C#,” we say nervously.

“Hello RealCrowd!” the group responds in kind.


Any time we meet up with peers or talk with investors we end up having the tech stack “discussion”. Everyone assumes our product is built on Ruby on Rails or Scala or Node.js or [insert-other-hip-tech-here]. What was meant as idle chit-chat turns into a debate. Our technical prowess is questioned. We have to defend our choices. Why is this even a discussion?

While common and respected in game development, financial services and corporate America, C# and the Microsoft tech stack is shunned by the Silicon Valley startup ecosystem. It is the forbidden fruit. One must not indulge, for fear of being corrupted by the snake that is only out for your blood. We don’t buy into this rhetoric.

Our code is fully asynchronous around I/O events using async/await. We use Azure’s PaaS services for very little operational overhead. But we also abstract away those services so we can change our persistence/communication/hosting providers in the future. We practice continuous integration. We have tests, and even run them occasionally. We have automated build and deploy systems. We monitor performance and stability like a hawk. We use the open source branch/merge/pull-request development style with code reviews around everything. We do all the things one would expect in a modern, fast-moving development shop.

But let’s back up for a minute. Who is this mysterious company building products on such uncool/forbidden technology in a cool/modern way?

We are RealCrowd. We operate in the super uncool, stodgy, investment-banker-saturated world of commercial real estate investing. It is Serious Business with huge sums of money at risk. Our paying customers have done Billions of dollars of business. They own the office building you work in, the apartment complex you live in, and the retail buildings where you spend your hard earned cash — that is, unless you are like me and never leave the comfort of your Aeron chair. I understand. It’s hard to fight the allure of Amazon Prime. Then again, they even own some of the warehouses Amazon uses. But I digress…

About a year ago the only way an individual could directly own such real estate assets was to be in the right place at the right time and know someone at a company buying a building. But not anymore! Because of the JOBS Act, partial ownership of these assets is now available on the public internet via RealCrowd. We are a marketplace that connects investors to companies offering real estate investments (operators). We handle the details of the investment process and digitally ferry thousands of pages of paperwork back and forth for every deal.

We save trees. We make people’s lives easier. We make everyone more money. And we have fun doing it.

Boy have we been surprised by how much investors and operators love this. To date investors on our site have invested over $17 Million in real estate valued at over $500 Million. See. It’s Serious!

It is the Serious nature of the business that led us down the road to Microsoft technology. We wanted to blend stable technology with current rapid development practices. We looked at Java, the other obvious choice of the Serious, but ultimately decided on Microsoft tech with C#.

Our server stack is C#, ASP.NET MVC, ASP.NET WebApi, running on Azure utilizing their NoSQL store, distributed queues, distributed cache, and other modern tools. We’ll move to ASP.NET vNext once it’s ready for Serious Business. We’re an API-first development shop, and take pride in building secure, high quality, and performant software.

Our front end is built on a core of AngularJS and Bootstrap. It is responsive and designed to present a fully featured and useable mobile web experience.

Come work with us, email jobs@realcrowd.com and join our support group for outcast technologists.

  • http://www.carloscervantes.me Carlos Cervantes

    C# is a great language. It’s too bad barrier to entry and cost of ownership in the MS stack world is so high. Working with C# for the first five years of my career was great. I still miss some of the straight forwardness. I could see my self going back for the right company. Best of luck to you guys.

    • http://www.onehellofaride.com/ Silver

      a great language compared to what?

      • jwheeler79

        Machine Language

        • http://www.onehellofaride.com/ Silver

          A doubtful proposition.

          But in that perspective, any higher-than-machine-level language is a great language. So then the word “great” loses its expressiveness.

      • Fra

        Javascript/Ruby/Python/Scala/Java

        • http://www.onehellofaride.com/ Silver

          Nice try with trolling 🙂

          • Fra

            I would certainly rather use it for any _real_ project than one of those languages. It has excellent language features, libraries, and tooling.

          • http://www.onehellofaride.com/ Silver

            Yeah lets start by labeling 99% of projects not “_real_”, ranging anywhere from Linux kernel to Dropbox to Docker to, dare I say, 99% of projects that Microsoft works on.

            Because that makes a worthy argument.

          • Fra

            You’re making a strawman. Did I say those projects were not real? What I did say is that I would rather use C# than one of those other languages for real projects. Those are not the same statement at all.

          • http://www.onehellofaride.com/ Silver

            Some people would rather use Visual Basic. How does that make Visual Basic a “great” language?

          • Fra

            It doesn’t. However, you seemed to think anyone preferring C# over those other languages was obviously lying, and I’m trying to make it clear that your assumption is incorrect.

          • http://www.onehellofaride.com/ Silver

            I honestly never had that in mind. I wonder which one of my messages suggested that.

          • Fra

            The part where you responded to my post saying which languages I compared it with to find it “great”, and called it trolling?

          • http://500px.com/AlexandreGrison Alexandre

            C# as a language is “great”, and has more feature in its core than Java for instance, but the tooling and libraries? Seriously, you can’t beat Java on that.

            Javascript is an abomination as a language, but it does the job on the web and we won’t see it going anywhere in a near future.

            As for Scala, I think it’s a better language than all the others you’ve listed, more recent and well thought (as in better), besides you’ve got access to the Java libraries and some of its tooling, which is a big plus.

          • asmussen

            Alexandre,

            You are questioning the tooling around C#? Visual Studio is by far the best IDE out there. You need not comment because that is a fact!

          • http://500px.com/AlexandreGrison Alexandre

            I do not agree, take a look at IntelliJ IDEA, but hey you want no answer so think what you want. At least you’re happy with your IDE and language of choice, I’m happy with mine, what’s the problem 😉 ?

          • asmussen

            JetBrains makes some awesome stuff, I use WebStorm sometimes and I love it but Java is basically C# alpha and its hard to go back when you C#.

          • http://500px.com/AlexandreGrison Alexandre

            Unless you are already productive with it, and know tons of libraries and framework. I can’t imagine being more productive developing a web app with C# than I am with Java & Spring.

      • Charlie Hess

        Have you ever actually tried C#?

      • http://www.carloscervantes.me Carlos Cervantes

        I don’t think it’s really fair to compare languages, most of the time. Each language has some case that make it unique or “better” than another. Most of the time this can be pretty subjective.

        When I say that C# is a great language. I’m talking more about what I expect from a language in general. C# has had concepts like Generics, Optional Params, Extension Methods for a long time now. It’s great to have the reliability of a compiled language with great features like these and newer features like dynamic variables and streamlined Async.

        Also one thing about C# that doesn’t have to do with the language itself is the documentation. I’ve never ever seen anything as well documented as the .Net stack. Really, nothing comes even close.

        • Charlie Hess

          100% agreed. C# was designed by Anders Hejlsberg. Perhaps you’ve heard of him. If not, check him out:

          http://en.wikipedia.org/wiki/Anders_Hejlsberg

          Most people spout hate for no other reason than this (tired) false equality:
          C# == Microsoft == Evil.

      • adolfojp

        Your comment could be applied to any language out there and still be just as useless.

        “C# is a great language” – “Compared to what?”

        “Python is a great language” – “Compared to what?”

        “Ruby is a great language” – “Compared to what?”

        “Scala is a great language” – “Compared to what?”

        You’re baiting people into a pointless discussion. You’re being argumentative for the sake of being argumentative.

        And to make things worse, C# is a great language so you’re only making yourself look ignorant. And the trolling accusation is the textbook definition of irony.

        Take a deep breath, take a step back, and think about the purpose of your actions and about the solidity of your arguments.

    • Craig Deubler

      If you look at cloud hosting (azure/aws) the cost difference is minimal. Windows vs Linux hosting is about 10% more expensive. The tooling can be had pretty much for free.

      I’m very interested to see how ASP.NET vNext runs “native” on Linux, I prefer it as a platform, but C# is arguably my favorite language.

  • DaphneO

    Where are your offices located?

    • http://blog.jdconley.com JD Conley

      We’re in Palo Alto, California. Telecommute will be considered for senior level candidates.

      • asmussen

        You guys have the perfect stack and ideology they fall perfectly inline with my skills and ideology, I think we would get along very well :). I just quite a full time job to do contract work and I don’t want to go back to full time. Would you consider working with a contractor on a per project basis?

        P.S. Now you just need to move out of the Bay area to the northwest, we embrace all dev stacks especially the MS stack.

        • http://blog.jdconley.com JD Conley

          Yup, might work with contractors. Send some info to jobs@realcrowd.com.

  • fullStackPoly

    C# is awesome and asp.net vnext is totally free open source and runs on your macbook. Too bad some people choose to be closed minded and ignorant. I would feel sorry for them if it wasn’t the same folks who claim to be so superior.

  • http://iactionable.com Jason B

    Good stuff! I always wondered what it would be like being a company at YCombinator running on the .Net stack. We surprised quite a few people as well. Over 4 years ago I announced on HN that I was quitting my job to go full-time on my own start-up all based on Microsoft tech. (https://news.ycombinator.com/item?id=1347464) We had considered applying to YC but joined a local incubator instead. Back then it was even more rare to find other start-ups built on .Net and Windows Azure was brand-spankin new! Luckily we also found the BizSpark program which is amazing. At one point Microsoft even thought we were interesting enough to invite us to Redmond to meet the Azure team. They were looking for feedback on their platform and I had plenty of opinions and questions. 🙂

    We’re still growing at IActionable and have never regretted our decision to go with .Net/C#. Although, you have no idea just how badly I wished something like DocumentDB existed 4 years ago… don’t get me started about Table Storage.

    I would love to see more posts about your architecture and experiences with C# and Azure.
    Good lucky everyone!

    • http://blog.jdconley.com JD Conley

      YCombinator actually didn’t care at all what the tech was. They care about the growth and health of your business and founder relationships. That’s about it. If you can execute quickly and grow your business then you could probably be using Turbo Pascal for all they care. There were a few in our batch that used Microsoft tech for various things.

  • sigmaalgebra

    I’ve been using Visual Basic .NET. I find it easier to read than the idiosyncratic syntax C# borrowed from C.

    Where is C# significantly better than Visual Basic .NET?

    I’m using just ASP.NET — what’s wrong with that, and why MVC or the v thing mentioned?

    • http://www.carloscervantes.me Carlos Cervantes

      C# gets most CLR constructs at least one year before VB.net. There are also some keywords like “yield” that only work in C#.

      • Tom Theisen

        fyi VB has had “Yield” for some time now.

        • John Simon

          There are transformers that’ll turn C# to VB and vice versa. It’s mostly a matter of syntax.

          • sigmaalgebra

            Thanks. I thought so, and that’s why I have regarded the differences as mostly just syntactic sugar.

    • Nah Bro

      it isn’t “significantly better”. At best it is marginally better and only if you prefer it. With c# you get partial interfaces, the ‘unsafe’ keyword, static classes, etc that you can’t get in VB. In VB you get a bunch of “quality of life” improvements that abstract some of the not-so-obvious complications that c# leaves in the open. Though I disagree that C# has idiosyncratic syntax.. its all very normal to me.

  • Romoku

    Is this full time only or is part time available?

    • http://blog.jdconley.com JD Conley

      Full time only at the moment

  • Steve

    I did exactly that last year in Toronto, except was using MongoDb as storage. The rest of the stack was exactly the same. We had big-data with millions of records with complex searching and dynamic keys/values.

    Anyway, do you consider only U.S. residents, EU citizens won’t work out for you, right?

    • http://blog.jdconley.com JD Conley

      We can possibly do contract, but aren’t setup to have employees in the EU.

  • http://www.cylentware.com Chad Boyer

    Do you find the NoSQL store efficient for that you are doing? Usually when people say running the Microsoft stack that includes SQL Server. So just curious how it is working with the NoSQL side?

    • http://blog.jdconley.com JD Conley

      We don’t use SQL Server at all in production. Sometimes we do some analytics in SQL Server. We use the Table storage, Blob storage, and cache systems in Azure. We will likely put some things on DocumentDB when it gets out of preview because of the awesome indexing support. The Table/Blob stores are very reliable and easy to work with but do have some fairly major shortcomings in terms of searching and data types. Our data access code is much more complex than it would be with SQL — we do a lot more data operations in application code rather than in the database.

      • http://www.cylentware.com Chad Boyer

        What do you use an ORM? I am thinking it isn’t anything like Entity Framework which is usually pushed by Microsoft to go with MVC. (Plus data operations I am finding with EF are slower than doing them in the database but I guess it matters where you got your hardware: Web side or DB side).

        • http://blog.jdconley.com JD Conley

          We don’t use a heavy ORM. Just the simple SDK for storage. It handles dynamic models and also works with our strongly typed models. https://www.nuget.org/packages/WindowsAzure.Storage

          We have a layer on top and helper functions for various things…

  • Leon Cullens

    I just wanted to let you guys know I love the way this is written. I’m a .NET dev and your stack looks really cool.

    One thing I was wondering about: why make the whole codebase async? Async will only help you for expensive I/O bound calls. Using it for small/fast calls will result in lesser performance because of all the context switching.

    • martijnhoekstra

      The depends on how it’s scheduled, with fork-join pools you can do more work on fewer threads, leading to less threads parked waiting, leading to less overhead.

      • http://blog.jdconley.com JD Conley

        Less threads definitely means less memory overhead, and the .NET threadpool does a pretty good job at managing this, but the shelving of the request context in ASP.NET does have some CPU/memory overhead that is orthogonal to the threads themselves, as well as the possible thread context switching in the CPU. The thread context switching is one of the benefits of a “purely” non-blocking single threaded event loop model like Node.js. Going async in ASP.NET should definitely only be used for I/O bound stuff. I guess one exception could be for compute bound tasks that you might want to happen on background threads.

        • martijnhoekstra

          In a microservice based architecture where your business logic might live on a different machine than where the requests are handled a fully async approach makes a lot of sense too – though I guess you could call a call to a microservice to be IO bound

          • http://blog.jdconley.com JD Conley

            Yup, I would consider a microservice call I/O bound as it is going to go over the network (and use I/O API’s in the OS).

    • http://blog.jdconley.com JD Conley

      Yup, you’re right. We only use async contexts for I/O bound calls. Most of our application gets a request, then requests some multitude of resources over the network. The context is then rejoined and a response is served.

  • martijnhoekstra

    Good luck, sounds like an interesting project! IMO Microsoft has been doing great with their ecosystem over the last few years. Everything (other than MSBuild) is getting a lot at being modular and less dependent on a full MS stack. C# has some features that are really cool (async/await) amazing but awkward features (don’t evaluate expressions if the expected type is an expression rather than the evaluation result of an expression), some puzzlers around anonymous types, identity and equality, and a handful of warts (delegates rather than first class functions). Overall it’s pretty great. By far the hardest thing is finding people with decent skills, a start-up mindset and a C# skillset. It’s a rare intersection, unfortunately. The same, but to a far greater extent goes for VB.Net by the way.

    Again, good luck!

  • drhowarddrfine

    You won’t be around anymore one to two years from now. Guaranteed.

    • http://blog.jdconley.com JD Conley

      Thanks for the encouragement!

  • Andrew Brown

    The URL on your blog post implies that you use c-hashtag… Bonus points to the dev that fixes that first…

    • http://blog.jdconley.com JD Conley

      Nice catch. That was actually done intentionally/manually. Inside joke … 🙂

  • http://trackjs.com/ Todd H Gardner

    Hey @jdconley:disqus, Thanks for writing this. I’m in the same situation–I cofounded a startup that provides JavaScript Error tracking services (trackjs.com), and we use the Microsoft stack, housed on Azure, and part of the Bizspark program. It has been amazing for us.

    Like you, I have recieved dumbfounded looks from other startups who assume we are part of the same cool, hip crowd as them. Then they see Windows running on our laptops and deployments in Azure and they are agast. I am weary of defending our choices.

    Hopefully this takes a small step towards changing that attitude. Thanks!

  • Tom Yu

    I am a big fan of C#. My experience comes from the Unity3D game engine and the Xamarin SDK which allows cross platform mobile development with C# as the unifying language. I’m not a big fan Microsoft, but that may change since the Ballmer era is now past.

    I started my Computer Science journey in java. It is the primary language of focus for my undergrad classes, and then my job in the industry was Android engineer. C# feels like a superset of java, and my favorite part of C# is the elegance of asynchronous programming. Java feels primitive by comparison.

  • Robert Zhu

    As someone who has been making the transition from .net to more open web tech, I am so happy to see a post like this. Bravo. I’m glad you are standing up for what you like/believe/works.

  • jinushaun

    C# is great, but managing remote Window machines to automate building, testing, and deployment was a huge pain at my previous company. Azure is only a solution if you don’t mind being stuck on it. Once you’ve tasted development on Linux/OSX, Windows feels like eating soup with chopsticks.

  • knocte

    You can stay in the best of both worlds (best Microsoft tech, and best stability/community outreach) by using .NET in opensource operating systems thanks to the Mono project.

  • Ryan

    Great post JD! Question for you about how you balance (what appears to be) a multi page app, and use of AngularJS. What drives your decision on when to render or submit data using angular vs. rendering server side and standard form submissions? I ask because I am also currently developing an app using the “verboten” language of Java (grails more specifically), and want to use the goodness of angular on the front end wherever possible.

    • http://blog.jdconley.com JD Conley

      We definitely have a hybrid approach. We do server side rendering on our anonymous pages for search engine friendliness, and trend toward AngularJS controllers/services/directives and web services on the rest. We don’t use client side routes though, so we don’t use the SPA features. Instead we often render a view on the server, include what we need, and ship JSON versions of models with the initial server-rendered view to be consumed by our Angular code. Then we use AJAX updates and interactions from there. It’s a bit “old school” but we like the user experience it provides.

      • Ryan

        Cool, glad to know I am not the only one trying to do it this way. What have you found is a best practice for rendering your JSON and bootstrapping it into angular? Are you setting it into a sub-scope on the window variable, or do you tend to use ng-init? Both will work obviously, but I haven’t been able to figure out which feels “right” to me yet. Thanks for the quick response!

        • http://blog.jdconley.com JD Conley

          We use a pattern where we define a factory on page from the server like WhateverAppModule.factory(‘rcScopeInit’, function(){return { interestingData:’blah’}}).

          Then we inject that rcScopeInit into the angular controllers in the Angular app and such and they load the “interestingData” into whatever scope they want.

          • Ryan

            Ah! That is great idea!