Categories
Tips

Hello, world. Meet Developer Nation!

It’s a new era for our community, Developer Economics is now Developer Nation.

Over the last ten years we’ve gathered over 40,000 developers with one thing in common: an unyielding curiosity about what the future holds for software builders. Together with all of you we’ve run 20 global developer surveys, co-created over 300 blog posts, read over 20 reports, pondered over 300 graphs and tried to make sense of the emerging trends in the developer world and what they mean for you and your projects.

Now it’s time to reveal a new chapter. We want to be more than just a survey, a report or a newsletter you interact with from time to time. It’s time to shift the focus from us to you – a diverse group of curious and ambitions software creators who want more from the ecosystem: more support from the platforms, more value for your time, and more chances to learn from each other.

Why Developer Nation?

For the last 10 years we were known as Developer Economics. It helped us earned the trust of tens of thousands of developers over the years. But it’s not helping us resonate with many, many more software creators out there. The “Economics” part especially. We have evolved beyond analysing revenue models for developers. We’ve grown by mapping trends across a wider ecosystem of developer tools, platforms, technologies, and programs. The future is about helping all software creators (developers and no-coders alike) influence how the software is built.

We approached the new name from different angles: blending concepts, metaphors, acronyms, dev jargon, pop culture, creative spelling, crunchy suffixes, Latin words, fringe Greek gods, and more. We came up with 157 name ideas! We then asked around 1,000 of our most loyal members for a feedback. Developer Nation is the name that stood out the most with you. It was associated with trust and excitement.

With a new name comes a new responsibility

Our vision is a software development ecosystem that listens, empowers, and supports software creators to pursue continuous learning, build future-forward solutions without compromises. We want to help you feel confident in your technology choices and included in the conversation about the future of the ecosystem.

We pledge to do this through a global research, sharing with you trustworthy data about emerging software trends, and offering you new opportunities to connect with the people at the service of software builders.

How can you get more involved?

We’ll be testing new programs and channels through which you can connect with other software creators and platform leaders to exchange ideas and experiences.

We want to give you more space and opportunities to speak about the topics that you find relevant and other software builders will care about:

  • What’s in your toolbox?
  • What was your journey to becoming a software creator like? Your biggest mistakes and “a-ha!” moments?
  • Which software development trends need to be questioned and which deserve more attention, in your expert opinion?
  • Which books / podcasts / events / blogs / people inspire you?
  • What projects are you working on and how can our community help you test, give feedback, and earn users or followers?

Find out how you can get involved here.

We’ll still invite you to participate in our global surveys twice a year.

We’d also love for you to read our blog, reports, and newsletter.

It’s a feature, not a bug

Some of our links and form still refer to developereconomics.com and your user profile is still a bit of work-in-progress. Hang in there, we’ll get it sorted!

Say hello to our team!

Last but not least, it’s about time you met the people behind the screens who want to turn this into a real community!

Categories
Tools

AngularJS development tools for 2021

Business and economy took the worst hit during the 2020 pandemic and the situation is making a comeback again this year. The adversities also paved the way to recognize the digital approach towards business. While digital marketing, websites, social media prevailed and was put to good use by businesses even before this situation, the pandemic made it a necessity rather than an option.

Businesses joined the online race to boost their company and stay afloat in these difficult times. All these together showed us how a business model can be re-thought based entirely on the internet.

The shift to e-commerce specifically called for simpler technologies for businesses as well as users and as a result, exponential growth in the requirement for web development tools has been witnessed. 

One such option is the AngularJS development tools. It is an open-source application that is particularly useful for making single-page applications. Angular JS Development Companies are significantly using the AngularJS Frameworks to simplify their works. 

We have listed some of the top AngularJS Development tools which are trending in 2021 here to give you an insight into the best options you can look out for.

5 Trending AngularJS development tools in 2021

With the help of AngularJS development tools, you can easily create a platform to promote your business—from a simple interface to comparatively complex applications. The following are top trending AngularJS platforms that are growing in popularity by the day:

Karma

This is one of the most popular testing frameworks for AngularJS Development. The primary perks of using this one are the option to test the application on a browser as well as a different device like tablets or smartphones. Unit testing, E2E testing, and midway testing are primarily conducted in this.

Features of Karma AngularJS Framework:

  • Versatile and can be used on all browsers
  • Open-source platform
  • Can be easily integrated with Travis, Jenkins, and Semaphore
  • Debugging is made easier
  • Integration is smooth

Pros and cons:

  • You can test it on real devices.
  • There are several plug-ins available to make your task simpler.
  • However, it is a bit slow compared to many other such tools.

Jasmine

