What Is a Modern Developer? In Today’s World, It’s a Citizen Engineer
The modern developer is an overarching term covering a large variety of different roles, responsibilities, and skills. In today’s world, it’s a citizen engineer.
Join the DZone community and get the full member experience.Join For Free
This is an article from DZone's 2023 Development at Scale Trend Report.
Read the Report
If you are reading this, you are a coder. The modern developer is an overarching term covering a large variety of different roles, responsibilities, and skills. From using only a simple form, to hand coding low-level machine code, to building multi-tier machine learning applications — the breadth and depth of who coders are and what they do is broad. For some of us, this comes naturally; you want to solve problems, build solutions, and never manually do the same thing twice.
The desire to simplify one's life, automate everything, and solve problems is the key thing that drives many modern developers. If this desire sounds familiar, then you are a developer. In the near future, you may only need to think of what the code should be and then you can write it out in sentences — aka a prompt engineer. This is coming so quickly that this future could be Tuesday.
The heterogeneous nature of data, data producers, applications, and services that drives everyone to be a developer also highlights the importance of developers. We need to build applications and other things since there are so many diverse applications and systems that need to be joined together to solve an entire real-world requirement. For example, I need to share a new application that I have written to demonstrate how to use Apache NiFi to process airplane tracking data.
This is not a single task; there are many things to coordinate and do in a short time. I need to post an article to DZone, code to GitHub, and an announcement to Mastodon, Twitter, LinkedIn, and elsewhere. I also need to repost the article to my blog and build a conference talk around that content. This may yield more assets to organize and distribute. However, all of these are online activities that could be made into a pipeline and organized. This is a common, real-world need that spans many things
Figure 1: Example low-code app that citizen engineers can author
Roles and Responsibilities of Modern Developers
The number of activities a developer has to do in modern development today goes beyond just designing, creating, building, testing, and deploying applications. Often in today’s resource-constrained environments, a common additional role is to gather and translate user requirements into buildable assets. Responsibilities also include internationalization, monitoring, managing, extracting data, and more.
With the large list of activities required of developers, a lot of technical skills and soft skills are required to be successful. These can vary greatly based on what kind of developer you are. I have listed a few examples of types of developers, but depending on the size and age of your organization, you may be acting as more than one of these types:
- Full-stack developer
- Back-end developer
- SQL developer
- Analytics engineer
- Data engineer
- Streaming engineer
Some of the most important soft skills for a developer are being able to listen, understand, and take notes from a conversation with the person(s) needing an application. You have to be able to comprehend what they say and what they need based on your knowledge of the technical realities of the situation. They may ask for something powerful but only need a notepad application. Another important soft skill is being able to make people understand the reality of what can be built based on the constraints of time, talent, technical feasibility, and cost.
The bare minimum technical skills include being able to understand and utilize different web applications, a basic understanding how web pages work, some SQL knowledge, and some basic knowledge of program flow. If you are curious and are willing to go through trial and error, ask for help, and learn how to debug what is going wrong, then you can succeed in most types of development.
Nowadays, no one has time to fully document or model out applications anymore. A prototype must be quickly produced to gain buy-in around the gathered requirements. The expectations for any website and application today are very high, as people are constantly using applications and websites from large internet companies and expect the same level of quality and features in any application they use. This is amazingly difficult and often requires many teams working in unison with tons of software, services, frameworks, and tools.
Fortunately, today’s advanced tools make it easier than it has been in the past. Often, tools will be SaaS instant on app tools that can handle a lot of repetitive tasks. Low-code environments like Apache NiFi are enabling single developers to get more work done by automating a lot of the boilerplate infrastructure code.
By focusing only on the code that solves problems, is critical to a business solution, or answers a question, developers are accomplishing more with less.
I said that you could succeed, but often the price of success is even more requests, more demands of time, more applications to build, more features to add, more support required, and just more. In software, upgrades are more frequent and can require changes, updates, and re-releases of everything you have already done as well as changing your tooling. This could happen every week for certain technologies, but almost everything will require a few upgrades a year. This adds to the stress and workload that often leads developers to burnout.
Developer burnout comes when there are too many demands, applications to build, meetings to attend, and people to answer to. This tends to happen when there are not enough developers and no real understanding of the effort level required, which can lead to stress and make things slow down. For some developers, the only escape is quitting or taking a different role.
How do you alleviate it? You will need to have automation, delegation, smarter expectations, and potentially more tools. You will need to delegate some tasks to citizen developers and the requesters themselves. Some frameworks, low-code systems, and cloud applications enable this pretty easily. You may need to guide people or do some basic training, but if you can add a few more citizen developers to your team, it will bring big rewards.
They are also constantly improving cloud, open-source, and AI tools and frameworks that can make things easier. Again, another task is constant vigilance for newer and better software. Fortunately, there are some resources out there like DZone and newsletters that can improve the signal-to-noise for that.
Low and No Code Will Always Need Developers
Tools are just that: tools. They need to be guided in some way. This is why low-code and no-code development systems, even those powered by large language model AI like ChatGPT, still need someone to start the process and lay out what is wanted. These developers will also need to provide schemas for data, test the applications, and provide queries and acceptance tests to validate that the code does what is wanted.
With the rise of more powerful cloud tools, applications, and open-source systems as well as platforms and frameworks, we now can easily make available powerful development tools that require little to no coding to build usable production quality applications. With the low cost of entry and ubiquitous availability of these tools, now is the time to empower everyone who needs applications to start building them. These new developers are what can be called citizen developers, as they have day jobs and knowledge of various domains. These are the best people to understand what they want and need to build.
For example, if a user needs an application that reads from a website and filters out the information they need, they can use an open-source tool such as Apache NiFi that lets them drag and drop components to build a flow of actions that completes the desired task. In one instance, the user may need a weather forecast sent as an email every hour. This can be done by adding a few components to a page and linking them in the order of operations required.
Figure 2: A simple data flow built with low-code techniques
For some, this may be too difficult, and in that case, there are Software-as-a-Service (SaaS) tools that make this even easier by providing pre-built use cases that require following a wizard and setting a few parameters. An example of this type of system is discussed in the next section. There are many companies building low-code environments in the cloud to make the job of citizen developers even easier.
Citizen Streaming Engineer: An Example
A citizen streaming engineer is a non-professional developer who builds and deploys streaming data applications. They use low-code and no-code platforms to create applications that collect, process, and analyze real-time data. Citizen streaming engineers are typically business users who have a strong understanding of the data and the business needs. They can use low and no-code platforms to build applications that meet these needs without the need for professional developers.
The role of a citizen streaming engineer is growing in importance as the amount of data that organizations collect continues to grow. Citizen streaming engineers can help organizations gain value from this data by building applications that can process and analyze it in real time.
Here are some of the key skills required for a citizen streaming engineer:
- Data analysis skills
- Business acumen
- Problem-solving skills
- Critical thinking skills
- The ability to work with technology
- Communication skills
For this example, one factor to consider before assigning this application to an experienced developer or choosing a citizen engineer to do it is based on the use case and its data.
I have put together a chart to make it easy to decide who should do it and how. The easiest way to determine if a use case can be solved with low code is to examine the sources and sinks involved with the data. As we can see, if you can keep it simple and to a single source, then low code is the way to go.
In summary, everyone needs to be a developer to get things moving, but by working together as a community, we can get the right things done without burning out. The future for developers is bright. The demand for developers is growing rapidly with no end in sight, regardless of temporary economic downturns. However, the future of development is also changing. The rise of cloud computing, fast data, and AI is creating new opportunities for developers. Developers who can adapt to these changes will be in high demand even when everyone can develop; those who thrive in change and challenge will always be needed.
- "Citizen Streaming Engineer - A How To" by Tim Spann [presentation]
- "How to Create a Real-Time Scalable Streaming App Using Apache NiFi, Apache Pulsar, and Apache Flink SQL" by Tim Spann
- "Transit Watch: Real-Time Feeds" by Tim Spann
This is an article from DZone's 2023 Development at Scale Trend Report.
Read the Report
Opinions expressed by DZone contributors are their own.