Categories
Tools

The TechGig Engineering Tech Stack

TechGig is a technology platform to Attract, Engage and Hire top tech talent. Companies can source talent from a growing community of 4 million developers and leverage the power of automated real-time assessments and data-driven decision support.

Deciding Tech Stack is the most important decision you need to take while creating any Tech Product. The important criterion we have used while deciding technology stack are developer ecosystem, agility, scalability, speed and performance. Every product has unique requirements and you need to select technology stack matching your requirements. Blindly copying others’ technology decisions is not the right way to go. With the growth of users and features sometimes, you might need to replace old tech pieces and adopt new ones. While designing your architecture you should design in such a way that replacing some part of your older stack should not lead to a major rewrite.

TechGig engineering team believes in Open Source technologies. Our complete stack is made up of open-source software. For different layers, we have used different technologies specific to the requirement.

Front End

Our Front End is served by LAMP stack and client-side is written in jQuery and AngularJS which is most commonly used stack and is appreciated by the developer community for its agility and scalability.

Full-Text Search

Full-text search is an important requirement for TechGig. For this, we are using Solr which supports real-time indexing of content, faceted search, dynamic clustering and scalability and fault tolerance.

Containerization

TechGig supports 54+ languages in its code evaluation engine. To scale it in real-time and support these many languages and environments we are heavily using containers. Docker is the container technology which provides lightweight virtualization with almost no overhead.

Data Store

A lot of data within the TechGig ecosystem is not relational in nature like metadata of various types of evaluations, events and analytics data. To support these kinds of data we are using MongoDB as NoSQL technology. MongoDB is easy to use, highly available, highly scalable and high-performance document-oriented database which fits well within our requirements for evolving data and real-time analytics.

Messaging

TechGig application follows loosely coupled architecture to manage complexity, modularity and stability of code. Messaging is an important aspect of loosely coupled architecture. TechGig uses Kafka as the message queue for inter-communication between different modules of application like code evaluation front end, code evaluation engine, content indexing, real-time analytics, recommendation engine etc.

Caching Tech Stack Requirements

Caching is an important requirement for any application to enhance performance and response time. TechGig uses Redis to support data caching and offloading database load. TechGig serves user profile data, session data, stats and a lot of long-lived data from Redis caching layer. Other static data like JavaScript, CSS and images are served from Akamai CDN.

Backend and Analytics

A lot of heavy lifting components like face detection, face recognition recommendation services, plagiarism detection, content classification, bulk mailing services etc. are written in java and python using OpenCV, NLTK and TensorFlow frameworks.

Analytics is very important for better user experience and informed decision making. TechGig uses ELK stack for data ingestion and exploration and visualization. All event logs and behavioural data is ingested and visualized using ELK stack.

Development and Deployment

Apart from the technology stack, the selection of Software development tools is also very critical. This includes IDE, build tools, source control, requirement and bug tracking, CI/CD pipeline and testing tools. TechGig team uses, VSCode as IDE as of this lightweight and very fast. For source control TechGig uses BitBucket and for the requirement and Bug tracking, Atlassian Jira is used. Bitbucket and Jira go along so well, and both are Atlassian tools. TechGig uses Jenkins for its CI/CD pipeline as it is very easy to manage, requires very little maintenance and has a rich plugin ecosystem. For automated testing we use Selenium as it is open source, supports multiple browser testing and parallel test executions.

Site Reliability

After all Site Reliability monitoring is also very important. If some code deployed in production misbehaves or breaks, the SRE team should get alert and immediate rectification should be done. TechGig team has its own set of inhouse homegrown tools for monitoring and alert.

Application Security

Bad actors consistently try to steal the user’s personal, financial data. To protect users and data, we have a comprehensive application security program in which from requirements gathering to production deployment in all steps security is embedded. We use Static Code analysis to identify security gaps within the code. To identify security gaps in production live application we use Dynamic security assessments. Apart from this to identify business logic vulnerabilities extensive manual security assessments are done periodically.

Apart from the above-mentioned pieces, there are a lot of other components which contribute to TechGig tech stack. The technologies are subject to change depending on new requirements and challenges. What makes our work interesting is the problem statement we are solving i.e. help the developer community to learn to compete and grow.

About the author

Ram Awasthi is the Head-Technology of TechGig & TimesJobs and VP- Technology, Times Internet.

Categories
Tools

What have developers been reading

While novel readers were busy paging through murder mysteries and historical fiction this past spring, developer interests were data and analytics, Jakarta, cloud-native articles, Kubernetes and open source.

That’s what we discovered when we took a look at quarter-over-quarter pageview trends in DZone.com. A little background: 29 million unique readers visit each year. The research is based on article tags assigned by DZone editors and used to help readers search once they’re on our site. They aren’t keywords.

Consuming All Things Data in the Data Category

Our first pass researching tags occurred in the first quarter, when interest in data analytics and tools articles skyrocketed. Same situation for Q2 vs Q1. Our findings did show that readership shifted away from the data scientist tagline toward specific tools and data strategies that anyone can implement.

Q2TopicTags_2

Of the fastest-growing data analysis topics, the data analysis tools tag grew over 30X, and related topics like ingesting data (the collection of data into/out of the database for immediate use) and augmented analytics (machine learning-powered data analysis) grew about 10X more popular with readers.