If you want to test Javascript Codes, the Jasmine AngularJS Development tool is the one for you. It is driven by a behaviour approach and an independent framework that is not reliant on DOM javascript. 

Projects based on NodeJS, particularly find this useful, and any other project where the javascript works will also benefit from this. Accenture, Gitlab, Walmart are a few of the corporations among the 200 others which are built using Jasmine.

Features of Jasmine are as follows:

  • It is a fast framework with lower overhead.
  • There is an included library that you can access while using this framework.
  • It can be used for both browser and Node.
  • It does not require DOM.

Pros and Cons:

  • It is an open-source framework with a set of straightforward syntax for easier testing.
  • Coding is easier here and you also get community support along with thorough documentation.
  • The front end, as well as the backend test, are both simplified.
  • However, asynchronous testing can be a little bit tricky.

AngularFire

AngularFire is known as one of the best backend development tools. Dynamic API features and 3-way data binding can easily be facilitated with this tool. When you need a rapid development process, this is going to work. The most attractive feature of AngularFire is its ability to synchronize real-time binding and save the data in automated mode.

Features of AngularFire that make it so popular:

  • Data Storage is automatic.
  • Data syncing is done in real-time.
  • Binary files like videos and images are managed easily.
  • Firebase services are easily projected and injected.

Pros and Cons:

  • High security for the Angular roots and flexible and dynamic API.
  • The developer experience is simple and effective.
  • Documentation features are not considered up to the mark by many developers which is the only drawback of this AngularJS tool.

Djangular

It comes with several functionalities that help to focus on the primary development process and based on a philosophy called DRY or Don’t Repeat Yourself. Many leading e-commerce websites and social companies adopt this tool because it has a robust content delivery network.

Scalability, security, and rapid development are assured by this AngularJS development tool.

Features of Djangular:

  • You can get namespacing AngularJS content.
  • The frameworks are very flexible.

Pros and Cons:

  • It is protected by CSRF Security.
  • It is a reusable app and you can develop project-specific content.
  • Though an open-source development tool, it is a bit too advanced for beginners.

Mocha JS

Another popular JavaScript testing framework, Mocha JS, is known for flexibility and overall precise reporting. Many inbuilt features are incorporated in this tool and can also run on Node.JS. It sanctions asynchronous testing with mapping and broadcasting.

It also has global leak detection capabilities, browsing support, asynchronous support, and much more. In short, the Mocha.JS is ideal for producing suites and custom projects using its functionalities.

Features of Mocha.JS:

  • The framework has several features.
  • You get browser and async support.
  • Auto exit and testing support are also available with Mocha.JS.
  • There is a JavaScript API for testing.
  • The ease of set-up of this AngularJS tool is unbeatable.

Pros and Cons:

  • There is optimum test reporting and offers much more flexibility.
  • The multiple browser compatibility is commendable.
  • You get both TDD and BDD or Test Driven Development and Behavior Driven Development.

When you are trying to develop an app or website for your business, there are so many different features and aspects to keep in mind. This calls for using the right development tools. By opting for any of the above-mentioned tools, you can fulfill the requirement thoroughly. 

Now that you know the different popular AngularJS development tools and what their features are, you can determine easily how to put any of these to good use. Boosting your entrepreneurial ventures even in these difficult times is made simpler when you embrace the right technology.

About

Harikrishna Kundariya, is a marketer, developer, IoT, ChatBot & Blockchain savvy, designer, co-founder, Director of eSparkBiz Technologies. His 8+ experience enables him to provide digital solutions to new start-ups based on IoT and ChatBot.

Categories
Analysis

Infographic: Programming languages adoption trends 2021

In our last infographic, JavaScript was the most popular programming language. What has changed in terms of the sizes in the last six months? You can find the answers in this infographic with key findings from our Developer Economics 20th edition survey, which ran between November 2020 and February 2021 and reached 19,000 developers worldwide.

Javascript is the queen of programming languages

JavaScript is the most popular programming language by some distance, with nearly 14M developers using it globally. More importantly, the JavaScript community has been growing in size consistently for the past three years. Between Q4 2017 and Q1 2021, more than 4.5M developers joined the community – the highest growth in absolute terms across all languages. Even in software sectors where JavaScript is not among developers’ top choices, like data science or embedded development, about a fourth of developers use it in their projects.

Python is conquering the world

Since it surpassed Java in popularity at the beginning of 2020, Python has remained the second most widely adopted language behind JavaScript. Python now counts just over 10M users, after adding 1.6M net new developers in the past year alone. That’s a 20% growth rate, the highest across all the large programming language communities of more than 6M users. The rise of data science and machine learning (ML) is a clear factor in Python’s popularity. Close to 70% of ML developers and data scientists report using Python. For perspective, only 17% use R, the other language often associated with data science.

