Databases in Coding Schools, Yay or Nay?
Tags: database, webdev, beginners, discuss
Published: 2020-10-05 16:07:59

Over the last several months, I’ve been doing qualitative research into the coding school / developer education space. Specifically investigating __if, how, and why coding programs incorporate databases into their curriculum__. While there were of course some differences based on location, size, and emphasis, there were also a few interesting commonalities. I thought I’d share my findings, see if the community has additional insight, and highlight where HarperDB might fit into the mix. _(Note: this is related to frontend and full stack programs since backend programs focus almost entirely on databases.)_

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/0ywyt0u4inkh254duspa.jpg)

#Findings
To conduct this research I reached out to numerous coding instructors, educators, and students across the U.S. and Canada. While many people were respectively too busy, several folks were generous enough to share a bit of insight via email or hop on a call to have a more in depth discussion (if those folks are reading this - thanks again for your help!). I learned the following insights: 

* __In general, most coding bootcamps, programs, or classes do touch on databases.__

The extent or time spent on databases as well as the variety of databases included depends on the length of the program as well as size - _no surprise here_. While the larger programs might have more time to touch on databases, they may not have the flexibility to deviate from or influence the course catalog. Whereas smaller programs tend to have more flexibility to switch up the curriculum instead of having to “cut through red tape” to make a change. 

* __Generally the same few databases were included in coding curriculums across the board, depending on the focus of the program and location: MongoDB, PostgreSQL, and SQLite.__

Smaller / shorter programs that don’t require modeling tend to use MongoDB, while larger / longer programs tend to use PostgreSQL because you can do more with it. 

* __Main requirements or road blocks of incorporating databases or making changes to the curriculum? What influences which databases are included?__

One of my favorite quotes was, “If something is pretty hot out in the wild, it will find its way into a classroom pretty quickly.” However, some of the larger or more established schools have more restrictions when it comes to making changes. One lead educator at an established school mentioned that these programs are licensed by the state they're in, and changing them can be expensive and exhausting. Instructors can teach certain things "off the books," but if they don't teach what’s in the course catalog they risk being fined or sued. 

Also not surprising, some of the smaller schools or full-stack focused programs (as opposed to strictly relational for example) have a lot more flexibility with what databases they teach and when they want to switch it up. (But there were some outliers here as well!) __One major commonality in how schools choose which database to teach is the local job market, as well as whichever tool will enable instructors to get from point A to point B in the smoothest way possible__ (i.e. no old-school clunky systems that take forever to install and learn!). 

An instructor from another well-known program said “Our curriculum is flexible, we’re always changing technologies and structure- we adjust if the current is going elsewhere. We’re currently using Mongo because so many new companies are using NoSQL, but I still see the importance of SQL and can see value in including it as well.” Yet another coding instructor stated, “The main requirements for incorporating new databases is easy to follow documentation and examples of it working in a full stack app using Python or some other language. We use technologies as long as they have value in the job search.” 

####_Key takeaways here_: 
If it were up to teachers, the curriculum would probably be updated every couple months or so. (But this can certainly be a complicated process, and many programs only make major changes every couple years). Generally the databases included in coding curriculums are dependent on current “trends” (with mixed reviews on who determines these trends), ease of use, and functionality relative to the real world. 


#Why HarperDB Could be a Fit for Coding Schools

* User friendly, flexible, intuitive 
* Quick & easy - up and running in minutes
* Free managed service w/ HarperDB Cloud
* SQL & NoSQL in a single product - save time, best of both worlds
* Hooks & extensions, real world examples & SDK’s
* Management Studio / GUI 
* Language agnostic

__“I will definitely be covering Harper in my college class. The 'blending' of SQL and NoSQL is cool. I like Mongo-style NoSQL database architectures, but prefer SQL statements for CRUD. It's a great way for the students to be exposed to both styles.”__
-_Manav, Full Stack Developer & Instructor_

The main reason I embarked on this research journey was because several HarperDB users came back to our team and said, “Wow, I could actually see this being a great tool for coding schools / new developers.” Of course I’m writing this because I now understand why this is true, and I’m glad that I was able to make some awesome connections along the way! 

It seems only fair to start with a feature that really makes HarperDB stand out among others - NoSQL and SQL functionality, including joins, in a single product (whereas other solutions might include integration headaches and data duplication just to achieve SQL capabilities). Our dynamic schema and storage algorithm enable HarperDB to ingest any type of data at scale. So for example, you can ingest NoSQL data and run SQL queries on it immediately. For instructors and students that don’t have much time to spend teaching or learning several systems, __you can really cover all your bases with HarperDB__. Are you a SQL only program? No problem! HarperDB follows ANSI SQL standard enabling SQL on JSON, and if students decide to dabble with NoSQL on their own time they’ll already be equipped with the right tool. 