Terms like ingesting data and augmented analytics speak to the need for more than just a dashboard approach to consuming data. Tim Spann, a Big Data thought leader and field engineer at Cloudera, thinks a consolidation in analytics is underway.

“I think there’s going to be consolidation. And a lot of startups are going to try to integrate a couple of these things together. They’re going to try to add more features and differentiate themselves. You’re going to see more of the data analytics tools try to do ingest and vice versa, (so) they’ll be a more interactive platform,” he explains.

“You’re getting more data, you need to be able to ingest, you need to be able to analyze it, you need to be able to build apps out of them — it’s not just enough to have a static report, or even a dashboard that people look at, people actually have uses for this data.”

From Java EE to Jakarta

After Oracle announced in 2017 that they were handing over Java EE to the Eclipse Foundation, a few changes began to take place. One was that Enterprise Java would now be called Jakarta EE.

In the second quarter of this year, the Eclipse Foundation announced that all Jakarta specifications with “javax.*” must be changed to “jakarta.*” This had the potential to significantly impact, and potentially harm, existing Enterprise Java applications.

It’s no surprise that developers were on DZone searching for the best ways to comply with these changes. We saw a lot of growth in all related topic tags, including Enterprise Java, which grew 10 times more popular, and Jakarta, which grew over 35 times more popular in Q2.

Apps and Cloud-Native Development

Cloud-native development is drastically changing the way we build applications. The term cloud-native refers to a style of container-based development that creates applications from scratch, or refactors older applications, to be fully optimized for the cloud. This is very different from older application development philosophies that retroactively adjusted apps to be cloud-enabled using methods like lift-and-shift or re-platforming.

According to this article on what it means to be cloud-native, the applications contain three major traits. They are container-centric, dynamically managed (i.e., containers are managed and organized by Kubernetes or other similar platforms), and microservices-oriented.

From Q1 to Q2, many aspects of cloud development showed steady growth. However, topics specific to cloud-native development grew exponentially, with the term itself showing over 300% growth last quarter.

Related tags that also showed an increase included:

  • Cloud-based microservices (500%)
  • Cloud-native deployment (140%)
  • Scaling microservices (160%)

Q2TopicTags_4

“The cloud-native ecosystem will see explosive growth as the growing adoption of Kubernetes will translate to a growing need to make it manageable for the enterprise. There are both huge gaps in tooling and many unrealized opportunities in making fleets of microservices more manageable — and we expect to see projects sprout up to handle both the gaps and the opportunities,” said Gwen Shapira, Data Architect at Confluent, in this interview with DZone.

Is Kubernetes the King of Development?

Kubernetes is the largest cloud-native platform designed to manage, scale, and deploy containers. As cloud-native development continues to grow, so does interest in Kubernetes.

“Kubernetes is a game changer. It’s slowly taking over the way the Internet works as far as application development and deployment,” explains Bob Reselman, an industry analyst and technical educator.

“It’s all changing so fast. Every five years, the stack is changing. Because of this, developers are finding themselves in a constant state of adaptivity and looking for the next best tool and ways to manage, scale, and deploy applications.”

Not surprisingly, we found topic tags related to Kubernetes and Kubernetes deployment showing tremendous growth from Q1 to Q2, including:

  • k8s — another name for Kubernetes (7X more popular).
  • Kubeadm — a fast-path command for creating a Kubernetes cluster (151%).
  • Kubelet — a command that runs individual Kubernetes nodes (118%).
  • Kubernetes services — rules and abstractions for Kubernetes pods (85%).
  • GKE — Google Kubernetes Engine (66% growth).

Open Source Topics Remain Popular Developer Interests

Nearly all of the above-mentioned topic tags contain one common theme: Open source.

The open-source topics that saw the most growth include:

  • Open APIs (11X).
  • Open source big data tools (200%).
  • Open source communities (110%).

Additionally, we saw growth in a wide range of open-source tools and platforms — some mentioned above, like Kubernetes, Apache, Jakarta, RSocket, and many more.

As the stack continues to change and evolve, developers will seek out open-source software first. Without question. Kubernetes, data tools like Apache Spark and Kafka— all open source, all dominating the ecosystem and rank high in developer interests.

Q2TopicTags_6

“I believe enterprises will increasingly turn to managed platforms delivering 100% open-source technologies in 2019, as they increasingly seek to avoid the vendor and technological lock-in that remain too common with proprietary open source offerings,” explained Ben Slater, CPO at Instaclustr, in an interview with DZone late last year.

“Given the fact that commercialized open-source technologies can leave enterprises at the mercy of price increases (and make it impossible to run solutions on their own or implement useful modifications), fully open-source technologies offer a compelling alternative.”

“Open-source solutions are empowered by engaged communities that help ensure rapid improvements and bug resolution, better security, full transparency and reliability, and a faster time to market at a lower cost.”

About the author:

Lindsay is a Content Coordinator at Devada. She works closely with contributors to DZone, a website for software developers and IT professionals to learn and share their knowledge. Editing and reviewing submissions to the site, she specializes in content related to Java, IoT, and software security.

Categories
Tools

An Agile Software World

