Hacker News new | ask | show | jobs
by akbar501 4152 days ago
I have recently been going the other direction from the "Southwest model".

It's on a case by case basis, but if it takes less time to learn and use a technology that is purpose built then I'll invest the time to learn / use something new. I find for some situations it's less time and effort to use the right tool for the job vs. trying to make one tool do everything.

2 comments

So I by no means am talking about following the Southwest model religiously. There is always a tradeoff between over using a tool and having too many different tools in place. Ultimately you have to choose the right tool for the job. But more often than not, people tend to choose the trendy tools because they sound cool. Leave the experimentation to side projects where there is less risk involved and the codebase does not need to be maintained for years.

My general philosophy about software development is to keep things as clean and simple as possible -- and no simpler because then you wouldn't be solving the problem in the first place. So I am not suggestion that you over use (for example Jquery) to do everything in the web. What I am suggesting is to think about building software the same way that we build houses. You want to choose carefully the tools that will stand the test of time and not just the fad language or tools. For this I usually check out the community behind the software.

When I architect a software solution one of the parameters that I think about is how long will it take to get someone totally new to my technology stack up and running (and hopefully productive). Most people don't think about this deliberately and so a project might have legacy code that takes months for a new person to come to grip with. Imagine trying to recruit for this type of role. My general rule of thumb is to have the choice of tools/modules as standard as possible and aim for a 2 week preparation period for anyone to get acquainted with the code. For this reason when I use ExpressJS I stick with EJS rather than Jade. I still use CSS rather than Less or Sass (these are my personal opinion).

I also take this philosophy a step further by creating certain software patterns and try as many of the well tested patterns as possible. Thing brings consistency to the codebase.

One place where I am often tempted to break the Southwest model is using Rails for an app server and Python for machine learning. I really believe Rails is a better choice for quickly building and adapting web applications, but Python beats Ruby hands down for ML work, both exploratory and in production. If I knew I was building an ML-heavy application right from the start I'd probably use Python for everything, but more often I find places where an existing Rails project could benefit by adding an ML component. Webdev and ML are easy to segregate, architecturally and personnel-wise, so I don't think the impact of using both is too bad, but I'm curious what others think about this. Does anyone else use both languages together? If so, what is the size of your staff?