We Live in a Mobile Device Notification Hell

Notification Hell
Notification Hell

On a hot Sunday afternoon I found myself walking around Menlo Park Mall in central NJ with my wife and kids. My phone vibrated because someone’s automatic spambot just faved a dozen of my photos on Flickr1. Bitstrips app wanted to let me know that I have new Bitstrips waiting for me. 10App demanded my attention reminding me to make a YouTube video of what my kids did today.

As we walked past Verizon store, my phone got all excited telling me about all the things I can buy there. Apple Store wanted to remind me I have my order waiting for pick-up, even though I picked it up a week ago.

Flipboard decided to notify me that a barely dressed coffee aficionado interior decorator started following me. I have hundreds of messages unread in my personal email account and dozens of LinkedIn notifications of recruiters telling me about “Urgent Java openings” that have nothing to do with my career goals.

When I got back home my iPad’s screen was filled with the same exact notifications that my iPhone told me about, as if iPad is unaware it is owned by the same person and that I already acknowledged them. To make the matters worse my MacBook’s notification screen was repeating them as well.

We live in a notification hell world of smartphones, and every year it is getting worse. Our presumably smart devices are incapable of differentiating between what is important and what is not. The social sharing apps like Facebook, Twitter, and Instagram want our constant attention. Flickr is now a spam-bot haven — any time I post a picture, any hour of the day, it is immediately favorited by the same 3 people who have millions of favorites in their photostreams.

No wonder I have no desire to buy a smart-watch2 and I keep my iPhone permanently in a “Do Not Disturb” mode. Why would I want to add a yet another device that I have on me that will constantly demand my attention ?

Buried in their smartphones

While I miss the days of simple flip-phones, I can’t deny the convenience of smart mobile devices. They allow us to work where and when we want. They allow us to get the best price for products we shop for. Yet, I would love nothing more than to stop all the meaningless blinking, beeping and flashing.

We need intelligence built into mobile push notifications. While it is possible to selectively enable or disable notifications by the app, it is simply not enough. When I see a notification I want to swipe it and say “It’s not important” and have my device learn over time and stop alerting me of it3. This learning is then propagated to all of my devices.

Once I acknowledged a notification there is no need for my other devices to tell me about it again. There is nothing stopping my MacBook, iPhone and iPad from knowing that I already read my brother’s Facebook update. They can decrement the notification counters and remove that notification from their respective screens.

There used to be a joke in the software engineering circles that a software platform reaches the end of its natural lifecycle when it becomes capable of browsing the web. In 2015 it seems that any app loses its usefulness the moment it allows social sharing and public APIs. Once social sharing is enabled and public APIs are published the app becomes a medium for spam. Consider all the outfits that let you “buy” Twitter, Instagram, Flickr or Facebook followers.

Social Media
Social Media

I used to love Flipboard and used it daily to read the news. Then one day Flipboard allowed “likes” and “follows”. Within days I went from zero followers to a few dozen followers, all of which are skinny women calling themselves “internet mavens”, “social media aficionados” and “interior decorators.” Somehow they were all interested in Big Data, international politics, and stock market investments. I uninstalled Flipboard until I read somewhere that they started allowing private profiles that one has to opt-in.

It is not complicated for social media platforms to tell who is a bot and who is not. On Flickr, for example, an account with a million favorites but only a couple hundred photos that haven’t been updated in a couple of years is a spam bot4. These platforms can impose API limits — it is simply not humanly possible for someone to have a million favorite photos on Flickr, for instance.

Vast majority of us are not doctors5, military, police or firefighters — we have no real work emergencies. Most of us do not deal with life and death situations as part of our jobs. In software engineering what we typically call emergencies are self-inflicted manufactured crises. And yet, with proliferation of smart mobile devices we are expected to be constantly in contact with our work.