Since the emergence of the first agile software development methods more than 20 years ago, development teams around the world have undergone a significant cultural shift. The traditional waterfall approach to running software projects sequentially has been gradually replaced by iterative project management styles. This has enabled organisations of all sizes to scale successfully by remaining resilient in a business environment full of uncertainties. Agile methodology appears to be transforming companies across sectors, but is it really the dominant trend in the software industry nowadays? And if it is, which particular implementations of agile are the most widely used by developers?

 

To gain more insight into the above questions, we asked 11,700+ developers in our latest Developer Economics survey about the project management methodologies they follow in software development. The data we collected provides clear evidence that agile is indeed the most commonly adopted practice in the software industry.

Agile project management

Agile is an umbrella term used for processes like Scrum and Kanban that emphasise short release cycles, rapid response to changing requirements and continuous improvement through regular customer feedback, as described in the Agile manifesto of 2001. According to our survey data, more than half (58%) of developers say they follow a project management methodology that can be classified as agile.

By comparison, the once ruling waterfall methodology is currently used by only 15% of developers. Waterfall’s biggest advantage, i.e. its sequential approach, is also its greatest limitation: in projects where the goals are not clear from the beginning and requirements change continuously, waterfall fails to adapt and deliver results quickly.

 

SCRUM IS LEADING THE AGILE REVOLUTION

Scrum was conceived in the mid 1990s as a response to the shortcomings of waterfall and is now the most popular project management methodology, followed by 37% of developers. As a framework that puts the core principles of agile into practice, Scrum enables teams to break down large, complex projects into a series of smaller iterations (or sprints) and ship high quality products faster and more frequently.

Kanban is another prominent agile project management framework, although its popularity is significantly lower – nearly half of Scrum’s (20% vs 37%). The two methodologies share some of the same core values but have very different implementations. Most notably, Kanban is lighter on structure as it’s not constrained by fixed-length iterations, but instead it prioritises continuous delivery of work to customers (even multiple times per day) as long as the capacity of the team permits it.

Only 6% of developers blend the concepts of Scrum and Kanban into Scrumban, indicating that agile hybrids are not common. Agile-waterfall hybrids, in contrast, are the second most popular choice for developers (21%). This is most likely a sign that many organisations remain skeptical towards agile development and prefer a slower transition to it by mixing some of the less controversial agile techniques with the traditional waterfall method.

Other well-established frameworks such as Feature-driven development (FDS), Extreme programming (XP) and Lean are used by about 10% of developers, whereas Adaptive software development (ASD) and Dynamic systems development method (DSDM) – both outgrowths of the early Rapid application development method – appeal to more niche audiences. Interestingly 23% of developers don’t use any specific methodology in their projects, although – as one may expect – it’s mostly amateurs who do so (40%) and to a much lesser extent professionals (17%). Another 19% of developers (18% of professionals) do not follow any specific project management process for some of their side projects, which in most cases are hobby endeavours.

Our data reveals that developers tend to follow multiple methodologies across their projects (2.7 on average), with Scrum being the most frequently co-used framework along with other methodologies. This implies that Scrum often acts as a “touch point” for development teams landing on the world of agile or as a starting choice before transitioning to less structured agile processes. For example, 66% of developers using Kanban and 57% using XP also use Scrum, as opposed to only 36% and 13% of Scrum followers also using Kanban and XP, respectively. Among developers following the waterfall model, more than 40% also use either Scrum or an agile-waterfall hybrid (like Scrummerfall) while the adoption of any other framework is below 25%. It seems that Scrum’s simplicity, clearly defined roles and timeboxed nature attract development teams who want a smoother transition from traditional waterfall to more flexible approaches.

Agile_Software_World

You can read the latest full State of the Developer Nation report here, and help shape the trends by taking the 18th Developer Economics survey here

 

Categories
Business Interviews Tools

Dev Evolution: Meet Vasil from AndroidPal

How do tech startups win the hearts of developers with their products? What does it take to create value and get developers to use their tools? Our guest Vasil from AndroidPal talked to us about these challenges and shared a few tips on Android development.

Who?

I’m Vasil, owner and CEO of AndroidPal Ltd. and other businesses like Belvek Ltd. I have been into computer technologies most of my life, during the last 10 years — professionally.

My interest in technology and computers started when I was very young, probably at the age of 7. Back then people did not have computers at home. My brother and I had the chance to land in an after-school activity to learn programming. It was only once per week and we couldn’t wait for it to start. We were taught BASIC back then on computers called Pravetz.

We’ve initially worked with 8-bit but later 16-bit computers which were mostly identical with the Apple II computer. It seemed I had a knack for programming, maybe because I was good at Maths.

Additionally I’ve studied and worked with other popular at the time programming languages and technologies like VBScript (yes, it was a thing), Visual Basic, Delphi, OpenGL, PHP, ASP (prior to .NET) and of course HTML.

Fast forward 15 years and I started my own IT company. We’re based in Sofia, Bulgaria and have been providing software development and related services for more than 6 years now.

Most of our clients are from USA, Germany, Austria and Italy. We also have our own products and services in different fields – education, travel, gaming and entertainment.

How did you get into app & Android development?

