I've been thinking about an interesting model for working remotely - something that might be called micro-outsourcing. The paying party provides a set of automated tests (like unit tests, but with speed/space constraints) and a price. Coders submit code which runs against the tests. If it passes, the payer can pay their predetermined amount to buy the source. The idea is to make the turn around fast enough that it makes more sense to program even simple code by "micro-outsourcing" dozens of ~1 hr pieces every day. This way, you could get ~50 hours of code written in a day's time while still keeping the entire architecture of the system in your head.
PS: someone said something insightful, but for some reason deleted it, along the lines of "this will pinpoint the problems of relying on unit tests for correctness". This is very true - one of the Interesting Problems such a project would need to solve is a set of tools to let users quickly design useful unit tests. I'm in no way delusional about automated tests not being able to prove correctness. But I'm not convinced mathematical correctness is all that often necessary, nor that this is a problem without a good-enough solution.
I'm not sure how this would work on closed-source projects. Coders would need to see the existing code that others have written to get anything done, 1 hour of coding could be 45 minutes of grokking how your system is setup and 15 minutes of work. It seems like "micro-outsourcing" would only work for micro-requirements.
You could maybe do something based off of Git where the hirer pays to pull from contractors who have already glanced at the project and can jump in and add a feature, but the hirer would have to expose his business source code to everyone. The alternative is to expose it to less people and have them work on it for longer periods of time to deliver a properly integrated product which puts you back at a regular outsourcing service.
I don't think micro-outsourcing would work because productivity returns from the coder might not start taking off until after 1 hour.
It seems like "micro-outsourcing" would only work for micro-requirements.
Bingo. The role of the "programmer" then becomes to split a project into these micro-requirements, with minimal glue in between. This also yields a system of well-defined, loosely-coupled components... all things dear to my heart.
Even though I said ~1hr, I was thinking of one hour being the upper bound. If I can write testable specs in 3 minutes instead of code which would take 30 minutes to write/debug, I could increase my productivity at least an order of magnitude. But the point isn't even that, it's the kind of architecture one could create by "requesting" tons of custom built components throughout one's day, worrying about their whole structure instead of the bricklaying.
This is something I would love, for both coding and system admin tasks.
The thing is, I would want to 'retain' a few people for these tasks. For example, instead of one system admin, I would have four people who vaguely know my systems (have passwords, etc.) and if I offer an hour's worth of work, the first of the four to accept gets it.
My issue with this idea is that the process of creating a complete set of tests is that the effort involved in creating them is likely greater than the actual coding.
Furthermore, if you are doing something like unit tests, you are dictating the system design. Then it is really just up to someone to fill in the blanks, which in typical software (say a typical web application) is trivial to do.
The only place I could see this working is where there is a simple input/output set. Something along the lines of a unix binary like sort or uniq. However, I'm not sure there is much outsourcing needed along those lines.
Very close. Unless topcoder has changed since I last looked, the big difference is the turnaround time - one on the order of minutes or hours, not days or weeks.
I envy developers who can work remotely. I wonder if there's some model that can work for people like me. I'm not even sure how to describe my skill set other than something like this "a non-douchebag guy with top-tier investment banking and consulting experience who understands tech/dev/web well enough to be the glue between the two worlds and also synaptically chaotic enough to make people rethink positions on things and create order out of disparate ideas". I hate how corporations compromise thinking and genuine human relationships, so I'm going to quit things until I likely become an over-qualified barista serving my former employers coffee. How can I work remotely or for a grounds-up business?
Perhaps you can try contacting the people at Banksimple ( https://banksimple.net/ ) and see if you can help them out at all. If your description of your skill set is accurate, you might be able to help them. That's the only online banking startup that I could think of, although there are probably others that people can suggest.
I'm an independent contractor, I work from home (often times with companies outside of my home city) and I doubt (from experience) you're are going to find many startup opportunities that cultivate remote working; I envision the startup experience as being something akin to a team based sport. You need to be together to roll with the punches, so to speak; there's an immediacy of communication and deliverance of intent that happens when you are physically proximate to each other.
Established organizations have processes and they are established, nothing changes too quickly, therefore making it more feasible to leverage remote workers.
I'm not hiring, per se, but I've been playing with a project management app idea for a while (unoriginal, I know). I do UX/design, so I'm looking for a programmer to partner up with. I'm thinking Node.js would be fun--I'm trying to do something very responsive and fast with some real-time-y features. I'm in NYC but remote is fine with me. let me know if you're interested.
I know a few people who have gotten awesome remote positions. They all started as on-site hires who had to move for family reasons, and the companies/startups were flexible enough to let them keep working remotely. I've not seen many (any?) Startups that consider remote hires from te outset.
personally, even though i fully acknowledge the whole "work with us and share the energy/dedication/soul" thing, i'm most productive when i have the freedom to swap up my view/environment every day (which is something you can't really do too easily inside an office)... inspiration, or something, i dunno.
i think it also forces people to be more thoughtful about the way they communicate/interrupt each other, which is pretty huge.
On a similar note, I am curious if anyone has experience starting a company where the founders were all remote, especially if everyone met over the internet. What were the additional challenges or advantages that the remote arrangement brought out?
The founders at our company are all remote, with developers spread across India, UK and USA. We are doing well, having won Seedcamp last year.
It still amazes me the visceral reaction people have against remote working. This would be fine as a principle, if the same people did not also complain to me that doctors do not embrace technology. But given that our platform is designed for doctors and patients to work together online (including online consultations) it behooves us to practice what we preach.
I will give the following tips:
- You need different habits to work online. In my case, I have a lot of experience in setting up teams to work together virtually based on all my previous IT projects, including writing software for medical students to share their education across hospitals using Palm Pilots, and migraiting 300 employees to use a wiki. I also worked as a management consultant in a company that took pride in working with 2,700 hospitals but without traveling to the hospitals - all research was through phone and email.
- You have to teach the rest of the team these habits, few people know them already. For example, in a telephone conference, you have to explicitly laugh when you would have smiled, as you cannot rely on visual cues for bonding.
- Make use of wikis and document every meeting you have, as you have it, with everyone seeing what you type as you type it.
- my co-founders were either people I knew, or people I got to know in person through volunteer work I would ask them to do over coffee meetings before I asked them to join the company.
By far the biggest saving we have is time. It is not being cheap and cutting costs of office space, it is about slashing the time we spend on commuting and meeting, and I would definitely say that we would never have achieved as much as we did, as quickly as we did, if it was not for working virtually.
For a brief time I worked at a startup where all founders were remote by the time development began. It seems to be much more difficult to stay committed and focused on the tasks at hand when you only interact via email and irc, especially in the early stages where little is invested in the project by most of the members. Needless to say, it fell apart, and at least from my perspective looking back I would say that the remote working part definitely hurt the project. It was also bad that two of the three guys involved weren't entirely committed seeing as they had an easy way out three months into it if it didn't work out.
I work for Sococo, which has founders in Mt View and Eugene OR. Teams work in Mt View, Seattle and Iowa(!). Fortunately the product itself is a workspace collaboration tool, which we all use religeously. It turns out the dang thing works! We are in constant communication, almost like we're in the same cube space, except without the problem of distractions. Try it: www.sococo.com
I made this account because my other one was on non-procastinaio mode. I was also hoping that someone would reply to me and then I would contact him. Thanks for the heads up.
We are hiring. We want people with either backend J2EE and EJB expertise, or front-end expertise in Struts 2. We love developers who know hot work remotely. Drop me a line on mohammad@patientsknowbest.com.
I am looking for a senior level developer who knows either flex or java. The work is all remote and is for a major video game company, fun stuff! Email is in my profile.
hm, i worked at a major video game company (albeit i'm not proud to say i worked for THQ) building server tech for an MMO.
it was kinda weird that they gave me the freedom to basically build all the really important shit (ie: i got to pretty much lay the foundation and designed a bunch of distributed systems and algorithms as i went a long) despite me being the most junior member of the team, but it was all java stuff, plus i grew up doing flash/flex work.
i have a portfolio up at http://www.lzimm.com, not sure if i'm senior enough for you, but thought i'd throw that out there just in case :)
"We were tasked with turning one of the top rated strategy games of all time into one of the world's flagship tests of a new set of economics." The task itself sounds pretty cool -- kinda off topic, but could you describe it a little more? (I've been interested in virtual world economies for a bit.)
Hey dude, sorry, almost missed your reply, but thanks for the comment :)
Anyways, I'm kinda stuck on what I can tell you.
I basically built a bit of infrastructure shit that let us build all the pricing and billing logic at scale. So my role was more "low level" than what went on with the actual transaction processing, which I think was pretty typical. That said though, I'm sure that's not your question, which is more resolved around the economics at large, so even though I'm probably not supposed to talk about this, I don't really care:
- the entire gaming industry is struggling to make money in new ways (ie: piracy blah blah blah).
- one way to do it is subscriptions (ala WoW), but i think most the big publishers are finding that its pretty hard to actually do that successfully (WoW is a pretty rare phenomenon)
- the other big way to do that (online, at least) is the whole free-to-play thing, where you make money by letting people buy virtual goods and crap (ala all the facebook crap)
- the thing is, when you get into games that people take seriously, you have to be careful about the goods you let people buy, because all of that shit can really change game mechanics, so you have to either: restrict yourself to selling things that don't mean anything, like avatars and crap; be very careful that if you do sell items that affect gameplay, not to build strange new equilibria, or more importantly, prematurely alienate players before you get to those equilibria in the first place; or (taking the approach that we were taking.. i think anyways, i got pretty fed up at this point because it seemed like they kept focussing on incredibly moot details), make it so that you can't buy an advantage that you can't get by just playing the game (ie: only letting people buy items that you can get through random item drops that reward gameplay as opposed to debits from your bank account)
i have no idea why i did that in bullet points.
furthermore, i have an incredibly bad sense of grammar right now, so i'm not sure if that even made any sense. drop me an email if you wanna chat more :)
--
edit: uhhg, i have to admit, this reply seems terribly uninsightful, sorry :(
the sponsor of the ubuntu linux distribution, canonical, hires people from all around the world (70% of employees working remotely): http://webapps.ubuntu.com/employment/
No one hiring because they cannot switch their minds from corporate culture to the open source one.
Look at freebsd, apache *, webkit, and thousands other projects - they're growing up by the effort of hundreds of remote commiters, and managed somehow to follow the architecture agreements and the design decisions.
The idea is very clear - you cannot pay people on 'per hour' or even 'per line' basis - it works only for a full-time jobs where people are bounded by contracts, NDA, and other papers.
In contrast, in the open source world, people bound by idea, desire and the common effort, see the nginx project as an example.
But it is possible to pay for accomplished goals or milestones. Of course, you need to define the basic rules before - coding style, unit-tests requirements and so on.
So, if you like to hire people remote people, you need two things - idea and trust. Set up trac or code.google.com, write your ideas and requirements and pay for closed tickets/issues.
Update: To anonymous coward down-voters: It is better for everyone (even for you) to share your opinions instead of simply click the button. =)
You were downvoted because your response is off topic. Beyond that, remoting does work for proprietary software (see Stackoverflow), so your argument is shaky at best.
The reason the other downvoters didn't respond was that there's no need to pursue this thread of communication further, as it does not really relate. It's cowardice in the same way not fighting the guy who cuts you off in traffic is cowardice.
And I don't intend to turn this into any kind of debate or anything. Just my two cents on why you got downvoted.
PS: someone said something insightful, but for some reason deleted it, along the lines of "this will pinpoint the problems of relying on unit tests for correctness". This is very true - one of the Interesting Problems such a project would need to solve is a set of tools to let users quickly design useful unit tests. I'm in no way delusional about automated tests not being able to prove correctness. But I'm not convinced mathematical correctness is all that often necessary, nor that this is a problem without a good-enough solution.