This morning I was thinking about software development as I was waiting for a plumber to come and fix something in my house. As with a lot of home repairs, I was wondering if I could have fixed the problem myself. Anyone can get a propane torch and a book on how to fix plumbing, right? But this was a more complex problem involving a well pump, and the guy who came knows everything there is to know about wells and pumps. I really appreciated his knowledge and experience. Even if I could have fixed it myself, I would have wondered if I did it correctly.
Software development has changed a lot since I entered the field, and there are a lot of parallels between writing software and the building trades. Back when I graduated from college, software was a lot simpler. We were living in rough huts, with no plumbing (networking), and no paint (GUIs). There were not that many languages being used, and no frameworks, so any developer could work on pretty much anything.
These days there is a lot more specialization. A particular developer may work on UI (painter), web (carpenter), networking (plumber), operating systems (mason), middleware (framer), etc. This diversity has driven an explosion in new languages, frameworks, and tools. While most languages are easy to learn, tools and frameworks are often more challenging. Employers now look for very specific skills, and won't take just any smart programmer.
Mobile software is the newest area of software development, and if you want good results, it is worth finding someone who specializes in it. The issues that arise in mobile apps are sometimes different than with web apps or other software, and a developer with experience will know how to deal with them. You can always train people, but this takes time and some lessons are learned only through experience. Anyone can build your house, but if you want it done well, you should find the right builder for the job.