We’ve been developing one way or another for Android for almost exactly 9 years now. I can still remember the first Android phone I got – HTC Desire. I think it must have been mid March 2010 when I’ve heard of the phone. I really liked it, but said to myself that I can buy it only after I’ve created a simple app for Android and learn more about Android development.

Back then developing for Android was not easy, the current Android version at the time was Android 1.5 but I remember that writing Android apps I had to support Android 1.1 too.

Developing for Android was done with Eclipse. Eclipse is an open source IDE and back then, at least developing for Android with it was not easy. There were too many issues with the IDE – it required too much memory, freezed often, needed restarts and obscure workarounds to make it stable.

So, that first app that I built used Android NDK and had C and C++ code to allow fast image manipulation. And fast it was – probably 3 to 5 times faster than manipulating the image data directly in Java. Of course a year later the Dalvik VM got JIT which would make a Java implementation comparable in terms of speed.

Ever since that first app I and later the people I work with are developing more and more for Android working on big or small projects for various industries.

And yes, I bought that HTC Desire phone on May 21st 2010 (I know the date because I bragged to a friend over email).

Tell us a bit more about AndroidPal.

AndroidPal started because of a problem. We were working on an Android app with a particularly complex graphical user interface. We’ve inherited the code of another company and struggled making certain views (the interface) work. To such extent that we had to create a tool to inspect the layout better. This is how our own View Hierarchy Inspector tool was born.

We thought it would be very useful to developers like ourselves and it would be great if we created other helpful tools.

With more than 2.7 billion active users undoubtedly Android OS is the most popular OS. There constantly are new technologies and frameworks and SDK updates and languages coming out. We know how overwhelming it can be for developers, and it is.

So we thought we start an online community centered around Android Development — this is what AndroidPal is all about. It’s a website where you can find useful information, chat with peers and learn. The site has different sections like – Questions, Libraries, Knowledge Base and Chat.

ap-studio-wide-screenshot

We’ve built all of these as only the foundation onto which we can implement all our other ideas. AP Studio is part of AndroidPal and the name is just a short version of “Android Pal Studio”.

What pain points are you solving for developers? Why should developers use your IDE?

AP Studio offers tools which Android Studio does not. One example would be the Icon Creator, probably the most popular AndroidPal Studio tool among existing users. Then there is the Shape Drawable creator and other tools. Say you want to create a Shape drawable resource file, you might need to check the docs to recall the exact specs and write XML text code. Our tool works visually. It has controls based strictly on the specs so you can’t go wrong.

Among other things this saves time. The tools are built into the IDE and there are quick actions to streamline the process. For example when you create an icon for your app AP Studio can immediately and automatically set it as your app’s launcher icon.

Then there is the snappiness of AP Studio. It does not have the heavy requirements of Android Studio and feels much quicker. In our work we sometimes need to make a small change and see the result right away, no need to spin another instance of Android Studio in such cases. We’re dedicated to increase the snappiness factor even further.

Our best ideas are yet to be implemented. One such idea is how to organize and reuse resources and experience from different projects. One way is to have a library of resources, for example a library of icons or library of layouts. Something that you can navigate easily. A public as well as developer’s very own private library. Our Shape Drawable Creator tool does have a public library with 8 free items, we’ll add more and accept submissions by developers and improve and categorize things a lot in the next iterations of the software.

Indeed everything in AP Studio is ad hoc. Android Studio is based on IntelliJ Idea which is a great software, but has been built as a generic purpose IDE. Google had to create a plugin for it. At some point we wanted to create our own plugins for Android Studio, but the IntelliJ Idea plugins documentation and the effort required to do so seemed overwhelming. Simple things would require a lot of work.

Therefore being ad-hoc and using modern technologies allows us to have a special touch in everything and to quickly respond and implement user suggested features.

To summarize, I would recommend developers use our IDE because it offers new tools and ultimately saves time and leads to less errors.

How was your experience of building the IDE? What challenges did you face in developing this?

Building an IDE is not a trivial task, it was much more effort than we’ve initially imagined.

Entering an unknown territory was very challenging. It’s a different kind of software than what we’ve done before. Also the sheer amount of technologies involved, the research of how things work and why, reading and understanding the (sometimes lacking) documentations – it’s a very big effort.
But it’s fun and rewarding to see things work. To get to a stage where we can start paying more attention to UX as functionality is already fine.

Martin, one of the main developers of the project had this to say:

“Having only been working on web sites and web apps I found using Angular for a Desktop app was something completely new to me. In my work on the project I’ve encountered things which were different from my usual Web development work. It was a tough but interesting work and certain tasks seemed overwhelming, but I did not give up and as a result became a better developer overall.”

Even though it’s well featured IDE now and offers everything you need to develop for Android we’re long way of having all our ideas implemented.

What’s next for AndroidPal? How do you see it progressing in the next two years?

On the whole we want to improve the online part and include interactive guides for beginners, different tools. To name but a few things coming:

  • Android Update tool where developers learn from a very well presented data what they need to do in order to update / upgrade from version X to version Y.
  • Git repos with Android specific web tools (e.g. preview specific android resources, display android specific info about the project).
  • Knowledge base – we have great ideas there and want to develop them.
  • Most importantly – more work on AP Studio IDE – to ultimately have low-code / no-code solutions for a wider audience (not just professional software developers).
  • Some sort of PM tool (todo lists — we have been using our own tool for it and are thinking of integrating it with AP Studio).