We need enterprise apps on our devices to know what’s important and to learn what is not. Enterprise apps should not be constantly notifying us of “work” we would rather not be doing on our spare time. Instead, they should be reminding us of our goals and helping us succeed.


  1. https://www.flickr.com/photos/olegdulin 
  2. Why I am not getting an Apple Watch 
  3. I am thinking something along the lines of a Bayesian-network based spam filter. 
  4. It is disappointing to see some well-known photographers utilize the services of spammers. 
  5. Software Engineers Are Not Doctors 

What Every College Computer Science Freshman Should Know

The Clarkson School bridging year progrram class of 2015 graduates
In a few weeks new college freshmen will begin their classes. Some of them will choose to pursue a degree in Computer Science. Over the course of the four years in college they will be surrounded by like minded people who are at least as smart as they are and are just as interested in computers.

When they enter the job market they will compete for the same jobs with colleagues who do not have computer science degrees or any STEM degree at all. This group learned computer programming as a way to advance their careers. Anya Kamenetz of NPR writes1:

Virtually unknown just four years ago, today at least 50 of these programs have sprung up around the country and overseas. Collectively, the sector has taken in an estimated $73 million in tuition since 2011.

And the top programs say they are placing the vast majority of their graduates into jobs earning just under six figures in a rapidly expanding field — filling a need for practical, hands-on skills that traditional college programs, in many cases, don’t.

“The main portion [that attracted me] was the empowerment — being able to create something in terms of technology,” says Frausto, a slight man in a baseball cap with a mustache waxed straight out to sharp points. “That, and obtaining a trade.”

Coder boot camps are poised to get much, much bigger. This past summer, Kaplan, one of the largest education companies, acquired Dev Bootcamp, where Frausto is enrolled. These programs constitute nothing less than a new business model for for-profit vocational education. But their creators believe their greatest innovation may actually be in the realm of learning itself.

Software is so pervasive that every successful professional needs to know how to program. Whether they are an accountant using Excel, a statistician using Python, or a physicist using C, they are all writing software that solves some problem. The vast majority of software is not downloaded by consumers from an App Store, or bundled with a computer as part of the operating system. The vast majority of software solves some mind numbing business problem with no technical complexity that requires a computer science degree. In fact, the vast majority of such software is better off written by a business user who took a programming class. Patrick McKenzie writes2:

Most software is not sold in boxes, available on the Internet, or downloaded from the App Store. Most software is boring one-off applications in corporations, under-girding every imaginable facet of the global economy. It tracks expenses, it optimizes shipping costs, it assists the accounting department in preparing projections, it helps design new widgets, it prices insurance policies, it flags orders for manual review by the fraud department, etc etc. Software solves business problems. Software often solves business problems despite being soul-crushingly boring and of minimal technical complexity.

There is a mismatch3 between the expectations of the business world and those of computer science graduates. Many computer science graduates who expect to end up at Google, Facebook, or Amazon are bound to be disappointed – either because they won’t be able to, or because the actual jobs they are assigned to do will be as pragmatic as anywhere else4.

Ms. Kamenetz writes1 :

Patrick Sarnacke has hired many Dev Bootcamp and other “boot camp” graduates at ThoughtWorks. It’s a global software consultancy headquartered in Chicago, and Sarnacke is head of the associate consultant program.

“Just because someone has a four-year computer science degree doesn’t mean they’re going to be great coders in the business world,” he says. “A lot of traditional programs aren’t teaching the skills people need.”

If someone can become a marketable computer programmer in just a few weeks, why would they go through a four year computer science program that seems like is not preparing them for the real world ? What’s in it for them ? How do they differentiate themselves in the job market ?

The problem is in the definition of the term ‘coder’ and ‘programmer.’ In his visionary work Harry Braverman wrote back in the 1970s5:

A great deal of the work of programming was routine and could be delegated to cheaper employees. Thus the designation of “programmer” has by this time become somewhat ambiguous, and can be applied to expert program analysts who grasp the rationale of the systems they work on, as well as to program coders who take as their materials the pre-digested instructions for the system or subsystem and simply translate them mechanically into specialized terminology.

