by stasel on 1/25/16, 7:43 AM with 35 comments
by smt88 on 1/25/16, 8:00 AM
- Don't work with a friend on a startup. You are very unlikely to be friends afterward. If you can't easily compromise on something as unimportant as your stack, you're going to disagree on way more important things. Why do you need two devs anyway?
- Two things that kills startups are analysis paralysis (always trying to make the perfect choice = wasting lots of time) and being afraid to leave your comfort zone. Both of you should be willing to use the other person's stack because it will end this pointless argument and also help you learn something new (and possibly something you like even better than what you're using now).
- If you're using Angular, you have an objective reason to slightly prefer Node: it allows you to use a single language on the front and back ends.
- One possible compromise would be to use TypeScript, which was created by the same guy who created C#, so it shares lots of the same philosophy. TypeScript is also the native language of Angular now, so you can use it on the front and back ends.
- Another possible compromise would be for one of you to work on the back end only, and the other to work on the front end only.
by t-rav on 1/25/16, 9:00 AM
Strictly pair program the implementation to facilitate quick knowledge transfer of the tech stack.
In the early stages, it is about finding a minimal solution to fit your value prop so you can get people to engage with it and validate your assumptions. This requires more thinking than code. Pairing the implementation will not only allow tech knowledge transfer, it will facilitate those important idea discussions that need to happen too.
by ac2u on 1/25/16, 1:59 PM
With that said, you need to divide responsibility. Either a 'CTO' role that has the decision to base the stack in his/her choice, or divide the tech up frontend/backend and give one person authority over each.
When it comes to tech decisions, look at what you can work on fastest, secondary considerations can then be things such as your immediately available hiring pool, and what would gel easier with those people, and finally things like licensing.
by maybeok on 1/25/16, 12:14 PM
In the future you may have ancillary services/apps better off using a separate DB for performance. DB licensing costs will influence your design decisions so remove those costs from the equation.
C# is fine though (even on linux) and will give you reasonable performance, likely better than node.js is most cases.
by dagw on 1/25/16, 2:45 PM
by eswat on 1/25/16, 3:25 PM
As developers we think picking a tech stack is an immensely important decision for the foundation of your company. It isn’t. As developers you should be competent enough to pick up the slack and learn new tech as needed quickly, and leave the extra cycles to pick up things that you suck at but will need to figure out: customer services, business model, etc.
Echoing what other commenters have said, if you’re already running into problems about decision making then it’s likely to get worse. I also think you’re optimizing for developer happiness way too early.
by onion2k on 1/25/16, 8:35 AM
by floppydisk on 1/27/16, 3:17 PM
You're going about this the wrong way. Build from the problem down to the tech stack, not the tech stack up to the problem. Here are some questions I'd ask in the following order:
1) What is the problem we are trying to solve?
2) At a BUSINESS LEVEL what is our solution? Not we route records through this $DATABASE and $CRUNCH_THEM, but "we enable users to solve $PROBLEM by $GENERAL_SOLUTION_DESCRIPTION"
3) What makes us different from other solutions to $PROBLEM or why is our approach more unique than what currently exists, at the business level? Better idea, better execution, what?
4) What is the market for $SOLUTION to $PROBLEM? How do we know this? How do we sell it?
5) What kind of processing do we need to do? Any serious custom crunching or are we interfacing with a database and moving data back and forth? Can we plug into existing services and leverage them rather than writing our own? i.e. AWS/Azure?
6) What is the best way to deliver this solution to the end user? Mobile? Desktop App? Web App? Some combination of the above? Why?
7) Given $SOLUTION(S) and $CRUNCH needs what's maximizes our chances for success by minimizing the number of moving parts in terms of tech stack? Do we need to do a web app + mobile with limited crunching backend? Do we need a lot of heavy server side crunching with parallelism/concurrency and a robust object model?
Let the problem space guide you to the solution rather than starting from a solution and working up to the problem. It'll save you some technical headaches later.
by timjahn on 1/26/16, 5:09 PM
Focus on validating the problem first. Get people to pay you to solve that problem and once you have people begging you for the solution, then figure out something to build.
I've seen (and experienced myself) this mistake too many times. The tech stack does not matter AT ALL.
All that matters is that you're solving a problem for the people that will pay you. Don't spend 3 months perfecting the ideal tech stack and then realizing you have nothing to use it for.
by kogir on 1/26/16, 5:10 AM
Then, if your idea works out, you're going to learn a lot and gradually replace all the code anyway. Wait to decide then. This is the one to throw away.
by csomar on 1/25/16, 12:10 PM
by runT1ME on 1/25/16, 7:50 PM
by herbst on 1/27/16, 10:33 AM
by senjindarashiva on 1/27/16, 7:15 AM
by lovelearning on 1/25/16, 9:34 AM
I suspect C# /.NET / MSSQL / Windows servers will be higher. In addition to server costs, someone has to pay for those software licenses too.
by edimaudo on 1/25/16, 5:35 PM
Furthermore, it may be worthwhile learning each other favorite stack as you could pick up new skills. Could be a bonding experience as well. Just my two cents.
by quintes on 1/25/16, 8:57 AM
by Raed667 on 1/25/16, 11:33 AM
Just do your product.
If a stack shoes some limits when scaling or anything else along the way and if your startup is still viable, then you can plan a migration with all what you learned to back your tech choice.
by wturner on 1/25/16, 12:05 PM
by lastofus on 1/25/16, 4:26 PM
by debacle on 1/25/16, 2:41 PM
by vskarine on 1/25/16, 7:51 AM
On the side note, I highly recommend to try Meteor (www.meteor.com). I was in the same spot a year and a half ago and when we tried Meteor, we didnt know anything about Node but Meteor was so simple that we just went with it and never looked back.
by rajacombinator on 1/27/16, 12:42 AM
by elchief on 1/26/16, 1:37 AM
Personally I'd go with a universal React.js on Express (snappy SPA for users, crawlable server-generated html for googlebot, with one codebase) talking to a .NET REST API.
Then later you can use React Native for mobile and the same REST API. Or an Electron.js desktop app talking to same API.
PostgreSQL matches MS SQL Server in most regards, but MS SQL Server kills it for text search, but PostgreSQL does row security, and is, you know, free.