Stanford

December 9th, 2011

I’m taking this “iPad and iPhone Application Development” class done by Paul Hegarty of Stanford. It is available through iTunes U:

http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=473757255

The class is extremely well done. The classes are well paced, packed with information. I particularly like the mix of lectures with slides followed by demos in code. I highly recommend this to anyone learning to develop for iOS.

Cocoaconf

December 6th, 2011

I had the opportunity to addend Cocoaconf this past weekend in Raleigh. It was a lot of fun being around a bunch of Mac and iOS geeks. I learned a lot about programming for iOS and got to meet some really interesting people.

10 Things

November 7th, 2011

My friend Matt recently posted some thoughts about “What Every *Good* Developer Should Know.” I like his list, but my list is very different so I thought I’d write it down as well.

Here is my list of things that I think Software Developers should know:

0. How to Communicate. Having good written and verbal communication skills is very important. I think this is the only point in common between my list and Matt’s. But I put it first because if someone can’t communicate they aren’t getting past the interview process. Beyond grammar and spelling, can the developer structure their thoughts in a way that makes sense to someone else?
1. How to Learn. Does the developer show that they are continuously learning? Do they love what they do? Do they care? If so they will naturally be learning and developing their skills. If not, they will fall behind.
2. OO Design. I don’t just mean that the developer knows an OO language or that they can define “Encapsulation.” Do they understand why it is important? Will their code be easy to understand and maintain or will it look like procedural code wrapped in a class? (Object Oriented Design Heuristics.)
3. How a computer works. One of my most helpful classes in College was an Assembly Language class. Even though I never again used Assembly Language directly, it gave me a mental model for how the computer works that has been very beneficial in many ways. How could a developer work without that mental model?
4. The Business Domain. A developer should work to understand the business of their company or clients. The depth of knowledge might vary based on role in the company. But a developer should pursue every opportunity to be part of the business.
5. SQL. Being able to construct good SQL statements is hugely useful in many environments. Even if the developer doesn’t have DBA skills, they should still be able to function comfortably in SQL.
6. How to Manage Their Own Projects. I’m not saying that all developers should be project managers. Just that they should manage their own time well, be able to estimate work, plan, create meaningful status reports on their own work, etc. (Software Estimation: Demystifying the Black Art.)
7. Programming Languages. A good developer should know several different programming languages. A developer who has only worked in one environment will tend to be one-dimensional and will see everything through the lens of that language.
8. Design Patterns. Knowledge of design patterns helps a developer write better code, but it also helps him communicate with other developers.
9. Usability. I’m not thinking here about the mechanics of user interface, but rather about creating a user interface that does not get in the user’s way. There are a number of really good resources about Interaction Design and Usability and there are many developers who have read none of them.

That’s my list.

Take The Interview

October 5th, 2011

Here’s a good idea:

http://www.taketheinterview.com/

This could be really helpful in the hiring process. Looking forward to trying it out.

Make Your iPad a Laptop???

September 24th, 2011

I saw this article just now. The first thought that popped into my head was, “Why would you want to make an iPad a laptop?” Part of what makes an iPad great is that it IS NOT a laptop. But then again I have both an iPad and a Laptop. When I am working I will use my laptop. I am writing this blog post sitting at my desk, using a full keyboard and large screen attached to my laptop. When I want to sit on the couch and read or just check email, I use my iPad. But for some people, I suspect that an iPad would be everything they need. If your only or your primary computer happens to be an iPad, I guess it would make sense to be able to set it up like an laptop for creating documents and the like. It is funny that Microsoft spent years trying to turn a laptop into a tablet. Now, vendors are coming up with creative ways to turn an iPad into a laptop.

Trello

September 22nd, 2011

For the past week I have been using Trello for some lightweight project management tasks. I love how easy it is to use. And the user interface is a great example of what Web 2.0 is all about.

http://Trello.com

In 2,503rd Place

September 16th, 2011

MDeverywhere (the company I work for) made the Inc 500/5000 list of fastest growing companies this year. Pretty cool. There are growing pains associated with being part of a company that is growing quickly. But that is still better than the alternative.

http://www.inc.com/inc5000/profile/mdeverywhere

Rapid Change

August 8th, 2011

I had a conversation with a friend over the weekend. We talked about “rate of change” among other things. As software developers, do we have a greater rate of change than other people with different careers? We considered how some fields (medicine, genetics, etc.) seem to changes rapidly as well. With software, there is no physical medium anymore. Software can be updated monthly, weekly or even daily. And it gets distributed over the internet instantly. Does any other worker have tools that change that quickly? I can’t think of one.

The challenge is to constantly stay informed. Learning needs to be continuous and it can be overwhelming. But it can also be exciting. And as developers, we can see our work evolving right before our eyes. But we have a great responsibility to deliver software responsibly. Our users are subject to the changes we introduce to their lives. We should do so with care and with sensitivity. We should be all to aware of the cost of rapid change.

Future of IT

July 26th, 2011

Interesting thoughts about the future of IT:

http://www.techrepublic.com/blog/hiner/the-future-of-it-will-be-reduced-to-three-kinds-of-jobs/8717?tag=nl.e101

Support for Mobile Web Apps

July 22nd, 2011

Troubleshooting software problems can be hard to do under the best of circumstances. So people have come up with some tools to help. One of the ones my company uses is ‘Glance’. It allows for one person to see what another person sees on their screen and possibly control their computer as well . This works for people with a Mac or PC. But it doesn’t work on mobile phones or tablets. I guess in theory it could work, but in the case of iProducts, I doubt it ever will. And with all the variations in devices and operating systems on smart phones, supporting a mobile web application can prove tricky. In my experience over the last year with a mobile web app I built, it is not the bugs in the application themselves that are a problem. It is the the user’s misunderstanding of how to use their device that can be nearly impossible to support remotely.