{"id":71,"date":"2016-09-11T21:01:46","date_gmt":"2016-09-12T01:01:46","guid":{"rendered":"http:\/\/langstonsoftware.com\/?p=71"},"modified":"2024-01-30T19:09:17","modified_gmt":"2024-01-31T00:09:17","slug":"how-much-sql-is-really-necessary-nowadays","status":"publish","type":"post","link":"https:\/\/langstonsoftware.com\/2016\/09\/11\/how-much-sql-is-really-necessary-nowadays\/","title":{"rendered":"How much SQL is really necessary nowadays?"},"content":{"rendered":"

I’ve heard variants of this question every year of my professional career from aspiring developers and students of computer science. Unfortunately, the real answer is the most common in all software development.<\/p>\n

It depends.<\/strong><\/p>\n

SQL and database technologies it powers is a tool that can be (mis)applied in many places in some careers and never in others. There are developers whose whole career is in SQL as database developers, and others who never touch any database, writing algorithms, to files or APIs. Full stack web developers like myself have two additional issues to conflate and confuse the issue. <\/p>\n

ORMs (Object Relational Mapper) and NoSQL databases. While ORMs can effectively be used to do both all of the queries and migrations, the scripts you create to upgrade a database schema from one version to the next, they often are not used in professional settings, or at least not for all purposes, requiring hand crafted queries or schema change scripts. NoSQL is a valid technology for some problems, particularly when the consistency or relationships between data points are not as important as the speed of retrieval or writing. However in enterprise settings that often is not the case, since financial data must be both consistent and be stored in a way for a business to gain relational insights. <\/p>\n

Case Study: Me<\/strong><\/p>\n

I’ve written line-of-business, software-as-a-service, web applications in C#. I took a single SQL course in college. I thought it was well worth my time in my career.<\/p>\n

Project 1<\/strong><\/p>\n

We wrote a lot of SQL. Stored Procedures were the preferred data access method, in part because we needed our SQL queries to be blindingly fast (large volume e-commerce) and in part because our SQL stack was very cutting edge and we wanted to leverage it. Almost every query to show the results of a page load required a join across 3 tables with an aggregate result, as every page was basically functioned as some form of on demand reporting. Database migrations were usually, but not always automatically generated by a third party application.<\/p>\n

Project 2<\/strong><\/p>\n

I almost never write a SQL query that goes into production, although I do write schema changes since we handcraft all our migrations. I do write relatively simple SQL queries during development to get an overview of the database. Twice a year I’ll write a view that does actual on demand reporting with multiple joins and an aggregate, but I still need as much knowledge to do so as I did when I was writing them every week during project #1.<\/p>\n

But what about your career?<\/strong><\/p>\n

What do you want to do? If you’ve stumbled across this blog because you are in or are looking to pursue a Explorations in Software Engineering career, I’d say some investment in learning SQL is well worth the time. There is some chance you’ll not use it, but a much larger chance you will. More importantly you’ll understand better when to use it and the other tools and techniques you learn across your career.<\/p>\n

If you’re looking into joining a different part of the programming field, ask developers in those industries what tools they use. Game programmers might be writing things in different tools than finance algorithm developers. If you don’t know what part of the field you’re interested in, start trying hobby projects in as many as you can. It is going to be a large part of your career experience, so don’t take the question lightly.<\/p>\n

Good luck and as always, leave any questions in the comments.<\/p>\n","protected":false},"excerpt":{"rendered":"

I’ve heard variants of this question every year of my professional career from aspiring developers and students of computer science. Unfortunately, the real answer is the most common in all software development. It depends. SQL and database technologies it powers is a tool that can be (mis)applied in many places in some careers and never …<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"nf_dc_page":"","jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":true,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false},"version":2}},"categories":[4],"tags":[],"class_list":["post-71","post","type-post","status-publish","format-standard","hentry","category-sql"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p6Os38-19","_links":{"self":[{"href":"https:\/\/langstonsoftware.com\/wp-json\/wp\/v2\/posts\/71"}],"collection":[{"href":"https:\/\/langstonsoftware.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/langstonsoftware.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/langstonsoftware.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/langstonsoftware.com\/wp-json\/wp\/v2\/comments?post=71"}],"version-history":[{"count":2,"href":"https:\/\/langstonsoftware.com\/wp-json\/wp\/v2\/posts\/71\/revisions"}],"predecessor-version":[{"id":75,"href":"https:\/\/langstonsoftware.com\/wp-json\/wp\/v2\/posts\/71\/revisions\/75"}],"wp:attachment":[{"href":"https:\/\/langstonsoftware.com\/wp-json\/wp\/v2\/media?parent=71"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/langstonsoftware.com\/wp-json\/wp\/v2\/categories?post=71"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/langstonsoftware.com\/wp-json\/wp\/v2\/tags?post=71"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}