The training for this latter work occupies no more than a few months, and peak performance is realized within a one-to two-year period. In accordance with the logic of the capitalist division of labor, most programmers have been reduced to this level of work.5

What Braverman is warning us about is that a typical enterprise programmer or coder implements specific requirements and designs given to them. They may be constrained by the IT department in various ways with regards to which tools to use and which platforms to program for. They are likely to deal with an existing system that was built a decade or more ago, their job being to fix bugs and shoehorn new features. They must work within the constraints of strategic direction set by their management and they have little say in it. Their role in the company is under constant scrutiny and comparison with foreign outsourcing companies.

By the time today’s Computer Science freshmen enter the job market every person in the business world will be able to code a computer program. The programming languages and platforms are becoming the great equalizers of skills, allowing any business professional with a few weeks of training to configure their own enterprise apps, and write their own code in a language that makes the most sense to them6. In other words, the profession of a “programmer” as a standalone role will be gone. To become a “programmer” should not be a goal of anyone entering a Computer Science program.

The good news is that there are areas where a Computer Science background is the differentiating factor. By training, Computer Science graduates are better positioned for jobs where a STEM background is valuable3. Their ability to learn and adopt new technologies and cross-polinate ideas from others cannot be learned in a six week program.

At the top of the list of highly lucrative Computer Science opportunities is any sort of financial trading and analytics. Wall Street is continuously seeking ways to make more money, lose less, while doing it faster and more efficiently than their competitors. Wall Street quants can earn mid to upper six figure jobs and they typically come from STEM background. Many of the smaller Wall Street companies also have an atmosphere meant to attract top talent from the tech industry and many also offer services and software to outside customers. Wall Street jobs can be stressful – companies can rise and fall with technology7.

Software companies and startups are also a natural fit for a Computer Science graduate. With very few exceptions the products that they make are in some line of business. The challenge with making business software, however, is that rather than building internal enterprise apps they have to build software that can be used by many customers. That requires a scientific approach to software development, engineering discipline and abstract thinking. A six weeks course in JavaScript does not teach that.

Technology consultancies serve customers who are either not in a position to have their own technology team or who do not have the in-house expertise for a challenging project. In addition to STEM skills these jobs require ability to present ideas to decision makers. A Masters program graduate, for instance, with teaching and publishing experience, is well positioned for a succesful career at a technology consulting firm.

Finally, there has never been a better time to build a software product that a lot of customers will pay for. Whereas in the past to get an enterprise application into a company one had to get past CTOs, CIOs, CEOs, and IT directors, the cloud offers an opportunity to appeal directly to business users. A Salesforce user, for example, does not need permission from their IT department to purchase a 3rd party software that makes them more productive. Likewise, anyone using Google business apps or Microsoft Office365 can do the same. The barrier to entry has been lowered, and now anyone with an idea, a laptop, and a skillset can build a useful product that millions of people will use and pay for.


  1. Twelve Weeks to a Six Figure Job 
  2. Don’t Call Yourself a Programmer 
  3. Attracting STEM Graduates to Traditional Enterprise IT 
  4. I have a personal story of an internship at IBM back in the 1990s. I was really excited to work for IBM, but when I started my job I realized that what I was working on was a boring old internal financial data warehouse and reporting application. I was bored out of my mind for six month but I learned an important lesson: that internal financial application was as important to IBM as any of their customer facing products. 
  5. “Labor and Monopoly Capital: The Degradation of Work in the Twentieth Century” by Harry Braverman, p. 227 
  6. Look no further than SQL, various SAP products, and Salesforce 
  7. Thoughts on Wall St. Technology 

Ten Questions to Consider Before Choosing Cassandra

 

I spent several years working at a financial company in Jersey City, NJ Pavonia-Newport area. On my way to work, over lunch breaks, or otherwise any time I need to get some fresh air, I'd take my camera with me and take some pictures. These are the sights, the views, and people that I have seen and observed in that neighborhood. These are commuters, workers, residence.
Things to Consider.

