Should You learn desktop development or web development?

(Copied from my Quora Answer, not properly formated)

The line splitting desktop and web development is very narrow now a days. Gone are the days when only Perl or PHP were used for web development, compiled languages like C, C++ were used for desktop development.

But now everything changed at once. Now a days there are very successful desktop applications like text-editors, Git-GUIs, even Applications which control real robots are written in languages like JavaScript e.g., Jobo SDK is based on Electron and NodeJs. Isn’t it amazing?

On the other side languages like C, C++, Go, and other static/compiled languages are heavily used in web development and languages like Erlang which were once considered to be used only in Telephoney are now used for creating back-ends of highly concurrent and resilient web applications.

Now a days every modern language is used in multiple places.
For example C# is used in .net core for creating high performance cross-platform, back-ends for web applications, and C# is also used in Xamarin for creating cross-platform mobile applications (for iOS, Android, and Windows Phone).
Ruby is used for the back-ends for web applications in form of many of its frameworks including Rails, Sinatra, Roda and others, and Ruby is also used as RubyMotion for creating cross platform mobile applications (similar to Xamarin).
JavaScript is used in the browser (the only language natively supported in the browser, the beast), It’s also used for creating mobile web applications using Ionic, Cordova, React-native, NativeScript. JavaScript is also used at the server in the form of NodeJs.
Python is used for creating back-ends for web applications, and it can also be used for creating GUIs. Python is also used for scripting inside GIMP, MaYa and Blender. Python can also be used for creating games using PyGame.

So now a days if you know one modern language the right way you can do almost anything with that language.

Above was point # 1. Now the point # 2;
Now a days you don’t learn a language, but you learn a paradigm. If you learn PHP, learning Python or Ruby will be very easy, because all three of them are imperative, object-oriented, dynamic languages.

If you learn Elixir, learning Clojure, Elm, or Haskell won’t be that hard, because all of these languages are Functional, although Haskell and Elm are statically typed with Type inference while Elixir and Clojure are dynamically typed (I haven’t used Clojure myself, Google said it’s dynamically typed).

Above I used the word type inference which means that language have the ability to sometimes guess the type of an expression. Now a days a lot of statically typed languages have this ability. Two of my favorites are Go and Rust with this ability.
Talking of Go and Rust, both are imperative, statically typed and compiled languages, and so is C. So if you know C , you’ll easily pick any of Go or Rust.

So chose any language, or any platform, open your text editor and start practicing. You can later change it if you liked. This way success is more guaranteed than thinking about which language/framework/platform is better.

Thanks for A2A!

)
Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade