May 24, 2017

Object Partners Tech Trends

What was asked

Recently we sent out a survey to all of our consultants to get a feel for what technologies are in use across our clients, we dug through the results of that survey to give you a glimpse into the pulse of tech development across the company.

What follows is the results of that survey and brief responses to the results of each question.

1 – The languages currently in use at our clients

Android, Bash, CSS, EC-Next, ES5, ES6, EcmaScript, Go, Go YAML, Groovy, Groovy , HTML, JSX, Java, Java6, Java8, Java8/Android, JavaScript, LESS, LUA, Objective-C, Puppet, Python, Ruby, SQL, Scala, Swift, Typescript

Android, Bash, CSS, EC-Next, ES5, ES6, EcmaScript, Go, Go YAML, Groovy, Groovy , HTML, JSX, Java, Java6, Java8, Java8/Android, JavaScript, LESS, LUA, Objective-C, Puppet, Python, Ruby, SQL, Scala, Swift, Typescript

This question is a good indicator for what is actually running in production at most of our clients.  What we see here indicates that although we have a heavy past in Java, Groovy has taken over as the JVM language of choice throughout the company and at our clients. Not surprisingly though JavaScript (not a JVM language) is now a core technology that drives many companies.  We also noticed that many of the responses indicated that people were using JavaScript ES6 or Typescript, which hints at the willingness of clients to support more recent JS engines and cross compilers which is a changing trend from what we have seen in the past.

2 – The favorite languages of our consultants

ES6, Elixir, Go, Groovy, JavaScript, Javascript, Kotlin, NodeJS, Perl, Python, R, Swift, Java 8

ES6, Elixir, Go, Groovy, JavaScript, Javascript, Kotlin, NodeJS, Perl, Python, R, Swift, Java 8

What we were going for here is to see what developers actually enjoy writing code in, not necessarily what the primarily language their current client is using.  This is good to see as clients or companies who are looking to draw in good talent will want to enable their developers to use the languages that they feel they can be the most productive in.

What we saw coming back on this question was the  indication that languages with dynamic features more often make for a more pleasant development experience.  We also found a few oldies but goodies such as Java (8), Perl and Python.  It goes to show that a language’s age doesn’t always cause it to lose its luster.

3 – Favorite tools to use when building software

 

AWS, AWS-IOT, AndroidStudio, AppCode, Artifactory, Atom, BitBucket, Browserify, Chrome, Chrome-Octotree , Chrome-WebDeveloper, CircleCI, Dash, DataGrip, Docker, Docker-Compose, Drone, Dropbox-Paper, Fugitive, Git, GitHub, Gradle, HTTPie, Hub, Hyper, Insomnia, IntelliJ, JMH, Kafka, Kubernetes, MapBox, Medis, MercuryJS, Node, Notepad++, OpenShift, Postman, Rancher, ReactJS, Serverless, Slack, SonarQube, Splunk, Spock, Spring-Boot, StandardJS, Sublime Text, Swagger, Terraform, TestFairy, Toad, Trailer, TravisCI, Tunnelblick, VI IntelliJ, VS Code, VS-Code, Vagrant, WebStorm, Webpack, Yarn, iTerm, Vim

AWS, AWS-IOT, AndroidStudio, AppCode, Artifactory, Atom, BitBucket, Browserify, Chrome, Chrome Octotree , Chrome-WebDeveloper, CircleCI, Dash, DataGrip, Docker, Docker-Compose, Drone, Dropbox-Paper, Fugitive, Git, GitHub, Gradle, HTTPie, Hub, Hyper, Insomnia, IntelliJ, JMH, Kafka, Kubernetes, MapBox, Medis, MercuryJS, Node, Notepad++, OpenShift, Postman, Rancher, ReactJS, Serverless, Slack, SonarQube, Splunk, Spock, Spring-Boot, StandardJS, Sublime Text, Swagger, Terraform, TestFairy, Toad, Trailer, TravisCI, Tunnelblick, VI IntelliJ, VS Code, VS-Code, Vagrant, WebStorm, Webpack, Yarn, iTerm, Vim

This question is good to throw out there so that other people at least have an idea of what libraries they should be looking at to save themselves some time and make for a more productive development experience.

This one had one solid outlier here:  IntelliJ.  Software engineers love IntelliJ.  If you aren’t using it, you’re definitely missing out.  It doesn’t matter if you’re writing Java, Groovy, Go, Kotlin, or JavaScript.  IntelliJ is king of IDEs right now and there’s no indication that it is going away.

Another trend we see is multiple editors in use by our consultants.  This seems to stem from IntelliJ being very helpful at many things, but sometimes it’s huge feature-set gets in the way for certain tasks.  This is where we see tools like Microsoft’s VisualStudio Code, Atom, and VIM come in to fill a gap.   These lightweight editors are great for quickly opening a file, editing it, giving you enough helpful features such as code completion, syntax highlighting and formatting and fast file navigation.

Another clear up-and-coming winner we see here is Docker.  Docker isn’t just for deployment pipelines, but has immense use as a development tool, whether it’s launching a quick data store engine, or spinning up a web management tool it’s a clear winner when it comes to productivity.

4 – What libraries to help you save time and make development more pleasant?

 

Alamofire, Angular, AssertJ, Axios, Babel, Bookshelf, Boom, Butterknife, Chai, Cobertura, Codahale-Metrics, CodeNarc, Dagger, ESLint, Ember, Firebase, Google-Guice, Gradle, Grails, Guava, Hibernate, Jackson, Knex, Knex/Bookshelf, Lodash, Lombok, Mocha, Moment, PiTest, Quartz, React, Retrofit, Sinon, Slf4J, Spock, Spring Boot, StandardJS, Supertest, Swagger, SwiftyJSON, TAP, TSLint, TapeJS, Underscore, Webpack, XO, Zipkin, apache-commons-lang, isomorphic-fetch, momentjs, prettifier