1. Do you know what your queries will look like ?

In traditional SQL you design your data model to represent your business objects. Your queries can then evolve over time and can be ad-hoc. You can even create views, materialized or otherwise, to facilitate even more complex analytical queries.

Cassandra does not offer the flexibility of traditional SQL. While your data model can evolve over time and you are not tied to a hard schema, you have to design your data model around the queries you plan to run. The problem with that approach is that it is very rare for end users to say with certainty what they want. Over time their needs change and so do the queries they want to run. Changes to the storage model in Cassandra involve running massive data reloads.

2. What is your team’s skillset ?

Consider the human factor. Ability to get to the application’s data and build reports and run analytical queries is critical to developer and business user productivity. This is often overlooked but it can mean a difference between delivering features in days vs. weeks.

Not all developers are created equal. SQL is a widely accepted and simple query language that business users should be capable of learning and using. Yet, many have trouble with even the simplest SQL. Introducing a whole new mechanism for querying their data, even if it is as mockingly similar to SQL as CQL, could be a problem.

Traditional SQL databases have well established libraries and tool sets. While other platforms are supported, Java is the primary target platform for Cassandra. Cassandra itself is written in Java, and the vast majority of tools and client libraries for it are written in Java. Running and operating a Cassandra cluster requires understanding of JVM intracacies, such as garbage collection.

3. What is your anticipated amount of data ?

Consider whether the amount of data you expect to store justifies entirely new way of thinking about your data. Cassandra was conceived at the time when multi-core SSD-backed servers were expensive, and Amazon EC2 was in its infancy.

A single modern multi-core SSD-backed server running PostgreSQL or MySQL can offer a good balance of performance and query flexibility. AWS RDS is available up to 3 Terabytes. Both PostgreSQL and MySQL can easily handle tables hundreds of gigabytes in size.

4. What are your anticipated write performance requirements ?

In Cassandra, all writes are O(1) and do not require a read-before-write pattern. You write your data, it gets stored into commit log and control is returned back to your application. Eventually it is available for reads, usually very quickly.

In SQL, things are little more complex. If the tables are indexed all writes require a lookup in the index, which in most cases is a O(log(n)) operation (n is the number of unique values in the index). Over time this is going to slow down writes. The writes are equally performant as reads.

5. What is the type of data you plan on storing ?

Cassandra has some advantages over traditional SQL when it comes to storing certain types of data. Ordered sets and logs are one such case. Set-style data structures in SQL require a read-before-write (aka upsert). Logs to be analyzed at a later point using another set of tools can take advantage of Cassandra’s high write throughput.

One has to be cautious about frequently updated data in Cassandra. Compactions are un-predictable and repeatedly updating your data is going to introduce read performance penalties and increase disk storage costs.

6. What are your anticipated read performance requirements ?

Depending on the type of data you are storing, Cassandra may or may not hold advantages. Cassandra is eventually consistent, meaning that the data becomes available at some later point than when it was written. Typically it happens very quickly, but workloads where data is read almost immediately after it was written with expectation that it is exactly what was written are not appropriate for Cassandra. If that is your requirement, you need an ACID-capable database.

Any data that can be easily referred to by primary key at all times is a good fit for Cassandra. A traditional SQL database requires an index scan before it takes you to the right row. Cassandra primary key lookups are essentially O(1) operations and can work equally fast across extremely large data sets. On the other hand, secondary indices present a challenge.

7. Are you prepared for the operations costs ?

Since Cassandra is scaled by adding more nodes to the cluster operations can become quite expensive. Using an SQL database per-se doesn’t solve this problem, however. The question becomes managed cloud service vs. rolling your own cluster. On-premise there is no difference between a multi-node Cassandra cluster vs an RDBMS with multiple read replicas in terms of operations and administrative costs. On-premise vs cloud is a topic for another discussion.

