Let's work on your great software idea! Email us at josh@javajosh.com. Please include a brief description of the software project.
Apps
The applications I write can run on the desktop, on the web, on your iPhone, iPad, or Android device. From the client perspective (that would be your perspective) the process involves a lot of talking, diagrams, walk-throughs, and using of the software. From the coder perspective (that would be my perspective), writing custom software applications is a fairly complex task, and every programmer I've met approaches the problem of managing project execution differently. The way I do it is with an iterative process where I create something quickly initially. It will suck. You look at it and give me feedback, and I will modify it to be a little better, and we repeat this until it's done, then we release it. See, simple!
'Making the right thing' is often a surprisingly organic process that involves a lot of communication between developer, customer, and user. People are very visual, and usually the conversation only really starts when people have a first version in front of them. So I aim to get that in front of them as soon as possible, usually about a week.
Technical notes
HTML, CSS, and JavaScript, or HTML for short, is the future of application development. It runs everywhere, it's open, and it's powerful. No other environment comes close. The kind of functional dynamic programming the web requires is a Good Thing ™ and extending this into data-storage, using so-called NoSQL storage rather than relational databases, is also the way of the future, at least for the majority of applications. Data structures change in time, and relational databases (and the applications built on them) always seem to be taken by surprise by this fact.
Data is the key, the heart, of any application, and if I can't see the data flow then I don't understand it. Diagramming, visualizing, screen-shots, are critical parts of getting the job done, but usually I'm very informal about it and tend to lean on collaboration diagrams that depict example objects interacting more than anything. My JavaScript code is almost always functional rather than object-oriented: you'll rarely see 'this' or 'new' in my code.