What Developers Need to Know About Databases
In order to be proficient with databases, developers need to understand SQL, automated frameworks, performance, security, and more
Join the DZone community and get the full member experience.Join For Free
To gather insights on the state of databases today and their future, we spoke to 27 executives at 23 companies who are involved in the creation and maintenance of databases.
We asked these executives, "What skills do developers need to be proficient with databases?" Here's what they told us:
- Understand the data model and the end goal of the application so that you can choose the right database. How will other processes and tooling work around the database to shorten the development cycle and enable the faster development of features?
- For me, it’s skill sets. Databases are not just shrink-wrapped software that’s deployed and then looked after by a DBA. Databases are now part of the DevOps fabric. It takes a different skill set to get business value from them these days. You have to be part programmer, part automator, part infrastructure admin, and part database admin. That’s a unicorn these days.
Performance. What are you doing when the table gets large? Can you write a better query to be more selective? Schema structure, foreign keys which introduce coupling. How to write microservices for key, coupling, and structure? Persist object graphs. Store inside RDBMS. Foreign key references from one object tree to another can cause coupling problems.
- Basic awareness of app areas and a high level of security requirements. Knowing the regulations in any given vertical. Encryption standards. Masking standards.
- A willingness to learn new technologies! Even if you never leave Postgres for instance, there’s a ton of stuff in there that falls outside the classical SQL model, and learning how to use it will improve your craft. But don’t be afraid to leave your comfort zone! If you see a new database that looks crazy and a distribution is available, try it out! Even if you don’t find it useful, you’ll be better for the experience. A good handle on distributed systems is going to become more of a requirement going forward. Beyond that, a critical eye and an understanding of the tradeoffs you make with every decision. Work with product management to understand the business need.
- Don’t focus too much on the technology. Focus on the use case and the long term for apps today and the future. Understand and define the business case.
- Find a problem and figure out how to solve it. Learn by making mistakes. I received a dump of Apache logs and was asked what we could learn from them. I did a terrible job but learned a lot. Find a problem to solve and don’t be afraid to fail. Understand the basic concepts of distributed systems – what’s possible and what isn’t. What’s easy and what isn’t.
- Architect skills. Developers must be architects these days. Understand the big picture of mapping. Reinvent the art of re-evaluating technology. Everything changes so fast the fundamentals you learned five or 10 years ago may no longer be applicable. Something counter to your intuition could work because the underlying facts have changed. Modern networks have reduced latency from tens or hundreds of milliseconds to less than one millisecond. Bandwidth is 100-times greater. Try to find the next set of standards. There are many ways of doing things.
- Memory is the new disc. Think memory first. Have a multi-cloud strategy. Your data grid will act as a data broker unifying data from multiple infrastructures, multiple sources, and making them highly portable.
- Fundamental scalable apps with concurrency using a Scala, Spark infrastructure.
- There are several skills crucial to database management, the least of them being coding knowledge — despite developers’ first instincts. The first is to be organized in your tracking. It’s essential to get a good baseline for the unique KPIs for your specific DBMS. Beyond the basics of querying execution time, each platform often has its own metrics you’ll want to keep an eye on for performance tuning. The second is networking. As documentation can be limited, developers often need to reach out to those colleagues with long histories of working with the database platform. They’ll know the ins and outs of the multiple generations and version updates to best remedy the issue at hand.
- I believe for developers to be proficient with databases they need to have the capability to create efficient data/graph models and queries.
What do you think developers need to know to be proficient working with databases?
Here’s who we talked to:
- Emma McGrattan, S.V.P. of Engineering, Actian
- Zack Kendra, Principal Software Engineer, Blue Medora
- Subra Ramesh, VP of Products and Engineering, Dataguise
- Robert Reeves, Co-founder and CTO and Ben Gellar, VP of Marketing, Datical
- Peter Smails, VP of Marketing and Business Development and Shalabh Goyal, Director of Product, Datos IO
- Anders Wallgren, CTO and Avantika Mathur, Project Manager, Electric Cloud
- Lucas Vogel, Founder, Endpoint Systems
- Yu Xu, CEO, TigerGraph
- Avinash Lakshman, CEO, Hedvig
- Matthias Funke, Director, Offering Manager, Hybrid Data Management, IBM
- Vicky Harp, Senior Product Manager, IDERA
- Ben Bromhead, CTO, Instaclustr
- Julie Lockner, Global Product Marketing, Data Platforms, InterSystems
- Amit Vij, CEO and Co-founder, Kinetica
- Anoop Dawar, V.P. Product Marketing and Management, MapR
- Shane Johnson, Senior Director of Product Marketing, MariaDB
- Derek Smith, CEO and Sean Cavanaugh, Director of Sales, Naveego
- Philip Rathle, V.P. Products, Neo4j
- Ariff Kassam, V.P. Products, NuoDB
- William Hardie, V.P. Oracle Database Product Management, Oracle
- Kate Duggan, Marketing Manager, Redgate Software Ltd.
- Syed Rasheed, Director Solutions Marketing Middleware Technologies, Red Hat
- John Hugg, Founding Engineer, VoltDB
- Milt Reder, V.P. of Engineering, Yet Analytics
Opinions expressed by DZone contributors are their own.