Amazon RDS is a managed RDBMS service. Changing the type of server, number of cores, RAM, and storage, involves simply modifying it and letting it automatically get upgraded during the maintenance window. The backups and monitoring are automatic and it requires very little of human interaction other than using the database itself. You do not need a DBA to manage it.

There are some services out there that will manage a Cassandra cluster in the cloud for you. You can and should consider these vs. rolling your own cluster. You should also consider not using Cassandra at all and see if DynamoDB meets your needs.

8. What are your burst requirements ?

The one area where Cassandra is better than DynamoDB (or other similar services) is burst performance. Cassandra’s “0-60”, so to speak, is instantaneous. It can handle and sustain thousands of operations per second on relatively cheap hardware.

Compared to the scaling profile of DynamoDB in AWS, Cassandra has an upper hand. While DynamoDB can be autoscaled, the autoscaling action can take minutes or hours to complete. In the meantime, your users suffer. With DynamoDB you are stuck with either paying a premium for always-on capacity or you have to come up with clever ways to work around it.

A relational OLTP database may meet your requirements here, however. Even managed service like AWS RDS can handle short bursts of read/write IOPS that are over the provisioned limit and then they get gracefully throttled back.

9. Are you installing on-premise or in the cloud ?

Compared to cloud environments, your options on-premises are limited. You don’t have managed services like DynamoDB, RDS, or RedShift. Hardware and maintenance costs of a Cassandra cluster compared to a similarly sized RDBMS cluster are going to be about the same.

In the cloud environment, however, you are in a much better position to make the right decision. You have managed options like Google Big-Table, DynamoDB and RDS.

10. What are your disaster recovery requirements ?

Cassandra can play a crucial role in your design for failure because all data centers can be kept hot without the need for a master-slave failover. That type of a configuration is a lot more complex to achieve with an SQL database. SQL gives you consistency, while Cassandra gives you partition-tolerance.

Conclusion

Cassandra is constantly evolving, as are traditional databases and managed cloud services. What I see happening is convergence of functionality. There is a lot of cross pollination of ideas going on in the industry with NoSQL databases adopting some of the SQL functionality (think: Cassandra CQL and SQL) and SQL databases adopting some of the NoSQL functionality (think: PostgreSQL NoSQL features). It is important to keep a cool head and not jump on any new tech without understanding your use cases and skill sets.

On Maintaining Personal Brand as a Software Engineer

 

Photo credit: Ed Yourdon
Photo credit: Ed Yourdon

Man’s wisdom is in what he writes,

good sense at the end of his pen;

and using his pen he can climb to the height

of the scepter in the hand of his king

The Dream of the Poem: Hebrew Poetry from Muslim and Christian Spain

Moses Ben Maimon (aka Maimonides) lived over 800 years ago. With his studies and writings he influenced Jewish, Muslim and Christian thinkers of his time and his work is studied the world over even today. His work in medicine led to many modern hospitals named after him. In his time learning, writing and calligraphy were critical skills of a knowledge professional. We remember him today because of the things he wrote, and what was written by others about him.

In Maimonides’s day, it would take months or even years to send and receive a response to a single letter. That required thoughtfulness so no stroke of pen is wasted. Non-written idle talk could also get you into trouble, as spoken word is easily distorted and misunderstood. Maimonides wrote in “Tractate Avot” (aka “Eight Chapters on Ethics”) that “idle talk” falls under the Reprehensible category of speech: the talk about daily minutiae of one’s life, conducts of political leaders, or who died and who became rich.

Software engineers are defined by public information about them to a degree no other professionals are. Who we are as professionals is defined by what of our writing is discovered by others. In the day and age when such public information is easily found by anyone with a web browser, we have an opportunity and a responsibility to define and own our personal brands.

Social media can be a double-edged sword. It offers a great way to maintain connections among families, friends, and co-workers. One must take great care and ensure that “idle talk” does not make it to the public search results and any publicly discoverable information is targeted towards one single goal: building, maintaining and owning one’s personal brand.

