Ask HN: Need help deciding between a small django shop vs. large .net company

10 points by bnchrch ↗ HN
This is my first job after graduation (I'm 23) and right now I just started a position as a developer in a small company which uses python, django, aws, and knockout/angular. I got the position because my past internships have been this stack, however after taking a week I've discovered that their processes and codebase is a little terrifying and I feel like I'll end up in more of a mentor position. Today I just received a competing offer from a larger company (80-100 employees) which is similar in terms of salary but has many more perks: In house bar, fully stoked kitchen, free gym passes ect. Typically I'd jump at this however the stack is .net something that I'm not familiar with and am not to excited about as I'm not a big fan of microsofts history with their paywalled garden. What I'm really struggling with is I would like to be in a larger company where I can grow more as a developer but I'm wondering if it's worth it enough to sink my time into a .net stack especially when I want to be moving onto the west coast in 3 years. Any advice is more than appreciated.

13 comments

[ 3.4 ms ] story [ 41.3 ms ] thread
If you're just starting out and your experience thus far has been python / django then I'd say go for the .net job.

While .net itself may not be "cool" you'll benefit a lot from diving into an entirely different language, framework and ecosystem. Plus, it sounds like you may get some good mentorship, which is invaluable when you're starting out.

Bottom line: don't sweat the .net - dive into a different stack, spend a few years learning its way of doing things and then see what you want to jump into next.

If your current companies codebase is "terrifying", then you may end up finding a lot of resistance to writing cleaner code anyway. Many of the "senior" developers could be suffering from expert beginner syndrome and not be too welcoming to different ways of thinking.
I took a .net internship this summer and I'm actually really enjoying it. The most annoying thing to me has been dealing with wcf (which you may be able to completely avoid), but otherwise, it's been good. I was also apprehensive to stepping into .net/microsoft stack, but really, as long as you can use modern versions, the tooling provided by Microsoft and Resharper makes things really swell. There are still things that make you go "&#$@ Microsoft", but they aren't really an everyday type of thing. MSDN is great.
Not to be confused with F# @Microsoft being an extremely cool .Net/OCaml language.
Ahah, whoops. Edited for clarity. That's a funny coincidence.
(comment deleted)
I wouldn't consider perks at all because no perk is going to make up for a place where you're not happy. If the salaries are similar then the main considering is if you'll enjoy the work at each company. From your description it sounds like you won't enjoy the django role because you won't have someone to push you to grow. Does the .Net role have great developers who can help you get better at your craft? Tech stacks come and go. You'll need to learn a new one again and again. Focus on the people and opportunities to grow.
Some things to consider.

If you are starting out, keep in mind you are coming into a live and running environment. What looks chaotic to you may just be something that grew up organically over time and has an internal logic that isn't readily apparent. If they have money to pay you, they must be doing something right. Consider seeking that expertise out, even if you feel you are not necessarily being challenged at the technology level. You can always change jobs later when you have this experience under your belt. First jobs out of college are supposed to be "stepping stone" jobs anyway. "Get what you can and move on" is an entirely legitimate way to approach this.

Think about where you want to end up eventually. If you want to move into corporate-land writing reports against business databases, go for the .Net shop. If you want to eventually do "fun" stuff in startup-land, then stay where you are. Because the reality is the complexity of what people are doing with .Net is relatively low - they use it to run businesses, so you're always writing a variant of a shopping cart or accounting program. When people want to do something interesting/new/really challenging, they tend to choose other tools than those provided by Microsoft, inclusive of .Net.

So I guess if you want immediate security, go with the .Net shop. (Though be aware that in any large or even medium-sized organization you are as likely to have to learn politics as programming.)

Otherwise, stay where you are a little longer and see if you can find some value in what you have to work with now.

At this stage in your career is pick whichever one you are going to learn more from in terms of working with great people. By the way you worded it it sounds like the .net shop will have more people senior to you and therefore may be a better learning experience.

Perks and even salary at this point are far behind the benefits of working with an excellent team you can learn from, in my opinion.

Don't take this the wrong way, but at 23 you're not old enough to have lived through Microsoft's history, and it is likely that what you have heard is the agreed upon myth. Netscape's founders had a multi-billion dollar exit that allowed Marc Andreesen to become a VC and Jim Clark to once own a 90 meter yacht. In actual history Apple sued Microsoft, not vice versa and it was Microsoft's executive team who made 10,000 millionaires from its employee option pool.

Microsoft has open-sourced .NET and C#. It's been helping Miguel de Icaza develop Mono for many years.

That said, pick the opportunity with the best team. Pick the opportunity which will push you the furthest. Pick the opportunity where you will learn the most. Pick the one that takes you out of your technical comfort zone the furthest. Pick the opportunity to work with people who make decsions on technical merit.

Good luck.

What about stuff like health insurance, and 401k match? Young people typically don't think about these things, but getting a maximum match out of your 401k contributions (it's literally free money) while you're young will pay back quite a lot when you're looking to retire.
health and dental match but I do not know about the nuances of RRSPS (Canada's 401k equivalent)
As someone who came from the Ruby/Rails stack to a C#/.NET MVC stack, I have to say it was eye opening. The stack has alot of bells and whistles and arguably benefits from the deep integration between the tools (Visual Studio) and the platform. I came in wanting to hate it and actively looking for things to bemoan but, it was rather a pleasant experience.

One last thing is the importance of writing code in a static/typed language. It allows you to write and build things in a different style. It changed how I looked at programming and once I had learned another paradigm, I became far more interested in others. It led me to functional programming which in turn led me back to Object Oriented Programming and reading a bit more deeply about the theory of architecture. It made realize that most of my career, I was either using someone else's architecture or just hacking together the bare minimum for the task at hand without any thought of how the system could change and grow over time.