Expensify Hiring a .NET Programmer! Seriously!
Recall a certain blog post about Expensify and .NET? Odds are you stopped reading about five paragraphs in, and possibly missed how ”.NET on your resume isn’t an instant showstopper” only that it will “raise questions during the phone screen”. Similarly, you might have missed that .NET is the “only choice” for Windows Phone 7 development. Well at risk of dredging up old grievances, I’m happy to announce:
Expensify is Hiring a .NET Programmer!
(Windows Phone coders please apply)
As for what we’re building, it’s no secret: we’ve got a cross-platform mobile layer that needs porting to WP7. It currently works on Android and BlackBerry, and we’re about to launch an iPhone version. We’re thinking of open-sourcing it if there’s adequate interest; leave a comment below if that appeals to you. Either way please check out our Elance post for complete details, or just read on:
Port Expensify cross-platform layer to Windows Phone 7
Hello! Expensify has apps for iPhone, Android, BlackBerry, and webOS. A little known fact is that we built our own cross-platform layer, such that we have “write once run everywhere” on these platforms — using native controls. Your mission, should you choose to accept it, is to port this platform to Windows Phone 7.
I somewhat famously blogged about how much I like .NET for Windows Phone, so I’m very excited to start on this project!
It works like this on all other platforms, so we need you to build the WP7 equivalent:
- We instantiate a JavaScript interpreter. This is *not* an embedded browser — on Android and BlackBerry we use Rhino, and on iPhone we use JavaScriptCore. I don’t know what is the best JS interpreter to use on WP7, so it’s up to you to pick it.
- That interpreter loads our cross-platform application logic, written in JavaScript. (This code is currently packaged with the app itself, though could conceivably be downloaded at runtime.)
- The JavaScript calls out to the native wrapper, instructing it to do things like create and position controls, take pictures using the camera, make AJAX calls, get GPS coordinates, and upload photos to our server. We’ll provide you with the JS application code, but you’ll be expected to actually implement all of the JavaScript callback functions.
- All JavaScript code executes in a single thread. So UI events — even if they happen on a different thread (and I’m not sure they do, I’m just saying *if* they do) — should be passed to the JS thread for processing by JS.
- Similarly, most of the JS functions are “blocking”. When the JavaScript asks for a particular UI control to be created, you needn’t (and shouldn’t) return until it’s complete.
- However, some JS functions are “non-blocking”, namely network calls, camera actions, and GPS queries. These should return immediately and be processed in another thread (or even by kicking off an external app and waiting for a response). When they complete, like UI events, the callback should come from the one single JS thread.
- Persistent storage is currently very simple, using flat files on the file system. (Typically writing and reading JSON files.)
We are looking for a long-term contract, ideally with the opportunity to hire on-site in SF if all goes well. (Remote hiring or just remote long-term contract is also fine.) Accordingly, we prefer individuals over teams — especially individuals who like what’s written here: https://www.expensify.com/jobs/need I should also mention that if you’d like to skip the contract and go immediately into hiring talks, that’s fantastic too.
This is a big project, so I’d recommend we split it up as follows:
1) Develop proof of concept. It is a standalone app executing in the emulator that instantiates a JS engine that loads a “hello world” file, which calls a single “alert” function to pop open an alert box. For simplicity, please include a “fixed bid” for this first deliverable, along with an hourly rate that we’ll switch to for future milestones.
2) With proof of concept in hand, flesh out the remaining UI controls. It includes what you’d expect — text, number, date picker, checkboxes, images, etc. A complete specification will be provided; if you prefer we can also handle this second milestone as a fixed bid.
3) Add networking and camera. Historically this is the part that gets hard, as for some reason HTTPS support on every single other platform has been dicey — especially when uploading binary images. This was true for iPhone, Android, BlackBerry, and webOS, so I expect it’ll be true for WP7 as well. Accordingly, I suggest we switch to an hourly rate for this.
4) Release to the Windows Marketplace for Mobile and interface directly with uses to diagnose and resolve issues experienced in the field.
How does this sound? Please let me know, I look forward to talking soon!
-david
Founder and CEO of Expensify
Anyway, I look forward to hearing your cogent, well-considered comments below. Thanks!
[...] Expensify Hiring a .NET Programmer! Seriously! [...]
CEO Friday: Why we don’t hire .NET programmers « Expensify Blog
August 30, 2011 at 8:42 pm
Hire another programmer David? Why? I would think one of your squirell eating, wolf-man coders could handle the trivial task of porting your app to Win Mobile 7. After all, the .NET tools just crank out 1.6 oz burgers that anyone can make, correct? So, you could hire a short order cook from the local truck stop, give him a “learn .NET in 10 mins” book and VS 2010 express, and crank out expensifry.NET right? Or, gasp, might it take some actual skill?
dan
September 19, 2011 at 6:57 am
This job posting is the most delicious piece of irony. Thank you.
wonder
October 8, 2011 at 7:19 am
prototype … done
http://codecube.net/2011/10/javascript-engine-for-windows-phone/
Joel Martinez (@joelmartinez)
October 12, 2011 at 8:44 pm
That’s really awesome! Might you be interested in doing it on more than a casual basis… https://expensify.com/jobs
David Barrett
October 13, 2011 at 12:19 am
Seriously, you insult every .NET developer out there saying why you don’t hire .NET developers and a few months later play it down saying “well I mentioned that it’s the only option on WP7 and that it’s not an instant showstopper you just have to defend your choice of tools”. I agree with the prior comment. Get one of your squirrel hunting uber coders to do it…after all you just have to use the magic .NET “language” to stamp it out for you.
All jokes aside, the .NET blogo/twittersphere is a pretty closely knit community and your post got picked up by Scott Hanselman who is read by practically every .NET developer who cares about professional development (i.e. the non-burger flippers) and I can’t imagine one who wasn’t offended by your post. So what you’ve got left are the burger flippers of the .NET world to try to figure out how to get the machine to work how you want it to. Too bad it looked like an interesting project. Good luck with that though
Mike Brown (@browniepoints)
October 17, 2011 at 4:47 pm
Alas, the squirrel-hunting team was busy. So many squirrels, so little time!
David Barrett
October 21, 2011 at 10:20 pm
[...] of course, thanks to our cross-platform mobile library, all the good stuff from the Android and BlackBerry [...]
Expenses, Mileage & Receipts In A Windows Phone App! « Expensify Blog
October 25, 2011 at 3:13 am
First thing is many thanks to the author because very helpful information for Net Development really great.
ASP.Net is a scripting language and web application framework. ASP.Net set for Active Server Pages.Net and is developed by Microsoft.
Net Development
November 8, 2011 at 2:01 am
Very interesting post. I like to share this post with my friends and book mark this interesting page. Keep it up. useful for .Net development
aidenwilliams
January 3, 2012 at 11:21 pm
Hello Expensify,
I goggled “How much do .NET programmers get paid per line” (because I was interested after a two day weekend of coding ~800 lines of C# and ASP.NET) and I ran into this blog. I about threw my hands up in the air! I was on your blog post about .NET coders and at the top, I saw that you said “Expensify Hiring a .NET Programmer! Seriously!”
I decided I would keep on reading after seeing, on Goggle, that .NET coding was like working in a McDonalds kitchen. After a few paragraphs in, after you bashed .NET programming for just pooping out cookie cuts of perfect websites/applications, I decided to see why the hell you would be hiring a .NET programmer when you have ones that “cook squirrels over a fire with sharp sticks.” All I could say/think was “How ironic.”
Ryan F
Ryan F
February 12, 2012 at 11:51 am
@ryan – Agreed, it is pretty ironic. And we’ve even added a bit more .NET to our stack since. So it’s creeping in there, slowly… Sometimes it’s just the right tool for the job.
David Barrett
February 13, 2012 at 12:51 pm
Rumor has it the Expensifry programmers eat squirrells because that’s all they can afford.
I kid, I kid…
dan
February 14, 2012 at 7:05 am
@dan – Haha. We have 99 problems, but salaries aren’t one.
David Barrett
February 14, 2012 at 11:12 am
[...] drama comes to a close last month, when Expensify publicly began searching for a .NET developer. They definitely acknowledged the hilarity of them looking for a .NET guy after bashing .NET so [...]
.NET Developers – Burger Flippers? | Boston Web Development
March 25, 2012 at 3:41 pm
That rant on .NET programmers followed up with a job posting is a perfect example of what my grandpa used to always say: “Keep your words soft and sweet because someday you might have to eat them.” Best of luck to you.
Chris M
June 18, 2012 at 7:46 am
Most .NET languages, used with care and interest, will provide you with more robust and flexible software than pretty much any of the “hard-core” languages. You can switch from a 1.6oz burger to 1.7, or even to 1.71 and back again, while the food scientist is still trying to figure out why his last formula alteration changed his “meat” flavor to “cow manure”.
The man who spends 4x the time accomplishing half as much because he won’t use higher level languages (with amazing standard libraries) is not a person I would want on my team–especially at a start-up. Adaptability and time to market are simply too critical, and consistently failing to use the best tools available because of a personal fetish is not a valuable quality.
If you see someone without .NET et al on their resume, you should be asking, “Why not?” Why haven’t they ever, in the history of their career, had the good sense to put these fantastic tools to good use? How is it that they have never chosen to sell ten times the 1.6 oz burgers for double the profit of 1.7 oz? Is that a person you should really be hiring? How will their biases impact -your- time to market and adaptability, even outside of the context of programming?
Dan
June 22, 2012 at 10:27 pm
(deadpan) I don’t see any irony there. You’ve got a product, after it succeeds you port it to minor platforms to solidify your market. And yes, as big as the whole .NET market is, Windows Phone is minor, and I don’t really see any good reason why it can’t stay that way. Oh, and to all the .NET hotshots who got hot under the collar: either David is going to deservedly crash and burn, or he wrote that post in full control of his sense of humor, an essential quality for a startup. IOW, YHBT HAND.
another steve
October 5, 2012 at 1:34 am
It’s going to be ending of mine day, but before finish I am reading this great post to improve my experience.
Ehsan notar
October 24, 2012 at 11:17 am
Wow this was an interesting read – your famous post about your opinion on .NET, and now this one with the turn of events.
The McD analogy was interesting, I do agree that Microsoft provided a cozy environment which automates pretty much everything. But that does not mean it hinders the programmer’s creativity, I don’t know how you got that idea, that automation breaks the creative process somehow.
I personally know coders who write extremely efficient, well written and jaw-dropping code in .NET, and I can guarantee you they make burgers in shapes that you don’t even imagine as possible.
I have equal respect for brilliant coders, regardless of the language they use. I’m sure you agree that rotten tomatoes can be found in every garden, not only .NET.
I wish you find a versatile .NET developer for your position, that can create burgers of all sizes.
Andrei
January 2, 2013 at 5:00 pm
The tools used shouldn’t replace the knowledge that drives their use. However, if you did your CS degree and only learned to program using C++ the program probably wasn’t very good, but in engineering you can do the whole thing with well..
Lamar Hays
February 4, 2013 at 12:06 am