Kotlin’s rise continues

The fastest growing language community in percentage terms is Kotlin. In fact, it’s one of the two communities – the other being Rust – that has grown more than two-fold over the last three years, from 1.1M developers in Q4 2017 to 2.6M in Q1 2021. This is also very

evident from Kotlin’s ranking, where it moved from 11th to eight place during that period – a trend that’s largely attributed to Google’s decision to make Kotlin its preferred language for Android development. Even so, Kotlin still has a long way to go to catch up with the leading language in mobile development, Java; there are currently twice as many mobile developers building applications in Java than in Kotlin.

Swift was recently outranked by Kotlin, after attracting slightly fewer net new developers in the second half of 2020 (100K vs 300K). Even so, Swift is currently the default language for development across all Apple platforms, which has led to a stagnation in the adoption of Objective C. This gradual phase-out of Objective C from the Apple app ecosystem is also matched by a significant drop in its rank, from ninth to 12th place. 

The more niche languages – Go, Ruby, Rust, and Lua – are still much smaller, with up to 2.1M active software developers each. Go and Ruby are important languages in backend development, but Go has grown slightly faster in the past year, both in absolute and percentage terms. Rust has formed a very strong community of developers who care about performance, memory safety, and security. As a result, it grew faster than any other language in the last 12 months, more than doubling in size. Finally, Lua was also among the fastest growing language communities in the last year, mainly attracting AR/VR and IoT developers looking for a scripting alternative to low-level languages such as C and C++.

Sign up to our community to have your say in our next developer survey.

Infographic: Programming languages adoption trends 2021
Categories
Analysis

The search for a cloud-native database

Cedrick Lunven (@clunven) and Jeff Carpenter (@jscarp) of K8ssandra discuss the search fora cloud-native database.

The concept of “cloud-native” has come to stand for a collection of best practices for application logic and infrastructure, including databases. However, many of the databases supporting our applications have been around for decades, before the cloud or cloud-native was a thing. The data gravity associated with these legacy solutions has limited our ability to move applications and workloads. As we move to the cloud, how do we evolve our data storage approach? Do we need a cloud-native database? What would it even mean for a database to be cloud-native? Let’s take a look at these questions.

What is Cloud-Native?

It’s helpful to start by defining terms. In unpacking “cloud-native”, let’s start with the word “native”. For individuals, the word may evoke thoughts of your first language, or your country or origin – things that feel natural to you. Or in nature itself, we might consider the native habitats inhabited by wildlife, and how each species is adapted to its environment. We can use this as a basis to understand the meaning of cloud-native.

Here’s how the Cloud Native Computing Foundation (CNCF) defines the term:

“Cloud native technologies empower organizations to build and run scalable applications in modern, dynamic environments such as public, private, and hybrid clouds: Containers, service meshes, microservices, immutable infrastructure, and declarative APIs exemplify this approach.

These techniques enable loosely coupled systems that are resilient, manageable, and observable. Combined with robust automation, they allow engineers to make high-impact changes frequently and predictably with minimal toil.”

This is a rich definition, but it can be a challenge to use this to define what a cloud-native database is, as evidenced by the Database section of the CNCF Landscape Map:

Database section of the CNCF Landscape Map

Databases are just a small portion of a crowded cloud computing landscape.

Look closely, and you’ll notice a wide range of offerings: both traditional relational databases and NoSQL databases, supporting a variety of different data models including key/value, document, and graph. You’ll also find technologies that layer clustering, querying or schema management capabilities on top of existing databases. And this doesn’t even consider related categories in the CNCF landscape such as Streaming and Messaging for data movement, or Cloud Native Storage for persistence.

Which of these databases are cloud-native? Only those that are designed for the cloud, should we include those that can be adapted to work in the cloud? Bill Wilder provides an interesting perspective in his 2012 book, “Cloud Architecture Patterns”, defining “cloud-native” as:

Any application that was architected to take full advantage of cloud platforms”

By this definition, cloud-native databases are those that have been architected to take full advantage of underlying cloud infrastructure. Obvious? Maybe. Contentious? Probably…

Why should I care if my database is cloud-native?

Or to ask a different way, what are the advantages of a cloud-native database? Consider the two main factors driving the popularity of the cloud: cost and time-to-market.

  • Cost – the ability to pay-as-you-go has been vital in increasing cloud adoption. (But that doesn’t mean that cloud is cheap or that cost management is always straightforward.)
  • Time-to-market – the ability to quickly spin up infrastructure to prototype, develop, test, and deliver new applications and features. (But that doesn’t mean that cloud development and operations are easy.)

These goals apply to your database selection, just as they do to any other part of your stack.

What are the characteristics of a cloud-native database?

