Everyone And Their Dog Wants An API, So You Should Probably Learn How To Build Them.
Easiest Development Environment
As much as native mobile app developers would have you believe that apps are the future, I still think that open web technologies are the key to the future. Give it a little time, and we’ll mostly be writing all of our mobile apps in HTML/JS, and deploying them in wrapper-apps to our phones. I consider this basically inevitable. Learning to develop for the web is super important. You’ll need to know it basically regardless of what main language you’re working with, because despite our best efforts, you will still end up manipulating CSS, tweaking some HTML tags, etc. That’s not going to go away any time soon I don’t think.
I keep hearing things like “programming is easy” and “everyone should code”! These are both interesting, kind of misleading statements. The actual core part of programming — actually writing code, is perhaps not that hard. Writing simple code is, relatively, simple. Many more people can, and should, probably learn to do that. Actually being a good developer is vastly different (and massively more complex).
It’s a worthy goal for people to get into development, and I love that more and more folks are, but you should also set your expectations realistically if you’ve never coded anything before. You can learn some basics pretty quickly, but you have a lot to learn before you will be fully proficient in a real development environment.
If you’re building something big-ish on the web, here’s a non-exhaustive selection of the things that are (or potentially are) relevant to that process:
- File paths
- Servers and Clients
- Web Server configuration and tuning
- RTL languages and their effects on your designs/layouts
- Internationalization, including keeping your designs flexible enough to handle variable-length text
- Search Engine Optimization, normally based on dynamic, user-input data
- Semantic markup
- Color theory
- Visual hierarchy
- Graphic design/image manipulation
- Image optimization
- Web fonts/Icon fonts
- Image sprites
- Memory management
- Performance bottlenecks
- Mobile web development (infinite screen sizes)
- Responsive Design
- Touch vs Click interaction models and considerations
- Offline considerations/handling (for “live” web apps)
- Version/Source Control (Git/SVN)
- Visual/Text Editors
- The command line (and everything that comes with it)
- Retina/HiDPI screens vs “normal” screens
Depending on the specific technology stack you end up using, there will be entire swaths of other technologies, libraries and tools involved as well.
Also, just so that you’re aware; in the 15 years I’ve been doing this, the list never gets shorter, it only gets longer.