There are, of course, more comprehensive boot camps, such as, well, Dev Bootcamp, in which a select group of students get an intensive immersion in a full range of development topics over a nine-week period. But the length of the programs, the limited number of available slots, and $12,000+ price tags make them impractical for the small-business DIYer.
It’s a good idea to allow at least a month or so of pure training time before expecting any productivity out of your budding programmer. At this point, you still won’t have a “real” developer on your hands. Instead, you’ll have a somewhat overwhelmed person with some basic programming skills and a rough idea of how an app comes together.
Plan your app
After you’ve got several weeks of training under your belt, you should have enough working knowledge of a language and framework to begin planning your app. Based on what you’ve learned in your classes, books, and practice tutorials, you can start to map out the features you need, the underlying data structure, and the interface design.
Development methodology is a whole subject unto itself, and many professional developers are fanatical about it. (Ask PCWorld’s CTO about Agile, for instance, and be prepared for an earful.) And not for no reason, either: Bad development practices can ruin a product. The process laid out in this article is largely influenced by the Agile Manifesto, which focused on producing working software quickly, while allowing opportunity for improvement and alteration through ongoing iteration. But as you start out on your path of DIY programming, don’t obsess about methodology too much. Just focus on building a useful app that meets your own needs.
Planning your app should be a simple process, and need not get in the way of actually creating something. At the outset, define clearly what it is you want your app to do. Keep it concise and functional. Think “Customers will be able to schedule service appointments from their phone” over “Streamline customer interactions through self-service features.” The first example describes an action that you can create in your code. The second describes an abstract concept that offers no clear direction.
You may, of course, want your app to do more than one thing. So capture all of the things you want it to do, from a specific user’s perspective, in a single list. Be sure to focus on the actual result of the action, and don’t get bogged down in interface considerations at this point. Don’t get into details like tapping or clicking buttons, boxes, or forms. The phrase “tap a button to schedule an appointment” is needlessly restrictive, and closes your mind to opportunities. It doesn’t belong on this list.
Once you’ve got your list, narrow it down. If you’ve got a list of 10 features, try reducing it to four or five that are absolutely essential, and save the rest for future iterations. The fewer features you try to build right out of the gate, the sooner you’ll have a working app.
At this point, you can also start thinking about design principles. Draw some sketches of your app’s screens. Consider the flow of a user’s experience through these screens. What has to be on the opening screen for users to understand your app? After someone does something on that home screen, what happens next? You can map out the process with a flow chart, and make simple wireframe mockups to guide your design process. Tools like LucidChart and Proto.io make it easy to generate useful mock-ups and diagrams quickly.
Once you have a basic plan, you can start thinking about how to turn it into working software. Expect to spend several weeks researching a range of options for building the app in a way that accomplishes your goals, and then several weeks more for actually coding a basic, feature-limited version of the app. This is sometimes called an MVP, or minimum viable product, and it represents a starting point from which you can continue to iterate the app based on what’s working and what’s not.
As your app begins to take shape, you may want to bring in some outside dev talent on a limited basis to sanity-check your work, answer questions that arise during the process, and offer solutions to nagging problems. Many freelance developers are happy to offer their insights for an hourly rate, and you can benefit from their expertise without hiring them for a complete project.
To be sure, software development isn’t easy. If it were, everyone would do it. But if you approach it with realistic ambitions and manage your training, research, and planning processes effectively, the DIY approach can pay off in unexpected ways as you continue to improve your app, build your skills, and tackle new projects.