What questions do you have for the 37signals programming team? We’ll be recording a programmers’ roundtable podcast soon and we’d like to answer your questions. Please leave your name too (anonymous questions won’t get answered).
You’re reading Signal v. Noise, a publication about the web by Basecamp since 1999. Happy !
What questions do you have for the 37signals programming team? We’ll be recording a programmers’ roundtable podcast soon and we’d like to answer your questions. Please leave your name too (anonymous questions won’t get answered).
Jacob Bandes-Storch
on 11 Aug 10What do you use for version control? How do you have testing/deployment set up?
Dan
on 11 Aug 10What does your deployment process look like?
Jeremy Osborn
on 11 Aug 10In your (collective) opinion, what’s the difference between a good programmer and a GREAT programmer?
Rupert
on 11 Aug 10How do you decide which new technologies you use and what not to use?
Julian
on 11 Aug 10What testing frameworks/processes do you use?
David Fitzgibbon
on 11 Aug 10What are the best/your favorite resources for keeping up to date on development?
What are good resources for beginners?
What has been your best experience in developing?
hmart
on 11 Aug 10What apps have you migrated to Rails 3 already? can you share tech details/ lessons about it?
jake
on 11 Aug 10How do you balance maintenance and utilities vs working on new strategic things.
Tommy
on 11 Aug 10What type of development process do you use? Is it something very formal that’s heavily documented etc or is it more informal?
How important is documentation, unit testing, UAT etc.
Scott
on 11 Aug 10Suggestions to get started in programming/ruby/rails.
Ann
on 11 Aug 10How do you keep current? When you hear about something new, how do you learn how to use it? How do you separate a gimmick from a legitimate progression?
Dave Tolsma
on 11 Aug 10What tools do you use? Git for SCM. Issue tracking? Product management basecamp. Other tools you use and how do you integrate them all to have a common dashboard?
Joe Esposito
on 11 Aug 10How and when do you decide to begin using a new technology (that you don’t build yourself)? Such as programming language, programming pattern, framework/API, developer tool, source control, collaboration manager, etc.
Additionally, when do you decide to actually create such a new technology?
Kang Chen
on 11 Aug 10Do you guys do any A/B testing? If so, what do you use to help you decide whether something is valuable to the company?
Jon Whipple
on 11 Aug 10How do results of user testing or A/B testing inform the visual design of your products and 37 Signals overall? Curious because as an example of testing on Performable says red buttons outperform green buttons by 21% in enticing the user to click (http://blog.performable.com/631526233/). For me this will mean client and even some internal insistence on red buttons everywhere. How do you handle this for yourselves?
Ryan
on 11 Aug 10In a Rails app, do you put modularized code in lib/ or do you generally keep those abstractions/modules in vendor/plugins? What indicators do you use to determine if it’s “plugin-worthy” so to speak?
What plugins do you use that 37signals was not responsible for writing, if any?
Maxime
on 11 Aug 10What is this upcoming stuff you have been speaking of lately? Translation software? Spreadsheets?
Matt B.
on 11 Aug 10Can I work at 37signals? :-)
Mark
on 11 Aug 10What’s the status on 37signal’s WYSIWYG editor that was announced a few months/years back?
Paul Jensen
on 11 Aug 10feature request, Draft, folders please?
Patric Schmid
on 11 Aug 10How do you decide what feature for which product to improve/implement next?
Jason
on 11 Aug 10When do your programming setup’s look like? iMac’s, Mac Pro’s, MBP’s? Dual Screens or Single Screen? etc
Bryan Sebastian
on 11 Aug 10Dan Pink, when talking about what motivates us to be creative, often refers to Atlassian and how they have “FedEX Days” where all the developers get to work on anything they want for 24 hours. Google also uses a similar concept called “20 percent time” where developers can budget 20% of their time to do whatever. Both companies say that some of their best work comes from this. I was wondering if the development team(s) at 37signals also do something similar? If so, how is it done compared to the Atlassian and Google ways of creating “creative time”? Thanks for the chance to ask a question.
Jason
on 11 Aug 10Correction: What do your programming/design setup’s look like? iMac’s, Mac Pro’s, MBP ’s? Dual Screens or Single Screen?
Topher Fangio
on 11 Aug 10I work for a small startup as the sole developer, and thus, I tend to wear a lot of hats. Being that you are a fairly small company (employee-wise), on average, how many hats do each of you wear?
Michael
on 11 Aug 10How many of you believe anyone can learn to program as well as you do?
Michal Till
on 11 Aug 10I would like to know if you use some agile software development methods/frameworks especially like Scrum etc. And what do you think about them and the whole agile methods “revolution” in general. Is that relevant for small businesses?
Roel
on 11 Aug 10What kind of beverage do you offer your programmer?
Ted
on 11 Aug 10Why don’t you make Basecamp open source? Don’t you have enough money?
mikhailov (Mikhailov Anatoly)
on 11 Aug 101) What exactly Chef Recipes (http://github.com/37signals/37s_cookbooks) do you using for setup Basecamp, for instance? 2) What’s the very first tip for scaling a Rails application? 3) Does Cloud Computing suitable for 37signals projects? Yes/No and why?
Chris
on 11 Aug 10Are you going to use any advanced AI things (Machine Learning, Information Retrieval, Natural Language Processing, ...) in your products in the future? Why or why not?
Mark S.
on 11 Aug 10What is the best way to get started using Ruby and Ruby on Rails?
Lee
on 11 Aug 10I’d like to hear about your opinions on testing and testing frameworks. How much do you “test first”, do you do spec style/bdd testing, perhaps user acceptance testing, cucumber?
joet3ch
on 11 Aug 10What does your ‘web’ development environment consist of and how do you manage it? Also, how do you deal with code deployments… Do you test in a staging environment mimicking production infrastructure before going live with new releases?
Ashton Brown
on 11 Aug 10As a web designer coming from a graphic design background I like to hire programmers for any development. What are some key questions I should be asking them to shed insight on their capabilities and ability to do a good job?
Stacy
on 11 Aug 10With such a distributed workforce, how to you handle payroll? Do you have to incorporate in all the states that team members live in? Is managing this very expensive and cumbersome? We would like to find the best way to hire the best people wherever they live too.
Scott
on 11 Aug 10Why a round table? Why not rectangle, oblong, or square?
Mike Graf
on 11 Aug 10Could you make some comments/advice for n00bs in the Programming world? Assume they have a CPSC degree from a terrible school, How would you suggest they go about learning major web techs like RoR , Hadoop, Memcached, etc. etc.
Thanks -Mike Graf
Miles
on 11 Aug 10I regularly use HTML and CSS and occasionally use PHP for simple tasks.
I am interested in taking on JavaScript and Ruby on Rails, how do suggest I approach getting started? Jump in on the first tutorial I find? Try adding basic functionality to some of my existing projects using a reference as I encounter problems? Or something more guided and formal?
Is there anything about PHP that I’ll have to “unlearn” in order to better understand Ruby?
Ian Lotinsky
on 11 Aug 10Thank you for Rails, David! I started to hate web application development after working in J2EE and ASP.NET for too long. I love it again now.
Ever since I drank the Kool-Aid, I have been debating internally and discussing with other developers how much test code to actually write since Rails allows developers to work at a higher level of abstraction. How thoroughly do you test models, controllers, views, and integrations between them? Where do you think developers should aim to fall between no tests and Behavior-Driven-Development (BDD)?
Thanks.
(+1 for development process. +1 testing frameworks.)
@Mark, their new editor is in-use on Basecamp already.
Amber
on 11 Aug 10How often do you deploy and what sort of deployment testing (manual or otherwise) do you do?
Kelly
on 11 Aug 10My question is about balancing productive partnerships with a classic DIY mentality.
I’ll give my story as a working example: closet entrepreneur tolerating corporate management jobs, physics training, business experience and very meager coding skills. I always have ideas for startups; the current one I think merits investment and I have begun devoting 8-10 night time hours per week on a web app concept. Getting to the implementation of the idea, I face a conundrum. I’m not a programmer (yet) and I work best in a team, so I am inclined to bring people on to help me make my idea better and real. But I’m also a hacker that wants to do everything myself and doesn’t believe an idea has any value until it is implemented. So do I spend my hours pushing my way up the RoR learning curve or go through my gmail contacts and call everyone who might know creative developers?
Long question – sorry. I’m sure your team has faced questions like this in the past, and I would love to hear how you navigated this tradeoff.
Alan Storm
on 11 Aug 10How do you decide which similar, repeatable coding tasks are common enough to come up with an abstracted solution vs. ignoring the possibility of abstracting something and just slogging through the similar, repeatable coding to keep getting things done and keep things real.
Maksymilian Sleziak
on 11 Aug 10What would you do if ruby does not exists? :) which language you would use?
Aivaras
on 11 Aug 10What do you think about BPM? Did you try to test or implement it in your organization?
Manuel
on 11 Aug 10What do you thing about ActionScript/Flash vs HTML5/CSS3?
Maksymilian Sleziak
on 11 Aug 10Tell us more about you, who are you? Where did you work before 37signals, how you did involved into 37signals etc.
Neil Middleton
on 11 Aug 10In your development, what fundamental rules do you never break?
Ahmad Alhashemi
on 11 Aug 10I’m sure that each one of you is competent enough to code every feature in Highrise. Would you say, though, that any one of you could have got it to fruition as a solo developer?
Jeremy Hageman
on 11 Aug 10What are your favorite gems?
What do you like least about Rails?
What are your thoughts on Behavior Driven Development, Test Driven Development, etc… and effects it has on rapid prototyping?
Jeff
on 11 Aug 10My question is roughly in the same camp as Kelly’s and Ahmad’s.
I’m a developer working on 2 promising applications part-time. Each application has a solid user base and I’m trying to take them to the next level (e.g. paying for my lunch). But I’m finding it hard to move beyond just myself. I’ve had other developers (friends) come on board and do little things here and there but folks seem reluctant to commit at any significant level. High equity has been offered and even small sums of money have been made by all contributors. Everyone claims they see tremendous potential but the long term partnerships just aren’t clicking.
I’m pretty certain that in order to do something great, I’ll need to move beyond 1 guy hacking away after hours.
Question: Do you have any suggestions for the lone developer who wants to grow a small team (3 – 4 people), wants partners, not employees, and doesn’t have any capital to sink into compensation at this time?
Thanks a lot for these QA sessions – I really appreciate them!
Yaroslav Dmitriev
on 11 Aug 10How do you share common functionality across your Rails projects?
For example, I ended up putting shared things into plugins, with their own migrations, javascripts, images and stylesheets and what not. Then symbolic links are used to expose the assets to the web and Jammit joins and compresses the fragmented js/css code. I remember reading about how you used Sprockets to manage the assets, although it copied image directories rather than symlinked and also seemed to be oriented towards strictly single output js/css file. Was it intentionally so?
Do you use git submodules for such shared functionality? What do you think of Fake Submodules?
How long does it take to deploy a project like Basecamp? If long enough, are you ever tempted to modify files and fix bugs in-place and then propagate the changes across hosts using git?
How do you track errors?
When database writes and reads go to different hosts, are you often hit by the replication lag? Say, if you just created a record and immediately try to read it, it may be not present on the slave host yet. How do you deal with this?
Many thanks.
Petros Amiridis
on 11 Aug 10Do you use the built in rails testing mechanism? Do you use the built in fixtures mechanism for test data? Do you use anything else in testing for mocking/stubbing?
Philip Poots
on 11 Aug 10How do you maintain focus?
Manuel
on 11 Aug 10What do you look for training to improve your skills?
Jimmy Chan
on 12 Aug 10Actively follow a creative trick blog programming or search solution after the problems appear?
Eric Hayes
on 12 Aug 10How do you fight feature creep? How do you filter all that’s possible down to what’s essential?
Sean McCambridge
on 12 Aug 10What are the important differences between a novice programmer and an experienced programmer? What about a good programmer and a great programmer?
John
on 12 Aug 10During discussions to include a feature, how do you guys talk abt it. I mean, one person might feel that features must be implemented in a certain way and another person might want to do it in a different way. In that case, how do you create a consensus ?
Dan Dawson
on 12 Aug 10As an active Basecamp user myself, I know there are many features users are begging for. I understand your goals of keeping the software simple and letting people use it how they want, but if you actually implemented more of the user requests, do you feel it would harm the value of the software? Would it make the software harder to use and cut your revenue, or might it add the features people really want and increase it?
Wilson Xu
on 12 Aug 10How do u guys solve conflicts on the team? Thanks.
Devang Kamdar
on 12 Aug 10I am trying to learn and start a business in web development. I have a background in client-server application development in C/C++ and Java on Unix (about 5 years). I have also been tinkering with Obj-C for iphone dev. If I start learning HTML 5, CSS 3, JavaScript, Rails, Cross Browser Testing and Compliance now, how much time do you think is reasonable to give to formal training (not necessarily schools or institues but rather reading books and probably some video tutorials) before getting down to code?
Devang Kamdar
on 12 Aug 10How do the programmers at 37 Signals keep themselves updated with new and advanced features of any programming language or platform or tools? Other than attending conferences (which are a most of the time a little too expensive if you do not stay in USA), are there any good blogs that you recommend or yourself follow. I know there are tons of them out there. But is there a podcast or a blog that you particularly like?
Devang Kamdar
on 12 Aug 10Whats a typical work day like? What environment do you all prefer (cubicle v/s private office) and what do you actually have to work in? What kind of improvisations help if the ideal environment is not what you get but you still gotto get the job done?
Devang Kamdar
on 12 Aug 10How do you protect intellectual property (esp. Proprietary code)? A lot of my friends who have consulting business, actually install spy tools on each of their employees’ machines and restrict their access to websites and personal email using a “fire-walled” internet access. I do not particularly like this approach esp. because it falls on its face when used with a team where people can work out of cafes and home. But they dont like it either and often blame it on “their are no other alternatives”. They have to protect Client code. They have tried “trusting” their employees but most of the time it does not work with at-least 10% of the lot. Have you faced any such problems during your consulting days or even now? How have you tackled it? Please share any suggestions for small companies that do not want to breach employee privacy and make them uncomfortable but at the same time assure their clients that their code is protected.
Mark Dodwell
on 12 Aug 10Fixtures get bad press, but Rails tests use them by default.
Do you use fixtures? If so, how well do they work for you?
Eli
on 12 Aug 10Do you do automated testing around your new features as apposed to adding more new features? (i.e. – Selenium tests)
jonathan drake
on 12 Aug 10do you have/make strategic partnerships? If so what do they look like?
Philippe Lang
on 12 Aug 10Hi,
Do all members of the team work with the same environment, like TextMate / Shell on a Mac, or do some of you use other tools too? (Eclipse / Windows?)
How is the development team organized: is there some kind or hierarchy, where someone organizes the work and chooses the technology to use, or is every programmer 100% free?
How much time do you invest in unproductive work, like reading blogs on internet, testing new technology, testing new ideas, doing tutorials…
Luis Molina
on 12 Aug 10hi, do you use any code generation technique, apart from the scaffolding in ruby?
Matt Henderson
on 12 Aug 10I’d be interested to hearing about some of the areas (if there are any!) in which you still struggle, either personal (as relates to running a business) and organizational, and how you plan to approach them.
I’d also be interested in hearing about (though I’m guessing you can’t talk about it) the compensation model you use in 37signals. Is everybody a partner at some level? Do you do profit sharing? The whole question of compensation seems to be rarely discussed openly in any kind of detail, but at the same time, seems to be one of the areas with which most small company owners struggle with the most (and wonder what others do).
Joran Greef
on 12 Aug 10When will your apps begin to address “the Network”: latency, network/server failure, the decoupling of user interactions from the network, offline access, i.e. when will they go beyond http://developer.yahoo.com/performance/rules.html?
Why do your APIs not support JSONP?
Leandro López (inkel)
on 12 Aug 10If you use any kind of master-slave database replication schema with Rails, could you tell us which plugin/gem are you using for it?
nick
on 12 Aug 10What does a job posting for a programming position at your company look like? What does a CV of a typical hiree look like?
How much importance do you put on formal education? What kind of soft skills do you look for? What sort of interests do your programmers pursue outside of work?
Rafael Spínola
on 12 Aug 10How deep do you go pursuing performance? 37signals products are also known for their speed, so what kind of ideas, design and coding patterns and other stuff you do to achieve this goal? BTW, cheers from Brasil!
Trevor
on 12 Aug 10What are the top 3 things that make a good programmer?
alexandru
on 12 Aug 10How do you decide, when looking to add functionality to any of the 37signals’ products, whether to use an existing solution or roll your own? For example, the forum redesign — was there any consideration given to existing platforms like StackExchange etc, or did you pretty much know you were going to do it from scratch?
And if you do consider other tools/frameworks/platforms etc, how does that process look like? Do you audit it, verify it beyond the developer-provided tests etc? (this would apply equally, I think, to both FOSS and closed-source products)
Matt McCormick
on 13 Aug 10How do you stay keep up your interest in a project/product?
Generally, I get bored with projects after a few months. I’ve never worked longer than a year at one place because of this. What do you do to keep things interesting and keep excitement levels high?
Hasen el Judy
on 13 Aug 10I like your ideas about building less features and less code.
But, I have a feeling that this approach ends you up as merely a “service” company. ok, maybe I’ll have a decent product and customers will like it, but can it be something that pushes the technology forward?
Less features are good for business people and non-technical types.
If Photoshop adopts the “less” philosophy it will end up being paint.net, which is a fine image editing program, but it just can’t push technology the way Photoshop does.
I use git for all my projects and it’s hard to imagine it being a useful tool if it had less features. I tried bzr and hg, they both have less features, and it just doesn’t cut it for me.
Thoughts?
Cameron
on 13 Aug 10What do you think of the NoSQL movement. Have you considered using any document or key/value stores such as MongoDB or Redis for 37S products? Or do you feel obliged to stick with ActiveRecord?
Vladimir Mitrovic
on 15 Aug 10If you were to start a new web business today (like you did with Basecamp), with little or no money, what setup would you use in terms of servers (hosting), version control and deployment in order to get the business up and running quickly?
Shannon Coffey
on 16 Aug 10What kind of day-to-day interaction do you have with David & Jason? Are you coming up with ideas for products and improvements just as much as they are? Or are you more of a team that just gets it done?
Jeffrey R.
on 17 Aug 10Related
Stone’s Greg Koch on NPR’s Marketplace
This discussion is closed.