Now we can revisit the CNCF definition and extract characteristics of a cloud-native database that will help achieve our cost and time-to-market goals:

  • Scalability – the system must be able to add capacity dynamically to absorb additional workload
  • Elasticity – it must also be able to scale back down, so that you only pay for the resources you need
  • Resiliency – the system must survive failures without losing your data
  • Observability – tracking your activity, but also health checking and handling failovers
  • Automation – implementing operations tasks as repeatable logic to reduce the possibility of error. This characteristic is the most difficult to achieve, but is essential to achieve a high delivery tempo at scale

Cloud-native databases are designed to embody these characteristics, which distinguish them from “cloud-ready” databases, that is, those that can be deployed to the cloud with some adaptation.

What’s a good example of a cloud-native database?

Let’s test this definition of a cloud-native database by applying it to Apache Cassandra™ as an example. While the term “cloud-native” was not yet widespread when Cassandra was developed, it bears many of the same architectural influences, since it was inspired by public cloud infrastructure such as Amazon’s Dynamo Paper and Google’s BigTable. Because of this lineage, Cassandra embodies the principles outlined above:

  • Cassandra demonstrates horizontal scalability through adding nodes, and can be scaled down elastically to free resources outside of peak load periods
  • By default, Cassandra is an AP system, that is, it prioritizes availability and partition tolerance over consistency, as described in the CAP theorem. Cassandra’s built in replication, shared-nothing architecture and self-healing features help guarantee resiliency.
  • Cassandra nodes expose logging, metrics, and query tracing, which enable observability
  • Automation is the most challenging aspect for Cassandra, as typical for databases.

While automating the initial deployment of a Cassandra cluster is a relatively simple task, other tasks such as scaling up and down or upgrading can be time-consuming and difficult to automate. After all, even single-node database operations can be challenging, as many a DBA can testify. Fortunately, the K8ssandra project provides best practices for deploying Cassandra on Kubernetes, including major strides forward in automating “day 2” operations.

Does a cloud-native database have to run on Kubernetes?

Speaking of Kubernetes… When we talk about databases in the cloud, we’re really talking about stateful workloads requiring some kind of storage. But in the cloud world, stateful is painful. Data gravity is a real challenge – data may be hard to move due to regulations and laws, and the cost can get quite expensive. This results in a premium on keeping applications close to their data.

The challenges only increase when we begin deploying containerized applications using Kubernetes, since it was not originally designed for stateful workloads. There’s an emerging push toward deploying databases to run on Kubernetes as well, in order to maximize development and operational efficiencies by running the entire stack on a single platform. What additional requirements does Kubernetes put on a cloud-native database?

Containerization

First, the database must run in containers. This may sound obvious, but some work is required. Storage must be externalized, the memory and other computing resources must be tuned appropriately, and the application logs and metrics must be made available to infrastructure for monitoring and log aggregation.

Storage

Next, we need to map the database’s storage needs onto Kubernetes constructs. At a minimum, each database node will make a persistent volume claim that Kubernetes can use to allocate a storage volume with appropriate capacity and I/O characteristics. Databases are typically deployed using Kubernetes Stateful Sets, which help manage the mapping of storage volumes to pods and maintain consistent, predictable, identity.

Automated Operations

Finally, we need tooling to manage and automate database operations, including installation and maintenance. This is typically implemented via the Kubernetes operator pattern. Operators are basically control loops that observe the state of Kubernetes resources and take actions to help achieve a desired state. In this way they are similar to Kubernetes built-in controllers, but with the key difference that they understand domain-specific state and thus help Kubernetes make better decisions.

For example, the K8ssandra project uses cass-operator, which defines a Kubernetes custom resource (CRD) called “CassandraDatacenter” to describe the desired state of each top-level failure domain of a Cassandra cluster. This provides a level of abstraction higher than dealing with Stateful Sets or individual pods.

Kubernetes database operators typically help to answer questions like:

  • What happens during failovers? (pods, disks, networks)
  • What happens when you scale out? (pod rescheduling)
  • How are backups performed?
  • How do we effectively detect and prevent failure?
  • How is software upgraded? (rolling restarts)

Conclusion and what’s next

A cloud-native database is one that is designed with cloud-native principles in mind, including scalability, elasticity, resiliency, observability, and automation. As we’ve seen with Cassandra, automation is often the final milestone to be achieved, but running databases in Kubernetes can actually help us progress toward this goal of automation.

What’s next in the maturation of cloud-native databases? We’d love to hear your input as we continue to invent the future of this technology together.

This blog post originally appeared on K8ssandra and is based on Cedrick’s presentation “Databases in the Cloud-Native Era” from BluePrint London, March 11, 2021 (registration required).