One other non-technical aspect of the project is AP Academy where we would apply our experience in teaching and explaining Android topics to a wider audience and in ways that would make the whole learning process better.

What’s your best piece of advice for developers today?

Software development is not an easy thing. Being a professional software developer means you have to keep up with all technologies as much as you can. Learning and improving is a lifelong process. Becoming good takes years. The best piece of advice would be to not give up when there’s a tough problem to solve. So, keep calm and don’t give up.

For most developers there would always be someone who is better in a particular aspect of programming. We should be humble and strive to learn.
As software developers we should always try to solve problems. Not to learn the syntax of a programming language as best as you can. Or learn the most number of programming patterns. What brings value is solving problems. Being creative when solving problems is equally important.

But this is just some developer with 10 years experience talking. There are far more experienced developers who have been into technology from much earlier days. There are great books out there every developer should read. The list might be long and depend on what kind of programming you do, but I would always recommend the books of Uncle Bob (Robert C. Martin) — for example one of his best known books “Clean Code”. Another book I’d recommend is “The Pragmatic Programmer” by Andrew Hunt and Dave Thomas.

What technologies do you invest in the most, and why?

One way or another we use the following technologies across AndroidPal and in AP Studio in particular:

Java
Kotlin
Gradle DSL
Python
Javascript
Typescript
Angular
NodeJS
PostgreSQL
MongoDB
SQLite
Firebase
Electron
HTML5 / CSS3 / SCSS

Most of the codebase of the IDE is Javascript / Typescript, however many of the important (albeit much smaller) parts are written in Java.

Then there are libraries and frameworks within those technologies which are too many to list.

Using HTML5 for the interface made so many things so much easier than in other platforms (comparing for example using existing Java GUI frameworks or creating our own). The freedom and ease such a mature technology offers is something we’ve really learnt to appreciate.

HTML5 and Angular made the big difference. Can’t even begin to imagine how much more effort it would require to do this with traditional technologies.

Categories
Platforms Tools

The battle: Tensorflow vs Pytorch

Which framework should you use? An answer from 3,000 developers. Who hasn’t heard about the Tensorflow vs Pytorch battle between Facebook’s PyTorch and Google’s Tensorflow?  A quick search will reveal the intensity of this clash of frameworks. Here is one great article by Kirill Dubovikov.

And here is your chance to defend the framework you believe in the most.

At its core, the duel is fuelled by the similarity of the two frameworks. Both frameworks:

  • Are an open source libraries for high performance numerical computation
  • Are supported by a large tech company (Facebook and Google)
  • Have a strong and active supporting community
  • Are Python based
  • Use graphs to represent the flow of data and operations
  • Are well documented.

Taking all of this into account we can say that almost anything created in one of the frameworks can be replicated in the other at a similar cost. Therefore, the question stands. Which framework should you use? What is the main difference between each community?

At /data we are constantly surveying the developer community to track the trends and predict the future of different technology sectors. For machine learning in particular this clash is critical. The prevailing framework, if there is one, will have a huge impact on the path that the machine learning community will take in the years to come.

With this in mind, we asked the developers who said that they are involved in data science (DS) or machine learning (ML) which of the two frameworks they are using, how they are using them and what else they do in their professional life.

Tensorflow is winning the game, but is PyTorch playing on the same console?

From the 3,000 developers involved in ML or DS we saw that 43% of them use PyTorch or Tensorflow.

This 43% is not equally distributed between the two frameworks. Tensorflow is 3.4 times bigger than PyTorch. A total of 86% of ML developers and data scientists, said they are currently using Tensorflow, while only 11%, were using PyTorch.

Moreover, PyTorch has more than 50% of its community also using Tensorflow. On the other hand, only 15% of the Tensorflow community also uses PyTorch. It would seem like Tensorflow is a must but PyTorch is a nice-to-have.

tensorflow pytorch

Who is using PyTorch and who is using Tensorflow? What is each framework being used for the most?

Here are the things that really stood-out from the rest:

tensorflow vs pytorch

 

It is conclusive. In comparison to PyTorch, Tensorflow is being used in Production and most probably deployed to the cloud, as implied by the significantly higher backend experience of Tensorflow users (4.8 years vs. 3.8 of PyTorch users). As compared to PyTorch, Its community is composed more of professional machine learning developers (28%), software architects (26%) and programmers within a company (58%). This is most likely due to Google’s focus on deployment through APIs such as Tensorflow serving which has become a key motivator for the adoption of Tensorflow for many developers who are trying to push data products into production environments.

On the other hand, PyTorch is being used more than Tensorflow for data analysis and ad-hoc models within a business context (10%). In the PyTorch community there are far more Python-first developers (i.e developers using Python as a primary language) who work on web applications (46%). Moreover, the versatility of this Pythonic framework allows researchers to test out ideas with almost zero friction and therefore it’s the go-to framework for the most advanced cutting edge solutions.

Do you use any of these frameworks?

Have your say in our bi-annual survey currently running and let us know how you are building those convolutions – and win some awesome prizes in the process.

                                                     take_the_survey_button_

Categories
Business Languages Platforms Tools

Take the new Developer Economics Survey Q2 2018

Got something to say about popular platforms and apps out there? How about languages, tools, or APIs? It’s prime time to let your opinion out – our semi-annual Developer Economics survey is now LIVE! Don’t miss a chance to join over 40,000 developers from 160+ countries who take part in our surveys every year to tell us about trends and shape the future of where software development is going next. Start right away here!

 

Who is the Developer Economics survey for?

The survey is for pretty much everyone who gets their fingers into coding. All developers who work on software development are welcome to take the survey, whether your work on Mobile, Desktop, IoT, AR/VR, Machine Learning & Data Science, Web, Backend, or Games.

What sort of questions is the survey asking?

We ask stuff that all developers care about. Career? Check. Satisfaction with tools? Check. Future trends and what will matter in the years to come? You bet.
As always, the survey asks you questions like:

  • Which are your favourite tools and platforms?
  • What are some must-have developer skills today?
  • Are you working on the projects you would like to work on?
  • Where do you think development time should be invested?

This time, we added new questions about developer skills, so your first-hand insights are that much more important.

What do I get from it?

Apart from contributing to the developer community with your insights (and making it a better place, obviously), there are many perks. Have a look at what we prepared for you this time:

  • Amazing prizes up for grabs: iPhone X, Samsung S9 Plus, HTC Vive Pro, GitHub 12 months developer program, Udemy vouchers, and more.
  • Access to State of the Developer Nation 15th Edition report with the key findings from this survey (coming up in Q3 2018).
  • A referral program you can join, share the survey and win up to $700 in cash!

How’s this survey different than last year?

We asked developers what they wanted to see in the 15th edition of the Developer Economics Survey. Majority of you rooted for a Sci-Fi theme and we delivered! Complete the survey and you’ll find out who is your intergalactic alter-ego and where your force lies!

What happens with my responses?

Anonymized results of the survey will be made available in the free State of the Developer Nation 15th Edition report. If you take the survey, we’ll reach out to you with the copy of the report so you can be the first to check out the insights. In the meantime, you can check out previous editions here.

 

So, what are you waiting for? Take the survey now!

Categories
Platforms Tools

What types of tools are IoT developers actually using?

IoT platforms were on the cusp of reaching the peak of inflated expectations in Gartner’s Hype Cycle from August 2016. Not surprisingly – there are literally hundreds of them, and counting. Also, the word ‘platform’ is used for anything, from network infrastructure to hardware components to cloud services. In the end, IoT owes its boom in popularity to more and better tools becoming available for developers. In this article, we shed some light on the types of tools that IoT developers are actually using.

The IoT tool market is still underdeveloped and heavily fragmented.

Despite the proliferation of IoT platforms and other tools, the IoT tool market is still underdeveloped and heavily fragmented. We asked IoT developers to select technologies they use out of a list of 15 categories. On average, IoT developers use 2.9 types of tools in that list, or one in five out of the list; professionals slightly more at 3.5 tool types. That’s comparatively fewer than developers in other sectors like cloud, mobile, or web, where developers use a quarter to a third of the tools listed. Part of the reason is fragmentation: not every tool is comprehensive enough to be relevant to a large number of developers. In part, the low tool usage is due to underdevelopment of the tool market. 11% of IoT developers don’t use any of the tools in our list, compared to 6% of web developers and 3% of mobile developers, who we presented with similar sized lists. Either way, we expect to see a good bit of consolidation and development before we can call this a mature tooling market.

Professional IoT developers use more tools than amateurs.

Professional IoT developers use more tools than amateurs, as we said, but they tend to use specific types of tools more often. The biggest differences are seen in categories like software deployment tools, IoT cloud platforms, embedded operating systems, machine learning platforms, gateway middleware, beacons, message brokers, or fog computing. What all these technologies have in common is that they are components of a complete IoT solution, i.e. technologies that an engineer would integrate under the hood to implement a valuable product or project. Fog or edge computing – championed by Cisco – is notable by its absence: a mere 4% of IoT developers are working with this technology. It may be too early for this technology, or the need for it might not be as big as pundits proclaim. Time will tell.

The gap between professional and amateur use is virtually non-existent in hardware platforms such as single-board computers like the Raspberry Pi or prototyping boards like the Arduino or Intel Edison. These microprocessors and computers have become so cheap and accessible (i.e. easy to use) that everyone with a minimal technical background can play around with them and put them to productive use. Even wearables toolkits and middleware show signs of this level of accessibility.

We also don’t see the amateur-pro gap in high-level, integrating platforms: Smart Home platforms like HomeKit or SmartThings, smartwatch platforms like WatchOS or Android Wear, or voice platforms like Amazon Alexa. These are all areas (IoT verticals) that are easy to get into, easy to imagine (and design) a solution that scratches your own itch, and therefore highly popular among hobbyists, as we’ve highlighted in other reports. Attractiveness to hobbyists aside, these comprehensive types platforms lower the barrier for people to start building meaningful solutions quickly, whereas the component technologies from above are still more the domain of specialists. Even health & wellness data platforms like Google Fit or HealthKit – arguably a more specific, advanced domain – have only a small difference in usage between professionals and amateurs.

Some of the technologies in the list are specific to certain verticals: wearables toolkits are for wearables developers, Smart Home platforms for Smart Home developers, and so on. Or are they? 12% of developers who use Smart Home platforms are not currently targeting or planning to target that vertical, for example. That is a reasonably big number, even though the usage gap with Smart Home developers is indeed clear. Some of these technologies might be fairly generic, and might even be ‘misused’ for unrelated projects. In some cases like smartwatch platforms, developers might work on a smartwatch app as part of a broader IoT solution, without self-identifying necessarily as ‘wearable developers’.

02https://www.developereconomics.com/reports/state-developer-nation-q1-2017

Only 20% of retail IoT developers use beacons

Location beacons are an interesting case. Their most marketed use cases were in retail and hospitality applications. However, only 20% of retail IoT developers use beacons; a good bit less than the 27% to 33% in-vertical usage we see for other vertical-specific technologies. Furthermore, the gap between in-vertical and out-of-vertical usage is only 9 percentage points, i.e. half that of the other technologies discussed here. We take this as a sign that beacons may be overhyped, perhaps technologically, but more likely in terms of how valuable the use cases are to customers. In our previous State of the Nation report (Q3 2016), we noted that retail was the sector within IoT with the fastest attrition of developers, possibly due to a sense of disillusionment and kickback from the hype. The data on technology use in the retail vertical seems to support that hypothesis.

The potential remains enormous

We opened this article with Gartner’s claim that we’re at the peak of inflated expectations when it comes to IoT platforms. Our IoT research over the past years says that we’ve already passed it, with stalled population growth and high churn among developers, heading full-speed towards the trough of disillusionment. The key reason is that the technology is still too immature, very few platforms are finding product-market fit, and thus the majority of consumer-focused developers lack a platform that gives them a viable market. Of course the core technology marches on, with some mostly consumer-focused tools finding uses outside their original intended market. The potential remains enormous. However, it’s going to get worse before it gets better, with a lot of consolidation among the many existing technology platforms.

Categories
Tools

[Infographic] The latest trends on developer tools, skills and salaries.

We recently announced the  State of the Developer Nation Q1 2017 report which is based on the 12th edition Developer Economics survey, which took a 360° on developer tools, skills and salaries. The report sheds light on current developer trends based on responses from over 21,200 developers globally, across multiple research areas including Cloud, Mobile, IoT, Desktop, Web, Augmented & Virtual Reality, and Machine Learning.

For the first time in the history of Developer Economics, VisionMobile asked developers how much they earn in salaries and contractor fees, to explore what projects and types of development are more lucrative around different locations. What’s more, the report uncovers how technology battles continue on the web front with Angular vs React Javascript, Amazon Web Services is in a price war with their public cloud competitors, the IoT market is underdeveloped and highly fragmented, and Machine Learning developers are striving to identify what is the ideal programming language to use.

Check out our infographic on some of the many interesting  insights from  the State of the Developer Nation Q1 2017 report.

Developer trends 2017- Infographic

VisionMobile is very lucky to be supported by the entire developer community: from the largest Internet and software companies to the smallest local Meetups. Partnering  with these organisations, big and small, ensures that there is a representative sample across all developers so that something valuable is delivered  back to the community. The following are the top contributing communities for  the State of the Developer Nation Q1 2017: Amazon, SitePoint, Outsystems, 51CTO, Microsoft, Intel, The Linux Foundation, Android Weekly, InMobi, SellMyApp and Ubuntu.

The full report with more insights and graphs is available for download here.

We are currently running our new survey and it is sci-fi themed! Would you like to contribute ? Take the survey 

Categories
Platforms Tools

[ Infographic ] The State of the Developer Nation Survey – Tools & Technologies featured

The State of the Developer Nation Survey (H2 2016) was by far the largest in participation. The best way to illustrate this is by an infographic, highlighting important facts and figures. Further down you  will be able to find out the total number of respondents and the countries of their origin as well as all the development areas covered and the  number of tools featured per development area.

Clicking  on the Infographic will redirect you to the full list of tools falling under 7 different development areas namely: Desktop, Mobile, Web, IoT, Cloud, AR/VR and Machine Learning. In total there are 21 categories under all development areas which amount to a total of 226 tools.

top-tools-technologies-developer-survey-VisionMobile

 

Categories
Platforms Tools

A New Dimension for UI: Using Unity for Virtual Reality

virtual reality unity ui

The advent of virtual reality solutions, ranging from gaming to trainings and simulations, is raising new questions about previously standard industry practices. User interfaces (UI), in particular, require a complete re-thinking of function, layout, and implementation. Traditionally, user interfaces have been divided into diegetic (part of the game world), non-diegetic (separate from the game world), spatial and meta components. Most successful games use a combination of them to provide a balanced experience. In this, we break down each category, its advantages/disadvantages for virtual reality, and how to implement them in Unity. Meta UI components are rare in general and largely disregarded in VR programming. For that reason, they are not considered in this analysis.

Non-Diegetic UI

Historically, non-diegetic user interfaces have been the most common in the gaming industry. The key defining feature of them is that the components of the UI exist on a completely different plane than the actual 3D game space. Imagine here a heads-up display (HUD) as they are likely the most ubiquitous examples of non-diegetic user interfaces. A health bar, for example, does not exist within the 3D space that the game supposes nor can characters in-game interact with it. It is outside both the game’s narrative and space.

Pros/Cons

This modality offers the user a very clear display of relevant information and allows for quick navigation. The fear, however, is that the distinct separation of the game world from the structures that manipulate it results in a lack of immersion.

Use in Virtual Reality With Unity

For virtual reality, non-diegetic user interfaces can be very difficult to successfully implement. The largest obstacle is the fact that a HUD a la traditional gaming can be too close to the user’s face, resulting in highly uncomfortable eye strain. In Unity, the typical way to design a non-diegetic HUD is through the Screen Space – Overlay or Screen Space – Camera functions. It is unsupported, however, in Unity VR due to discomfort-related concerns. A developer can, however, fix a model to the user’s vector of vision. This, in effect, serves the purpose of a HUD. Once again, though, it can prove awkward. It would be like walking all day with a phone directly in front of you. In order to focus on it, you would need to re-focus your view from the rest of the world. Additionally, its presence when focusing on other tasks would be distracting. In short, stay away from strictly non-diegetic UIs when developing solutions for virtual reality.

Diegetic UI

This model of user interface holistically embeds all of the information typically represented in a HUD into the game’s 3D space. An example of this in a game would be if instead of a mini-map in the corner of the screen, the avatar/user would pull out and look at a map that exists within in the game world. Thus, the user interface is part of the game’s narrative and exists within the game space. From a player perspective, the Deadspace video game franchise is generally regarded as having implemented one of the best diegetic UIs to date.

Pros/Cons

The advantage of this style is the belief that it increases the realism of the gaming experience and thereby results in deeper immersion. The drawback, however, is it requires developers to seek ingenious ways of representing typical information, such as health, items in inventory, etc. These, in turn, must be intuitive and effective, otherwise, they will frustrate the user and result in a loss of immersion.

Use in Virtual Reality With Unity

In many ways, the goal of virtual reality is to provide a level of engagement and immersion that mimics real-life. With this in mind, diegesis seems like the logical, and even necessary, method of crafting user interfaces. The logic seems to go, if real-life is without menus and speech bubbles shouldn’t virtual real-life be so too? In lieu of this, there are several ways to create more diegetic experiences using Unity in new innovative ways. One way is to use the Raycast function to initiate interaction. Let’s imagine, for example, that in an RPG the user wishes to interact with an NPC. Instead of clicking and using a menu, the user could simply stare at them for an appropriate amount of time, which mirrors how we use eye contact in real-life to initiate conversation.

Spatial UI

A spatial UI lies half between traditional diegetic and non-diegetic models by offering elements that exist within the 3D game space but are not part of the game’s narrative. Perhaps the simplest iteration of this would be if you were to select a unit in a real-time strategy. Around the unit would appear some sort of circle or symbol to represent that the unit has been selected. In a first-person shooter, a way-marker for an objective is another example of spatial UI. The way-marker exists in the game space but if you were to live inside your character’s head, you wouldn’t see it.

Pros/Cons

In many ways, the advantages and disadvantages of spatial UIs mimic those of diegetic models. The key upside is it provides a lot of clarity to the user; all the relevant information for a user can be tagged to the relevant models. This, however, is offset by the fear that the presence of meta-information could break the immersive dimension of the game.

Use in Virtual Reality With Unity

When it comes virtual reality, spatial UI is the simplest and most effective option. When programming with Unity this means selecting World Space as the render mode for the Canvas. This allows components of the UI to be placed anywhere in the game space. In order for the best results and most comfortable experience for the user, set the text at a comfortable distance (3-5 meters) away and make sure it is clear, large, and readable.

In order to reduce clutter on the screen and keep immersion-levels high, it is often advisable not to permanently tag UI information to a model. It can appear unrealistic and unnecessary. Instead, allow notifications and status updates to flow in and out of the game as organically as possible. For example, don’t always have a health bar floating above a character’s head but instead have an aura appear around the character or have a health bar flash in the game space near the character. Unity also allows the implementation of arrows to help direct users if they’re looking in the wrong the direction. The easiest way to add this to a game is GUIArrows and customising which vector should be prioritized can be done with the Show Angle function.

An effective use of spatial user interfaces that is subtle but clear is overwhelmingly the simplest and most effective model. It provides the necessary instruction without — if done tastefully — shattering the user’s level of immersion.

Conclusion

The key consideration, whether choosing to pursue non-diegetic, diegetic or spatial components, is to strike a balance between immersion and usability. The greatest strength of virtual reality is that it’s 360° of 3D space naturally induces a degree of engagement that far surpasses even the most advanced screen-based solutions. The fear for some developers is that immersion could be broken by clunky interfaces that divorce the user from the actual experience. With this in mind, it’s important to remember that many games featuring non-diegetic/spatial features still boast impressive levels of immersion. MMOs that allow highly customizable HUDS immediately come to mind. They may clutter the screen but they also allow the user to feel at home in the experience, which in turn induces immersion.

In short, according to our experience at Program-Ace when designing an interface for virtual reality, pay careful attention to making sure the experience remains intuitive and comfortable while also trying at every moment to submerge components into the game space and game narrative.