Alamofire, Angular, AssertJ, Axios, Babel, Bookshelf, Boom, Butterknife, Chai, Cobertura, Codahale-Metrics, CodeNarc, Dagger, ESLint, Ember, Firebase, Google-Guice, Gradle, Grails, Guava, Hibernate, Jackson, Knex, Knex/Bookshelf, Lodash, Lombok, Mocha, Moment, PiTest, Quartz, React, Retrofit, Sinon, Slf4J, Spock, Spring Boot, StandardJS, Supertest, Swagger, SwiftyJSON, TAP, TSLint, TapeJS, Underscore, Webpack, XO, Zipkin, apache-commons-lang, isomorphic-fetch, momentjs, prettifier

This one drops a lot of big name libraries that if you haven’t heard of them or aren’t already using them deem taking a look.  This category hides a lot of gems down in the the less popular responses such as Firebase, Guava, and CodeNarc.  These are libraries that are not always as common across clients, but have big gains when brought into use on projects.

5 – What data Storage technologies are you using at your client?

Cassandra, CoreData, CouchDB, DB2, DSE Graph, Elasticsearch, Firebase, Google-Cloud-Storage, Hadoop HDFS, LevelDB, MYSQL, MariaDB, MariaDB4j, MongoDB, MySQL, Oracle, Postgis, PostgreSQL, PouchDB, Redis, SQL-Server, SQLlite,

Cassandra, CoreData, CouchDB, DB2, DSE Graph, Elasticsearch, Firebase, Google-Cloud-Storage, Hadoop HDFS, LevelDB, MYSQL, MariaDB, MariaDB4j, MongoDB, MySQL, Oracle, Postgis, PostgreSQL, PouchDB, Redis, SQL-Server, SQLlite,

These responses show that despite what many blog posts may try to put forward, RDBMS systems are not dead yet.  There are quite a few SQL engines on this list and they don’t have any indication of going away anytime soon.  We are however seeing  quite a few NoSQL engines pop up as companion engines or supplemental data stores for key areas, such as Cassandra for highly resilient high-write throughput and Elasticsearch for it’s simple and scalable document search capabilities.  One of the little guys that has the potential to gain a bit of traction is Firebase which has seen pretty rapid adoption in the mobile arena.

 

Message Brokers for real-time data processing

Camel, IBM-MQ, Kafka, Kinesis, MQSeries, None, Oracle, RabbitMQ, SQS, ZeroMQ

Camel, IBM-MQ, Kafka, Kinesis, MQSeries, None, Oracle, RabbitMQ, SQS, ZeroMQ

This category clearly indicated that RabbitMQ is the easiest entry for clients to bring in a message queuing technology to support real-time data processing, but Kafka quickly comes into play for clients with more data on their message queues.  One interesting thing here is that there are quite a few clients that don’t use messaging queues to process real-time data either because they don’t have any experience with it, or there is not yet a business need for it.  We mostly see message brokers come into play at clients with larger micro-service deployments or at clients with multiple data centers.

 

Pain Points encountered at clients

  • Lack of CI/CD pipelines that make deployments painful
  • Old Technology (ANT, Maven, SVN, SQL Server, JBoss)
  • Company Policies that inhibit the use of good tooling (Windows, Maven, SVN, TFS)
  • Lack of transparency (Cross team communication, Pull Requests, etc…)
  • Fear of Change (often related to the above three points)
  • Disorganized documentation that is too far removed from the source of truth
  • The desire to “Roll their own” rather than use standard or open source solutions.

 

This category was difficult to visualize with a word cloud and some topics were unrelated to technology so we’ll steer away from those for now.   A common thread seen here is when companies start to fall behind on their technology stacks they find themselves in a position where they can’t migrate to CI/CD pipelines because they can’t support best practices and that position costs them time and money.  It is oftentimes difficult to see how the investment of bringing your development process up to the place where you have at least CI if not a full CD pipeline not only makes your developers happier, but it allows you to build a better product at a lower cost on shorter timelines.

The good news for these clients is that we have consultants that are experts in this area and implementing these changes is something that we are very good at.  We’ve seen very solid success stories at quite a few of our clients who have moved from slow manual build and deploy processes to full continuous integration and deployment pipelines where they can get a fully tested product to production in minutes to hours instead of days to weeks or months.

 

About the Author

Object Partners profile.
Leave a Reply

Your email address will not be published.

Related Blog Posts
Natively Compiled Java on Google App Engine
Google App Engine is a platform-as-a-service product that is marketed as a way to get your applications into the cloud without necessarily knowing all of the infrastructure bits and pieces to do so. Google App […]
Building Better Data Visualization Experiences: Part 2 of 2
If you don't have a Ph.D. in data science, the raw data might be difficult to comprehend. This is where data visualization comes in.
Unleashing Feature Flags onto Kafka Consumers
Feature flags are a tool to strategically enable or disable functionality at runtime. They are often used to drive different user experiences but can also be useful in real-time data systems. In this post, we’ll […]
A security model for developers
Software security is more important than ever, but developing secure applications is more confusing than ever. TLS, mTLS, RBAC, SAML, OAUTH, OWASP, GDPR, SASL, RSA, JWT, cookie, attack vector, DDoS, firewall, VPN, security groups, exploit, […]