HarperDB was built by developers for developers. __Our goal is to literally be the most user friendly database out there__ - and it was consistently designed with this in mind. Users can be up and running in minutes; [HarperDB Cloud](https://harperdb.io/product/harperdb-cloud/?utm_source=devto&utm_medium=margopost) is managed and hosted so you won’t have to deal with big classes having issues with installation. HarperDB has clear documentation, video tutorials, and tangible developer examples to guide the way. The intuitive [Management Studio](https://studio.harperdb.io/sign-up?utm_source=devtomargo&utm_medium=content&utm_campaign=codingschools) enables users to install, design, cluster, and manage databases without writing a line of code in one sleek interface. You can insert JSON, CSVs, or via SQL with a simple to use, single endpoint REST API. Code examples are available in the Studio in most languages. Additionally, our team loves to hear from users, and support is consistently available if you get stuck, have questions or feedback, or simply want to connect with the HarperDB community. 

####Some additional comments from educators on HarperDB:

* “I really enjoy how HarperDB docs are structured, I could see this being a no-brainer for someone just learning to code.”

* “I could see the HarperDB advantage of not having to change much of the program to cover what we do, no intermediary necessary.” 

* “In theory we could teach with this and expand upon the aspects we teach with our current database.“

* “If HarperDB has parallels to Mongo and is more approachable, maybe this could be an alternative… a good way to show what a REST is, then build your own API, and incorporate SQL as needed.”

* “We are always trying to expand our offerings to students, especially given the expansion of cloud services across the board.”

* “A pain point from students is when they split between two technologies between SQL/NoSQL.”

* “I’m a big fan of hosted and free tier. Code examples and packages with programming languages are helpful as well.” 

#Comparisons in the Market 

A quick note on how HarperDB compares to some of the databases being taught in the classroom today: 

__MongoDB__: Mongo is great for certain use cases, but we found that HarperDB is 37.9x faster at less than 1/2 the price. HarperDB has a native REST API, supports SQL on JSON, and can be easier to use and manage. See the [benchmark here](https://harperdb.io/harperdb-vs-mongodb/?utm_source=devtomargo&utm_medium=content&utm_campaign=codingschools).

__PostgreSQL__: HarperDB is more flexible than PostgreSQL, which is a great database, but HarperDB has simplified much of the work on installation and configuration. HarperDB is allowing developers from relational backgrounds to use their existing knowledge with SQL with a database that also allows their team to use NoSQL from the same data model. 

__SQLite__: SQLite is a good product but is not sufficient for high volume and high transactions. [The benchmark](https://harperdb.io/product/benchmarks/?utm_source=devto&utm_medium=margopost) found that HarperDB outperformed SQLite on all test cases, and was 581% faster on average.

#So, is it time to try something new?

Change is not for everyone, and I’m a big believer of the adage “if it ain't broke don't fix it.” However, let’s remember that this is the tech industry, and it’s important to stay ahead of the curve, continuously introducing the modern solutions that have greater functionality in a smaller package. There may be some barriers to change, but there’s almost always a loophole as well.

For example, it seems that while some coding schools may have predetermined databases outlined in the catalog, __the students still have the freedom to use any technology they’d like for their projects__ as long as they follow the general guidelines. For those schools that tend to be more flexible or open minded, __it’s up the individual instructor or curriculum developer’s discretion as to when they incorporate a new database in their teachings__. Of course there are certain use cases where MongoDB or PostgreSQL might be the better choice, but when it comes to things like quick and easy install, rapid app development, user-friendly resources, etc., I can see why some of these instructors and students are giving HarperDB a shot in the classroom. 

My research indicated that __as students search for jobs, the market is highly skills focused and not as focused on experience with a specific tool or database, and HarperDB is enabling you to learn more skills with less tools__. 

Lastly, if I haven’t sold you yet on trying something new, a couple of the students that I connected with said that incorporating more classes on databases in general would have been helpful when they were in coding school. Now, we know that some of these programs are too short and simply don’t have the time to add material. However if you were going to add even one day on databases, it seems you would want to go with a beginner friendly database that has diverse / hybrid functionality instead of trying to teach three different systems in one day! _What are your thoughts?_

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/bjkdsw26eoo6h23f24am.jpg)

PS- Looking for resources on learning how to code outside of coding school? Check out [the best places to learn to code for free](https://learntocodewith.me/posts/code-for-free/) or [Juni's best Javascript projects for kids](https://junilearning.com/blog/guide/best-javascript-projects-for-kids/).