Developeronomics

http://www.forbes.com/sites/venkateshrao/2011/12/05/the-rise-of-developeronomics/

“At the moment, the only thing potentially more valuable than a relationship with a great developer is a relationship with a survivalist who is good with things like guns, bunkers and cabins in woods (that’s in case the apocalypse does come about in 2012, with bullets for currency). Which you think is the better bet depends on exactly how gloomy and bearish you are. I am pretty gloomy, but not yet gloomy enough to turn to survivalist capital investments.”

Great (long) read on the importance of developers in our modern age.

Startups are hard so do what you love.

I recently read Michael Arrington’s post “Startups Are Hard. So Work More, Cry Less, And Quit All The Whining” and it struck me as extremely shortsighted and even propaganda-ish. It appears I was right. The article references Jamie Zawinski’s diary, written in 1994, in which Jamie details his experience being on the early engineering team at Netscape. The diary has reads:

“I’m so fucking burnt. Existence is suffering.

We’re doomed.

I’d work on my resumé, but I don’t even have anything new to put on it yet, because we haven’t actually shipped anything.

I’m going to go home and cry myself to sleep now.”

Zawinski’s diary is a great read into what engineers have to go through sometimes in their field of work. However, Michael Arrington use of Jamie’s diary to try and promote a notion that engineers should shut up, work long hours, and burn themselves out has seriously backfired. In Zawinski’s response titled: “Watch a VC use my name to sell a con”, Zawinski writes:

“He’s trying to make the point that the only path to success in the software industry is to work insane hours, sleep under your desk, and give up your one and only youth, and if you don’t do that, you’re a pussy. He’s using my words to try and back up that thesis.

I hate this, because it’s not true, and it’s disingenuous.”

I can only say that as a software engineer myself, I know how miserable things can get at times. It’s ok to cry, it’s ok to whine, and it’s ok to work your ass off. We’re only humans after all and seriously if you’re not crying and whining because of your work, then you’re doing it wrong.

Do what you love and cry if you want to.

Software Complexity

Something fellow engineers and developers can relate to is the issue of the perception of complexity in software. Matt Gemmell wrote an interesting little piece on the subject a while back that I refer to ever so often when I find myself in the “Zone of Despair”.

 ”You have a task which starts off seeming simple, then upon further thought and exploration it becomes considerably more complex (with several nebulous unanswered questions). Then, upon still further examination, it becomes clear that the level of refinement of thought has lead to discovering once again that the problem is simpler than it seemed to be.”

http://mattgemmell.com/2010/06/11/perceived-software-complexity/

Working on iOS projects with multiple developers

The first thing I noticed once my company had more members than just me was the need to track and version our code base. To get you started, here are some things you should consider.

Version control
At both of my startups, we use git for version control. It works really well and the branch/merging/tagging system is awesome. If you’re unfamiliar with git, check out Git Immersion. One thing I should mention is that if you are working on an iOS project and using git, you will want to make sure you create a .gitignore file otherwise you’ll run into some issues when team members open your shared project. Here are some instructions on configuring your .gitignore for xcode.

Code Storage
In a distributed code environment, each member of your team has the ability to checkout  and commit new code to the project. In order to do so, you need to have the code base hosted in a central location. We use Dropbox has our repository. It’s free (up to 2GB) and it works really well. For general instructions on how to set that up, check out this stackoverflow post: git+dropbox?. You can also sign up for paid accounts on Beanstalk or Github to keep private repos at their sites. These paid services also have additional services that are not available by going the Dropbox route.

Email notifications
I can not stress enough how important it is to have email notifications on code commits. I know what you’re thinking, “I’m gonna get an email every time someone commits code?!? That’s annoying!” You’ll be surprised how beneficial this is. Not only is it useful for tracking down bugs that may have been *inadvertently* introduced but if you assign the email receiver to a group email,  everyone on your team can keep a pulse on how the project as a whole is progressing. You can always create an email filter to manage these message. Here is a neat little plugin that will allow you to send HTML style emails on every commit- https://github.com/bitboxer/git-commit-notifier

Tools
Before committing or merging any code I usually fire up gitX to review my changes. It’s also a good way to see a graphical representation of your git commit, branches, and other related info.

Disclaimer:
I know some of you may be thinking “but XCode has SVN support!”. Trust me, you will learn to love life a little more if you try out git. If SVN is working for you in XCode, great! This article is not for you.