Some Useful Terms to Know When Working With a Developer
Some Useful Terms to Know When Working With a Developer
New to tech? Working with developers? Exploring new topics? This list can help.
Join the DZone community and get the full member experience.Join For Free
Here’s a handy list of commonly-used terms, acronyms, and buzzwords that you’ll need to know if working with (or within) the world of software development, digital design, and open source. Whether you are a business user needing to understand the meaning of the tools, technologies, and methodologies used by your IT department, or a developer exploring new topics, tutorials, and documentation, this will help you get there faster!
A technical project management methodology with a philosophy centered on enabling rapid product iteration to improve both time-to-market and market responsiveness.
While a significant industry has grown around Agile with instituted norms, conventions, and disciplines, the Agile philosophy only describes four binary prioritizations:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
The antithesis to Agile is Waterfall. In fact, Waterfall implicitly reverses the above prioritizations. Enterprise organizations undergoing digital transformation typically adopt an Agile planning approach in isolation from pre-existing Waterfall strategies.
Here is a glossary of Agile terms.
Apache Beam is an open-source unified programming model to define and execute data processing pipelines, including ETL, batch, and stream (continuous) processing. Beam pipelines are defined using one of the provided SDKs and executed in one of the Beam’s supported runners (distributed processing back-ends), including Apache Apex, Apache Flink, Apache Gearpump (incubating), Apache Samza, Apache Spark, and Google Cloud Dataflow.
Apache Kafka is an open-source stream-processing software platform written in Scala and Java. The project aims to provide a unified, high-throughput, low-latency platform for handling real-time data feeds. Its storage layer is essentially a “massively scalable pub/sub message queue designed as a distributed transaction log,” making it highly valuable for enterprise infrastructures to process streaming data.
An acronym standing for Application Programming Interface. An API is essentially a contract. Systems are composed of groups of logic. Whenever a group of logic has a discrete boundary, a predefined way to interact with that group of logic must be exposed. These logic groupings may be in the form of Components, Services, Classes, Modules, Lambdas, Middleware, Plugins, Functions, or Servers. These words can also mean different things in different contexts, but they are always groups of logic. In every case, an API is required to allow for coordination between logic groups. In an enterprise engagement context, developers would need to know relevant APIs in order to integrate a solution against pre-existing technologies in the business.
API access controls and gateways
Essential technical security layers that are responsible for allowing or denying access based on authorized identity, quotas, geographical origin, and any other aspects as specified by business or legal policy.
A cloud hosting platform owned by Amazon.
A cloud hosting platform owned by Microsoft.
Generally the server-side. Depending on the context, may also refer to the logic that is further back than logic close to the front. For instance, back end could refer to a Node.js implementation when spoken of in the context of a React + Node implementation, whereas it may refer to a legacy system when spoken of in the context of a Node implementation built atop a client’s legacy API.
A bug refers to when part of an application is broken. More generally, it’s any behavior that wasn’t intended and isn’t wanted by the business.
Business Intelligence. A key focus for enterprise organizations undergoing digital transformation. Requires the integration of tools, processes, workflows, and cultural changes in order to provide a technology backbone that allows for the collection, analysis, and reporting of Big Data such that it informs the decision making and strategic outcomes.
In order to allow collaboration with minimal conflict, developer teams use a version control system. A commit can be thought of as a snapshot of development work that a developer creates in order to add code to a project. These snapshots are linked together so that the entire development history of the project is available. This allows for a project to be distributed across people — all one needs to do is keep the commits synchronized. A remote repository is typically the source of truth for all commits. Developers will push their commits to this repository and pull others commits from it.
Someone who regularly commits to a remote repository. See Commit.
An isolated environment that provides a discrete boundary around code. Containers support the decomposition of functionality into microservices by providing a lightweight way to isolate each service — essentially sandboxing it from other services to reduce risk. Services could be deployed on multiples virtual machines or on multiple bare metal machines to achieve the same effect, but this would be vastly more expensive. Enterprise organizations undergoing digital transformation will typically use containers to deploy their microservices. Docker is the tool of choice for container development, while Kubernetes is the winning platform for the deployment of containers.
Continuous Integration/Continuous Deployment. When used in a discussion, this acronym relates to the tooling required to enable incremental changes to a code base (integration) and incremental deployments of that code base. This tooling is essential for projects that have adopted an Agile approach.
A system that has been carved up into logical pieces which are independently deployed. These lead to the need for communication between parts of the system over a network, and the need to think differently as to how state is managed. The microservices architecture is a common example of a distributed system.
In a distributed system, there must necessarily be communication between parts of that system. In order to effectively manage a system, diagnostic tooling is essential. A centralized system (often referred to as a monolith) can be inspected with relative ease, whereas a decentralized system is communicating state and causing chain reactions over a distance. Distributed tracing provides holistic insights into the interactions of different parts of a distributed system.
At a basic level, integrating an awareness of user experience (UX) into every aspect of the business. The idea behind design thinking is to inject design intelligence into an organization by connecting the organization more closely with user feedback, design principles, and prototyping. Design thinking closely aligns with Agile planning. Enterprises undergoing digital transformation may move their culture toward design thinking in order to improve their understanding of the market and build more valuable products.
A methodology arising from the intersection of multiple cultures, primarily UX and Agile development. Part of the design thinking movement, design sprints follow the same methodology as a typical Agile sprint at a holistic planning level whilst mandating a five-phase process that centers around rapid exploration and iteration on user feedback within each sprint. The term “design” here has less to do with visual design and far more to do with Product Design and UX.
A portmanteau of “development” and “operations.” A person in the DevOps role is responsible for automating, configuring, and managing the deployment of a system. DevOps are important to Agile development because traditional operations (or SysAdmins) are geared towards the more traditional Waterflow workflows. That is, they are used to Big Bang deployments, rather than the incremental iteration required by Agile development. The only way to keep up with the speed of development that Agile produces is to automate operations, but automation tends to require a developer mindset, hence DevOps.
Once operations has been automated, due to a lack of context, security teams typically become the next bottleneck in enterprise operations. While DevOps seeks to remove the logistical barriers typically caused by traditional operations (or SysAdmin) workflows, DevSecOps also represents a restructuring away from a siloed security team, and instead puts the security onus on DevOps.
A container management tool.
Depending on the reference point, this can either refer to the code used to build the UI (client-side code), or to the code that runs at the “front of the back” — that is, server-side code that is public facing. More commonly the former, but enterprise clients can sometimes use it to refer to the latter. To further explain by association, the client-side code would be built in React, whereas server-side would be built in Node.js.
Concerns core competencies with all (or most) parts of an application stack. For instance, one who is proficient in both back end and front end programming (in the sense of client and server side) may be referred to as full stack. The term is subjective, however. Client/server ability may not be enough to be considered full stack by some, who may throw in DB admin, DevOps, or CSS requirements in order to be considered “real” full stack.
InnerSource is the use of best-practice open-source methods inside your organization to get some of the advantages of the collaborative way of building open source software. It brings a change of culture to the business, allowing employees to free up their work through transparency and cross-collaboration. Speed, quality, and typically much happier developers result.
Hypertext Markup Language. The structural language that defines every web page on the internet.
Java Virtual Machine. The JVM is an execution environment for the Java language, as well as other languages that are built on top of Java. It was intended as an all-encompassing solution and tends to have an inward-looking ecosystem. There are very few (if any) Enterprise environments that don’t use the JVM. Both legacy code and new initiatives may be written in languages that run on the JVM. However nearForm expertise is in languages that are not part of the JVM ecosystem. The languages nearForm specialize in are considered by some to allow for faster iteration (and therefore more closely align with Agile) than the languages supported by the JVM.
A dynamic programming language that is used for both browser programming and Node.js programming. Dynamic here means it can understand code straight away and run it (that is, it can read and act out a script), whereas compiled languages must first go through a transformational process that turns them binary code that is executed independently. This dynamic aspect allows for a rapid development feedback loop versus compiled languages.
An extremely popular Container deployment platform. The DevOps juggernaut that is Kubernetes seems unstoppable. We’ve been using it longer than most, and it’s our de-facto standard for customer deployments, whether stock, AKS, EKS, or OpenShift. However, it’s not the solution to every problem, and there are many use cases where a serverless approach may be more appropriate.
Keras is a high-level neural networks API, written in Python and capable of running on top of TensorFlow, CNTK, or Theano. It was developed with a focus on enabling fast experimentation.
A portmanteau of “middle” and “software.” Every technical product has a software stack. Middleware is an independent piece of logic that is designed to be inserted somewhere in the middle of that stack. In a Node.js context, middleware is typically associated with web frameworks and supply generic/shared functionality for web-facing products.
A distributed architectural approach centering around the division of logic into business domains that correspond to logic deployed in individual processes. This is opposed to centralizing all logic into one process (monolith) or a small number of processes (service-oriented architecture/coarse-grained services). One reason for using microservices is to isolate risk. If functionality is grouped into one process, the risk of 100 percent malfunction is high. If functionality is divided across many independently deployed services, failure is isolated only to a small portion of the product. Another reason is it allows for an organizational transformation through de-siloing. By grouping functionality into domains, enterprise organizations can gradually restructure a few very homogenous teams into many small cross-discipline specialist teams.
For these (and other) reasons, enterprise organizations undergoing digital transformation typically choose a microservices architecture. The trade-off of microservices is, in exchange for reducing development maintenance overhead, it adds operational complexity — which drives a need for DevOps.
Minimum Viable Product. When following an Agile methodology, the goal is to get the product to the market as soon as possible, and then use market feedback to iterate upon the product. In order to find the fastest path to market, the product must be defined with the minimum amount of functionality and features required for it to meet the business case. Due to stakeholder politics, enterprise companies tend to find it challenging to commit to an MVP, so there is usually pressure on the design and development teams to extend the scope of the product. This, in turn, causes delays which then causes friction between design/developers and the business.
Open innovation is a term used to promote a progressive mindset toward sustainable innovation that runs counter to the "not invented here" silo mentality of traditional corporate R&D. Embracing and adopting open innovation is to build from open and in the open – building from open source software (OSS) and hardware; being open to new ideas, with open collaboration across the organization and with external parties; and with a more open approach to continuous user-centric development.
Throughout the years, several factors have emerged that paved the way for open innovation:
- The increasing availability and mobility of skilled workers
- The growth of the venture capital market
- External options for ideas sitting on the shelf
- The increasing capability of external suppliers
These four factors have resulted in a new market of knowledge. Knowledge is no longer proprietary to the company. It resides in employees, suppliers, customers, competitors, and universities.
Open-Source Software (OSS)
A competing philosophy against proprietary software. Popularized by the Linux operating system, one of the first OSS projects, this is an approach to development where intellectual property is publicly developed. While this seems counterintuitive, it allows for alternative business models, encourages pro-bono collaboration from industry-leading engineers, and when properly wielded, can have powerful marketing value. Enterprises undergoing digital transformation typically adopt an OSS consumption strategy because it allows them to quickly use free, publicly available IP to rapidly grow their product. The trade-off is that if the organization’s in-house talent does not have the skill level to modify every part of the OSS products they are using. It can cause maintenance friction and potentially lead to security vulnerabilities.
Progressive Web Apps are web applications that conform to the PWA checklist (https://developers.google.com/web/progressive-web-apps/checklist). Essentially an offline-first responsive web application that can be also added as a native application on mobile and desktop. Adding applications natively can be good for branding, whilst developing a one web application (rather than one web app and one native app) drastically cuts the costs of a dual approach.
PyTorch is an open-source machine learning library for Python, based on Torch, used for applications such as natural language processing. It is primarily developed by Facebook’s artificial intelligence research group, and Uber’s “Pyro” software for probabilistic programming is built on it.
A very popular front end (UI) framework.
A hosted application environment using the Function as a Service (FaaS) paradigm. It requires logic to be broken into isolated single functions (the smallest feasible unit of functionality, smaller than microservices) that are then independently deployed into a ready-made distributed system. The operational overhead for serverless deployment is very low, since it’s entirely managed by the serverless provider. However, fees are calculated on resource usage, and the compute cost is higher relative to managed deployments. Serverless can provide an even higher level of development iteration speed, but it lacks some of the flexibility of self-managed deployments, and almost always needs to work in tandem with a more traditional solution due to the stateless quality of serverless functions. Enterprise organizations may consider adopting serverless hosting as a counter-option to training and hiring system admin/operations/DevOps staff.
A sprint is an Agile term. It is a reoccurring block of time where development work is done. Prioritization of tasks for the next sprint and a retrospective of the current sprint is performed at the end (or beginning) of each sprint.
Twelve-factor application technology
An application (or system, or product) that he been built using conventions that cover the twelve technical areas of product development, as specified by the twelve-factor app document (https://12factor.net/). All modern development should broadly comply with the twelve-factor methodology.
User interface. In a web development context, the visual pieces of the site that we click, touch, or otherwise interact with.
User eXperience. Concerns the ergonomics of user interaction with an application and the behavior of an application. UX is applied to both make it easy for a user to achieve their objectives and to guide the user into fulfilling business objectives. Due to the complexity of predicting human behavior, UX starts with basic assumptions and is then continuously iterated upon and improved based on analysis of user interaction.
A workflow whereby a code base is developed in many tiny phases, called commits, which can be thought as snapshots, or versions. The code base can be returned to any former version of itself due to this approach. Version control requires a version control system. Git is the VHS of version control systems.
Virtual Machine (VM)
A machine that is simulated using software. This allows one “real” machine (known as bare metal), to run many virtual machines. Cloud offerings such as AWS and Azure consist of thousands of virtual machines.
A front end (UI) framework that is rising in popularity.
An outline of a page/application structure for a particular part of the user journey. These are typically used in storyboarding user journeys and to convey layout/semantic structure to the development team.
A traditional technical project management methodology. It involves abstractly defining the entire product up-front, and has several phases which are executed in sequential order. For instance, full analysis and documentation of business rules and state management must be defined before designing an architecture. While this seems intuitive, it’s a seductive oversimplification of the real world and leads to rigidity that can stifle innovation and lead to friction and overhead. Waterfall also tends to propagate the misconception that a product can be “finished,” whereas Agile acknowledges and supports the notion that competing in the market requires constant evolution.
Published at DZone with permission of David Mark Clements , DZone MVB. See the original article here.
Opinions expressed by DZone contributors are their own.