Almost everybody who born as human will think about their partners in advance. Only the depth and frequency of thinking might vary. When I graduated and joined first company, I was thinking about a girl who is working in a technology company but not related to software. The reason behind that is, if both of us are in software, we might talk about software development always which will affect some other developments. As I switched companies and when my parents really started searching bride for me, my thought process was different. (Non Indians may not understand what is arranged marriage.Its not at all forced marriage. In our arranged marriage, couples meet twice or thrice alone to talk before they decide to marry. Mostly parents screen the girls first and arrange meetings. More details see wiki).
I was thinking about a girl who knows how software development works or minimum graduated in computer science but not working in software development / coding! Can be computer science teacher in schools or colleges, working in software administration in other industries such as banking to a level of QA in software industry. The reason behind my change was the culture of the company I was working. Most of the days, need to work or I will say need to be in office for more than 12-14 hours. A normal girl who don't know the peculiarities of software development process will have tough time understanding, why I am staying late in the office.
Finally got one who just completed Masters in computer science and offered from Infosys, one of the well known companies for software development. But fortunately or unfortunately after the marriage, the decision has changed to try in teaching field. She got it quickly in a startup engineering college. That college doesn't have computer science dept. But in the first and second years, all the other departments have CS paper. She find it cool teaching C/C++ etc...
The college was far away from where we stayed and it became difficult to travel more than one and half hours when she conceived baby. She had to quit and became house maker. All went well and we now in US obviously she is in H4 jail. Getting into teaching position seemed tough, so she thought of coming again to development. The tough question came. Which language? Which technology & Platform?
When she asked the same to me, I had no confusion on saying 'Learn Javscript'. Not just learn, master it.
The core language is always simple with functions as first class citizens. It can simply do manipulations and call methods on the objects which are passed into it during run-time. But its getting all things done and run everywhere with the help of libraries, frameworks and run-time engines.
If it is running in browser the objects passed to it are the DOM, XHR etc...If its running in server side as Node.JS the objects are http request, http response, database driver, file system object etc...If its in mobile the objects available are the sensors, phone calling and messaging system, file system inside mobile, network IO, display provider etc...finally if its running as DSL, the objects passed are the domain objects such as list of customers, employees which are specific to the business.
Why we need to be masters?
But now as we seen earlier things are different. Internet connections became faster. People foreseen the change and they put effort in standardizing the browsers, improved the language specs and engine. Finally framework development started which ensured the compatibility among browsers. We got confidence that our code will work in all the browsers, if we use these frameworks such as jQuery . That enabled us to focus on the features instead of spending time on compatibility issues.
Web sites to web applications
But now things changed. The server side slowly retired from its web page generation and business logic container duties and the new role is 'web service' or data provider. If the server just keep the data we can develop application in any client device provided there is a constant connectivity to the server and secure communication mechanism. Connectivity now is not at all a problem. Security is enforced via secure communication protocols such as TLS.
Of course if we are into system side programming using assembly,c or c++ or go languages, it may be slightly different.