A few years ago there was a satirical article about a New York man who was walking the streets of Manhattan utter 140-character sentences about what he was doing. He had 4 followers of which 2 were NYPD.

While there is no denying the usefulness of Facebook to maintain contact with friends and family, nobody outside of your family and close friends cares or should know about your daily happenings. Your coworkers and business associates do not need to know what your child said today or what your cat did. Facebook is the modern day equivalent of sending mail letters and postcards to your friends.

Take respectable public figures as examples of appropriate Facebook usage. I am sure that Robert Reich must have a personal Facebook profile somewhere that his friends can see. What is publicly visible, however, is his public figure page. Use the public figure page feature of Facebook to your advantage — keep your personal profile extremely private, but encourage your co-workers and business associates to follow your public page.

Twitter is similar to Facebook with obvious differences in the type of content one can put up. Keep your personal account private and maintain an active public professional account. Twitter is informal and it is ok to occasionally allow a bit of humanity to slip in — but take care not to be inflamatory.

LinkedIn is the obvious leader in professional networking. It’s article posting functionality leaves much to be desired. Nevertheless it is the defacto mechanism for keeping your professional contacts updated with your accomplishments.

Search engine presence is critical to personal branding. It takes significant long-term effort to build up and is critical to maintaining a personal brand. Facebook, Tumblr, Twitter, and LinkedIn will not allow you to maintain the same degree of control over the style and layout of your content as WordPress, TypePad or even Tumblr.

Whatever blogging platform you choose make sure you own all of your content and do not agree to transfer copyright to anyone. Do not be cheap and pay for your own hosting — ads commingled with your content contaminate your personal brand.

Particular to software engineering and technology industry there are tools like GitHub and StackOverflow that offer a tremendous opportunity to share ideas and improve personal brand. Use these tools eloquently, effectively, and wisely — employers are known to look for candidate profiles there.

For the personal brand building purposes social media cannot be avoided. One cannot underestimate the risk of a malicious group wishing to do harm to a public figure by establishing a social media account in their name and posting slander. Therefore, it is important to maintain active profiles in social media.

Tools like IFTTT can be used to cross-post references to your content across different services. Don’t overuse IFTTT and be mindful of differences in the styling across sites.

With the amount of written content we produce we have an opportunity to create thousands of pages of published content in our lifetime. When one sits down to write a social media comment or a blog post, or even an email or an instant message, one needs to treat it as a writing exercise. The style and the quality of your writing is a factor in your personal branding. The best recommended book on this subject is “Everybody Writes” by Ann Hadley.

Resources

Big Data Should Be Used To Make Ads More Relevant

"Advertising" -- Photo Credit Mathias Klang
“Advertising”
Photo Credit Mathias Klang

It is 2015 and by now advertising agencies could have figured out the best way to deliver relevant ads to viewers. They have not. Hulu is the prime illustration of this phenomenon.

We canceled our DirecTV subscription and declined to use Comcast for anything more than Internet access for over three years now. When I watch shows on Hulu I get ads that I never act on because they are so irrelevant.

The most irrelevant ad on Hulu is the one advertising Hulu Plus itself. I am already a subscriber and they should be able to tell. The second most irrelevant ad is the one telling me, repeatedly, that they got their hands on the full collection of “Seinfeld” episodes – which I am already four seasons into!

While watching Hulu it is also not uncommon for me to get advertisements for shows that are only available to cable subscribers. But I am not, and I made it clear that there is no circumstance under which we will subscribe to cable television. Shows not available on Netflix, Hulu or Amazon Prime might as well not exist. There is not going to be a conversion in response to Xfinity TV ads on Hulu from yours truly.

Hulu product advertisements leave much to be desired as well. Why advertise Microsoft products to someone who uses Apple products and Linux ?

There is so much Hulu could do to create more relevant ads for me. Hulu knows well enough who I am and what my interests are. They know my IP, they can search the Internet for my name. They can give me a way to disable irrelevant or annoying commercials.

