Expensify Hiring a .NET Programmer! Seriously!

David Barrett —  August 30, 2011 — 25 Comments

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!

David Barrett

Posts

Founder of Expensify, destroyer of expense reports, and savior to frustrated employees worldwide.

25 responses to Expensify Hiring a .NET Programmer! Seriously!

  1. 

    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?

  2. 

    This job posting is the most delicious piece of irony. Thank you.

  3. 

    That’s really awesome! Might you be interested in doing it on more than a casual basis… https://expensify.com/jobs

  4. 

    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

  5. 

    Alas, the squirrel-hunting team was busy. So many squirrels, so little time!

  6. 
    Net Development November 8, 2011 at 2:01 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.

  7. 

    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

  8. 

    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

  9. 

    @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.

  10. 

    Rumor has it the Expensifry programmers eat squirrells because that’s all they can afford. 🙂 I kid, I kid…

  11. 

    @dan – Haha. We have 99 problems, but salaries aren’t one.

  12. 

    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.

  13. 

    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?

  14. 

    (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.

  15. 

    It’s going to be ending of mine day, but before finish I am reading this great post to improve my experience.

  16. 

    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.

  17. 

    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..

  18. 

    I just read you old post about .Net and I feel i can relate, as a former .Net coder. Story: Started C, then to Java, and then to .Net, (It just happened). Did that for a couple of years, and it was nice and easy, but there were somethin lackin.. BUT after returning to Java and C, and also having picked up some Assembler, and frontend stuff like Backbone,js, and responsive stuff, I feel in reflection that .Net made me lazy. Yes, i learned Linq and Forms and bla, bla., bla It didn’t matter. It made me lazy as a programmer. Oh, and if you’re using .Net your bound to windows, which was a negative for me, Linux and MacUser as I prefer.(No Monocrap thank you). I’m sure theres very skillfull .Net programmers out there, and I’m sure that the platform has evolved a lot (I stopped when the release version 3). It wasn’t for me and I’d rather not go back to that.

  19. 

    I find it funny that many of the people trying to bash Mr. Barrett have quite a few spelling errors in their posts. Is it because intellisense isn’t there to bail them out? 😛

  20. 

    Most MicroSquish programmers we’ve encountered are not computer scientists and most of them don’t know s*** about technology outside of their MicroSlop box. They are exactly what MicroSquish wants them to be: Dot Net programmers. They don’t do anything else because they don’t know anything else.

  21. 

    I know this .Net thread is old, but I came to this blog via a random search for something else, and wow, I have to say I am impressed. I never really understood why companies hire programmers who use advanced tools. If I’m hiring someone to pave my driveway, I want the team that is using shovels and wheelbarrows, not backhoes and cement mixers — because the plain fact is that backhoes can only do 1m or 2m widths, they could never do 1.7m width. Tools get in the way, and I am always a little suspect of those who use them.

    A recent personal example: when it came time to adding a room to my house, I rejected most contractors as soon as I found out how much they relied on table saws and hydraulic nailers. Show me a hammer and a hand saw if you want to prove to me you can build something special for me. And here’s the kicker: most used drywall instead of plaster. DRYWALL! How can you build to a flexible architecture using rectangular pre-formed sheets? It reflects on the contractor’s judgment that they would even try. I did finally find a contractor that met my needs, and in less than 2.5 years I had my beautiful new custom room.

    So kudos to you and your resistance to .Net developers! Compilers and rich core libraries are for chumps who don’t want to get their hands dirty. If it’s already been done and tested, why use it? Real developers reinvent!

    😉

Trackbacks and Pingbacks:

  1. CEO Friday: Why we don’t hire .NET programmers « Expensify Blog - August 30, 2011

    […] Expensify Hiring a .NET Programmer! Seriously! […]

  2. Expenses, Mileage & Receipts In A Windows Phone App! « Expensify Blog - October 25, 2011

    […] of course, thanks to our cross-platform mobile library, all the good stuff from the Android and BlackBerry […]

  3. .NET Developers – Burger Flippers? | Boston Web Development - March 25, 2012

    […] 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 […]

Have something to say? Share your thoughts with us!

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s