Domain: thoughtworks.com
Stories and comments across the archive that link to thoughtworks.com.
Comments · 18
-
Like all things, it depends...
There are a few axis along which you can do the comparison -
1. Developer Productivity - A save and reload framework might be more suitable if that is the existing mindset in your group. This seems to be a very underrated factor while judging your framework/dev set-up.
2. Existing codebase's dependencies - If you have a lot of dependencies which cannot be easily replaced in your new language, that is going to be a problem.
3. Performance of the framework - You want to have at least one large software shop using the framework whom you can use as a guide.
4. Community - This comes down to not just library support for future use cases; the rule of thumb is, if the first few setup issues you are having are easily solved by answers from StackOverflow, you are probably OK.
5. Recruitment - Languages/Frameworks often define the culture of a workplace and directly affect your recruitment base.
Actual Suggestions - 1. Scala/Play - Can use existing Java libraries. Encourages a less verbose coding style than is typical for Java. Twitter moved their Rails circus to Scala. A big con - their language bumps are apparently frequently non backwards compatible. So you might have to hold for a bit until things stabilize.
2. Rails - Easy setup. Solid Community. Good testing framework. Cons - Proven to not scale at Twitter. There are at least two other examples of Rails not scaling. Why jump ship twice eh? Dynamic typing is not exactly helpful when your code reaches a certain LoC count.
3. Golang - Good concurrency model. Easy to read code, almost a C-with-concurrency. Backed by Google; this is not going to be abandoned because a lot of internal Google teams are deeply invested in Go. Cons - Not as popular yet as Scala or Rails, so lesser library support; but rapidly expanding community.
ThoughtWorks has a languages and frameworks radar that can serve as a good 10,000 feet survey of the field - http://www.thoughtworks.com/ra... . In an ideal world, do not get too invested in any one framework.
The problems with perl - (I work in a large perl shop, if not the largest perl shop.)
Recruiting is a pain.
New devs need to get comfortable with perl idioms; a pattern that seems to encourage code obfuscation more than readability.
Optimal runtime concurrency is impossible. Even if you roll our own Futures library.
Bless is not safe. Consequently, you lose any sort of concrete interfaces.
There is no concept of unit testing. -
JVM-based languages like Scala, Groovy, Clojure
... would further inflate Java's domination of the stats. Java as the core is very strong. I'm seeing increasing adoption of (and job offerings for) the JVM-based languages though. If you don't already know about it, ThroughtWorks has a wonderful semi-annual Technology Radar comprising their consultancy's experience and evaluations of various tech.
-
Be for something, not against something
You might consider joining ThoughtWorks (if you can get in.)
http://www.thoughtworks.com/mission-and-values
http://martinfowler.com/bliki/ThreePillars.htmlThey are a global IT consulting/custom software development company with offices in 10 countries.
ThoughtWorks organizes their business around three pillars, the third being "Advocate passionately for social and economic justice." That means that the company generally avoids the same sort of work you would like to avoid AND seeks out work that will make the world a better place.
They also do a lot of cutting edge stuff... they were pioneers in agile and continuous integration 10 years ago when both of those were considered kooky by the mainstream.
I don't know how much --if any-- "mathematically ambitious" work they've had using CUDA but you could be the guy who brings that capability to their customers.
-
Re:Perl in decline, at least here
These "other language on my interpreter" projects _seem_ really cool, but in practice it's usually simpler and faster (both development and performance wise) to use the languages in their own interpreters and use some IPC/RPC/web services/etc to communicate with
.NET (or Java, or whatever) rather than trying to shoehorn your language onto the CLI or JVM.In some cases JRuby is faster than the standard Ruby implementation. You also get access to all the services, tools, and existing libs of the JVM. It may also be easier to get it through the corporate iron wall - maintenance don't have to learn how to set up, deploy, tune and monitor a new environment, they just drop in a new jar file.
Don't know about Iron* since I try to stay away from the MS sphere, but there are quite a lot of successful JRuby apps up and running around the world, and Thoughtworks even developed an app for sale specifically based on JRuby:
http://studios.thoughtworks.com/mingle-project-intelligence -
Re:budgets
Yeah we really hate having to call a vendor who needs their product to work in order to survive and ask them for a fix, when some guy here can muck around in the code and fix it ourselves.
You're assuming that you or your problem matters enough to the vendor for them to fix it. We have, more than once, been told "Sucks to be you..." by a vendor. My boss actually quipped that the Microsoft support we payed for was nearly worthless.
Both ways suck. Would be better if the bugs simply weren't there in the first place, now wouldn't it?
Yep, that is the best. You can usually get that with open source, though. I mean, there are plenty of companies around where you can pay for OSS support. Red Hat, for one.
"The domain cruisecontrol.net is for sale. To purchase, call BuyDomains.com at 781-839-7903 or 866-866-2700."
Try this link instead. Whats your point?
-
Re:One topic I'd like to see covered.
Yup, someone is already working on it. E.g., the project I'm involved in: http://rubyworks.thoughtworks.com/ -- Alex Verkhovsky
-
Re:It may be interesting to some that a lot of fol
That said, there's a system now that could change all of that. It's called MSBuild and it ships with Visual Studio. For anyone who does command line builds and whose codebase is mostly managed code, I highly recommend looking into it.
Eh, you do know that such tools have existed for quite a while now? You might want to first check out Apache Ant, or if you're a
.NET developer then take a look at NAnt instead. You'll find a good introduction to NAnt here.Once you've gotten the hang of (N)Ant you might want to set up a automated build server: CruiseControl or CruiseControl.NET
I'm normally a big fan of MS development tools, but when it comes to automating the build process MS is really playing catch up.
-
This looks like a pretty cool use of ruby...
been following this development for a bit...huge agile fan if it matters.... http://studios.thoughtworks.com/mingle-project-in
t elligence/a-quick-tour -
20% is a MythI know Google pretty well, and the 20% time for your project is mostly non-existing across Google. I still not understand why people mention it all the time here in Slashdot without knowing what they are talking about. Even in the US a large percentage of employees don't use it. They are already too busy and stressed with the regular work as to add more on top of it.
By the way, Thoughtworks allows half a day a week for your own open source project.
-
Thoughtworks and Valtech
I've heard good things about using a company like Thoughtworks or Valtech for this kind of thing. They like to do mentoring too, so you can slowly build up your own team while building a product.
-
Be prepared to payThere are couple of consulting firms that you could consider. But you must be ready to pay top dollar. Remember you get what you pay for. For example ThoughtWorks .
-
Fan of Martin Fowler and ThoughtWorks?
Ruby on Rails is now a supported platform at ThoughtWorks! (home of Martin Fowler)
-
Fan of Martin Fowler and ThoughtWorks?
Ruby on Rails is now a supported platform at ThoughtWorks! (home of Martin Fowler)
-
Try Selenium
A testing framework for webapps that runs in the browser. It's both slick and simple.
http://selenium.thoughtworks.com/index.html -
Re:Web / GUI
Try Selenium: http://selenium.thoughtworks.com/index.html
It's better than HTTPUnit as it runs your app in a browser, rather than trying to emulate a HTTP client and failing to support complex JavaScript.
Supports Fit Test scripts. -
Some Open Source Testing Tools
Last January there was a workshop on open source web test tools in Austin.
-
Maintenance
One-time Object Relational Mapping code generation is only useful if you get the data structure right first time and the requirements don't change. This rarely happens, in my experience. Martin Fowler's (of Refactoring, Analysis Patterns fame) employer offer a consultancy service (I read in one of Fowler's articles) for automatic DB change management, tied in with code changes. The other way to do it is all at runtime and in code, but you need runtime support for class creation etc. (like in CLOS-MOP). This works by having the simplest, most general way of accessing data, but you have to handle all the possibilities at runtime.
Summary: needs way of keeping generated code in synch with changing DB schema. -
XP
I've worked with Thoughtworks on a few projects and they looove XP. They also love the idea of refactoring and used to keep a project wiki for each project - similar to what is being described here, except without the historical info.
Martin Fowler, owner of Thoughtworks and XP evangelist, keeps a Bliki (his name for a cross between a Blog & a Wiki)