The age of Big Data and voluntary surrender of privacy should have brought more meaningful and more relevant advertising. The knowledge the advertisers have about consumers is unprecedented. They should use it.

Social Media Detox

Photo credit: Yasmeen
Photo credit: Yasmeen

I am going on a two week vacation to celebrate our 10th wedding anniversary. One of the things I would like to accomplish is a clean up of my social media use. Another is a detox of sorts: I want to see if I can give up daily checking and participation in Facebook.

I use my personal page on Facebook for communication with close friends and family. I do not feel comfortable having coworkers on it. I keep my Personal Facebook page mostly private. I do not want a situation where things I do at work to spill into my private life, and things I do in my private life to spill into work. I don’t want to constantly wonder if something that I say to my close friends and family may touch a nerve with someone at work.

For professional networking I use Twitter, LinkedIn, github, WordPress, StackOverflow, and a professional page on Facebook. I am extremely careful with what I say in these forums and I make sure my posts are based on publicly available information. Nothing I say in that media should be construed as an opinion of or about any of my employers, past, present or future1. I voice opinions about technology, science and processes. I do not voice opinions about individuals.

With all that said, please – if you in the past followed me through my personal Facebook page and found yourself unfriended, don’t take it as an offense. It means I respect you as my professional contact and I wish for our relationship to stay professional. Please follow me using professional networking tools.

The Three Myths About JavaScript Simplicity

Pondering
There is a perception among many in the software industry that JavaScript is simpler to learn and use than, say, Java. I’ve even heard some say that JavaScript developers are easier to recruit.

While there are many myths about JavaScript that detractors cite as reasons not to use it, there are also at least as many myths propagated by advocates of this technology. These are the most common ones I’ve heard over the years.

1) JavaScript Developers are Easier to Recruit

That only holds true if you are trying to hire a 17 year old who built simple websites out of his mother’s basement. Yes, he knows JavaScript, and yes he’ll take you up on that low ball offer that no experienced developer will accept. Will you get a timely professional result ?

Lisa Eadicicco writing for Business Insider shows that average JavaScript developer salary is right up there along with C++ and Java:

  1. JavaScript – $91,461
  2. C++ – $93,502
  3. JAVA – $94,908

A cursory search of LinkedIn reveals almost 5 million people listing Java as their skill, and less than 3 million who list JavaScript as their skill. By this statistics alone, one is almost twice as likely to recruit a Java developer than they are a JavaScript developer.

2) JavaScript is Easy to Learn

By the law of Turing Equivalency most programming languages are equivalent and if you know one you can learn any other. The complexity is never in the language itself – it is in the frameworks and libraries.

I am writing this post in 2015 and JavaScript has been powering web apps for at least 20 years. One would think that by now handling HTTP and building MVC apps would be part of the platform. Yet, JavaScript leaves much to be desired.

JavaScript, for example, has multiple libraries for HTTP REST requests. In Node.js it is not uncommon to use one library on the server and a totally different one on the client. Consider the multitude of single-page app MVC frameworks – each one has a drastically different philosophy of using it.

The difference between null and undefined and between == and === as well as lack of type safety leave much to be desired. The developer has to constantly keep those nuances in mind, as if they have nothing better to do.

3) Non-Developers Can Learn to Use JavaScript

This argument usually goes along with myth #2. The only advantage JavaScript has over other languages is that the most one needs to get started writing in it is a text editor and a web browser. That is not something to be overlooked — JavaScript really is an easy language to get started in because of that.

More often than not developers will learn the business domain of their apps long before business users will learn how to program. There are languages that business users may be more comfortable writing code in — SQL comes to mind, for instance, and perhaps the data and reporting APIs can and should be built by the business analysts.

So Why JavaScript ?

The points above should not be a reason not to use JavaScript. Reality is that when it comes to building dynamic webapps and microservices there is no choice other than to use it. It is a great tool for rapid prototyping and for building backend services using platforms like AWS Lambda. Despite what I said, it is a great language and has many useful applications — but make no mistake, it is a programming language like any other.