Hi Reddit, I'm Mark Porter.

After I joined MongoDB in July 2020, people have often asked me "Aren’t you one of the SQL folks? Why would one of you join MongoDB?"

For me, since I started programming before I was a teenager, it was always about technical puzzles. Then when I got into business, it became about delighting customers; SQL and relational tech were just a means to that end. Databases are indeed amazing because of the promises they make around data in terms of consistency, ease of use, and durability that they make. A couple years ago, I sat with one of my old relational friends, before MongoDB was even a gleam in my eye, and we decided that 30+ years into our careers, databases were still hard to use by operators and developers, but especially developers (though cloud has made operations a lot easier). They were also still unpredictable and didn’t defend themselves against misuse. Not only that, but scalability and distribution were bolted on as afterthoughts rather than core elements of the product - making scaling either difficult or impractical - and always brittle.

In fact, my biggest frustration during the Amazon Aurora PostgreSQL project was how hemmed in we were. We had SQL constraining us on the top, with ORMs on top of that - leaving it hard to use and no real way to fix that. Who wants to embed obtuse SQL in their code? The PostgreSQL community (while amazing and inspiring), further constrained us by not letting us change scale out, transactions, or anything else of substance. Compatibility was sacrosanct. Not only that, but the PostgreSQL community typically takes 2-3 years to accept any architectural changes into the code base, and every one is a negotiation. So at Amazon, for Aurora (both for MySQL and PostgreSQL), all we could really do was innovate on the storage layer - mostly because it was just so very broken and not scalable in the way we envisioned. The marketing saying that "Amazon Aurora is a new database" is not quite true - it's a combination of an amazing distributed, replicated, fast storage system glued onto the bottom of PostgreSQL and into the middle of MySQL.

As I got to know MongoDB, I realized that MongoDB has very few constraints. We are the stewards of the language interfaces so that we can merge seamlessly with every language - people program MongoDB and Realm databases using their native data structures, not by programming in a different language within C, Java, Node, Python, etc. We are the custodians of the drivers so we can seamlessly implement failover, scaled reads/writes, and client-side encryption. The server tech is natively built from the ground up to offer scale and distribution - you can run a single MongoDB cluster on all three major cloud providers if you want. You can even run it on your laptop or in your own data center, building you a much better ramp from the data center to the cloud. The final straw was that I saw MongoDB’s vision for a full data platform via our Atlas cloud service. For example, we have integrated search directly into the cloud offering - no additional infra to stand up or manage. And we allow you to federate queries directly across your data lake and MongoDB, transparently, and even to age data into your data lake automatically and still use the same queries.

As a result of all this, I decided that the future of my career was to get back into databases and help build the best data platform for modern applications that I could; the one I’d been envisioning since I was at JPL working on storing science data on a 1MB microVax.

But that's enough for now - I'm excited to be here! Ask me anything!

PS: I have some of our senior engineers on standby in case I cannot handle your deep and detailed queries - I’m still only 6 months in ;).

PPS: Don't be a stranger, follow me and IM me at @MarkLovesTech.

PPPS: Verification

EDIT:

Thanks folks! This has been TERRIFIC. If you'd like me to do another one, please comment, ok? I'm done for right now, but me and my colleagues (who have been heroic with their help, and yes you know who you are, Naomi, Asya, Sebastian, Ben, etc!) will come back and answer all your questions later. And remember, you can always get me on u/MarkLovesTech or on Twitter at @ MarkLovesTech

Have a GREAT day and a wonderful weekend :-)

Mark

Comments: 754 • Responses: 83  • Date: 

mongodbdev523 karma

What are your thoughts on MongoDB’s continued relationship with ICE?

In June Dev (MongoDB CEO) published a letter to LinkedIn where he implored people “not to leave your humanity at the door when you come to work for MongoDB”, he then went on to paraphrase Martin Luther King “the ultimate tragedy is not the oppression & cruelty by bad people, but the silence & indifference of good people. I encourage all of you to be agents of change.”

It is now 8 months since this letter and MongoDB has not cancelled their contract with ICE. Were Dev’s words just empty platitudes?

MarkLovesTech404 karma

You know what, I’m not going to be able to spend time on this question in this AMA. It’s not really something I’m comfortable speaking ‘off the cuff’ about as it’s quite a serious issue. I’d love to follow up with you afterward and go deep on this.

Lucan237 karma

What are some signs an organization should migrate from a relational database to NoSQL?

MarkLovesTech203 karma

The biggest two reasons would be either operational (the need to have multiple copies of the data that are global distributed via replication and partitioned via sharding) or productivity/agility related: developing with drivers that allow you to treat your database objects the same as the objects in your code is incredibly powerful and allows much faster development speed.

There is so much more but I want to keep answering other folks questions - let's continue the discussion on r/mongodb and u/MarkLovesTech

jsabo121 karma

As someone with 20+ years of SQL, I find it confusing as hell to join up two different collections.

Any chance that this is going to become simpler in future versions?

MarkLovesTech30 karma

Have you had a look at $lookup? If you have feedback on that I'd love to hear it!

jsabo81 karma

Well, the first thing I see is a broken link to $lookup in the first paragraph, so there's that :)

(Sorry to whatever tech writer I just called out in front of your boss...)

One issue in general I have with the documentation-- it's great that you make it easy to set up the conditions, but it does require that I actually run through all these tests myself to see what the output looks like. Which in turn means I have to be logged in, set up all the test collections, then clean all that up afterwards.

Why not also show the result on the same page? If I could see what "inventory_docs" looked like without going through all those steps, that would be a lot clearer about how this works, and what I can expect to get back.

And as long as I've gone here, it would be super-helpful to see more side-by-side examples of how to do something in SQL vs MongoDB. I feel like SQL had a way flatter learning curve, and it's frustrating to have to resort to Stack Overflow for something I can do in seconds in SQL.

asya99921 karma

I think Mark meant to link to

https://docs.mongodb.com/manual/reference/operator/aggregation/lookup/

(as did the datalake docs page - bug report filed).

MarkLovesTech6 karma

Thanks, u/asya999!

FaradayEffect115 karma

What are your thoughts on AWS's DocumentDB?

Back when I used to admin a MongoDB cluster it took literally 12-24 hours to sync a replica. I tried an rsync disk level copy first so it wouldn't have to sync as much data, but it still took hours before the replica would be ready. I even tried MongoDB Atlas: once again it was hours before the replica was ready. This was significant issue for me.

I don't use Mongo anymore, but I experimented with DocumentDB a while back and I really liked how their compute and storage are decoupled so that you can add more replicas almost instantly rather than taking hours of sync time.

Has this been improved in Atlas yet? What is the story for folks self hosting Mongo?

MarkLovesTech138 karma

It's important to start by saying that DocumentDB is not based on MongoDB. It is based on Aurora PostgreSQL, a database with very different underlying architecture (which I was the GM of as well, when I was back at Amazon).

The reason DocumentDB can add replicas quickly is because they aren't replicating the data physically to different locations - Aurora PostgreSQL uses the Aurora storage system. While this feels great, the reality is that you’re now putting all your data at risk on a single shared storage system. With MongoDB, the storage is separate - and you can share it across data centers, availability zones, regions, and even cloud providers - and we manage it all for you.

When you have a new MongoDB replica node, it's a new separate physical host with its own copy of the data, which means it can be separated from the cluster and it will have the full database locally to it.

FaradayEffect54 karma

Hmmm, my understanding from reading the docs is the storage behind DocumentDB has 6 copies distributed across availability zones, its just decoupled from the frontend compute. That doesn't feel particularly risky to me.

I guess the trend that I'm seeing in several modern DB's is towards decoupling the compute and the storage layers more, so I'm curious in MongoDB has plans for something similar in the future.

MarkLovesTech74 karma

As to the six copies, yes, but it’s all one storage system. If that storage system goes down across the region (very unlikely, but still…) or if it has a corruption bug, you get your corrupted data faithfully copied across the entire system. Don’t get me wrong; Aurora Storage is amazing and an incredible innovation and applicable for many people and applications. We just think ours is better, more flexible, and safer :-) (and yes, my Aurora PostgreSQL team will downvote this to Hades!)

We have a deep dive analysis on DocumentDB compatibility, performance, and functionality here: https://www.mongodb.com/atlas-vs-amazon-documentdb.

In terms of your first question on initial sync we have recently made it faster and more robust for all users. Our latest 4.4 release included the ability for initial sync to automatically resume in the event of a node failure, for example.

I cannot confirm or deny that we have plans to decouple the compute and storage layers more :).

FaradayEffect19 karma

Nice, that is helpful info. I still believe at the end of the day the most important thing is the MongoDB query interface and API, and the developer productivity boost from it that I saw at the last startup I was at.

I was a MongoDB user during the switch to WiredTiger and saw that big performance leap forward. Looking forward to seeing if DocumentDB ends up inspiring another leap forward in terms of storage layer in MongoDB

MarkLovesTech5 karma

We love fair and open competition and indeed, having a competing document database (without the inadequate and confusing fake compatibility) is good for everybody.

It's not a secret that we aren't a fan of DocumentDB as the website has many falsehoods about compatibility which are confusing users every day.

But why listen to me? Why not listen to a customer using MongoDB for a cool and innovative financial system, from my friend Ran Landau, CTO of Splitit:

https://www.mongodb.com/blog/post/splitit-mongodb-atlas-racing-to-capture-global-opportunity

"You wouldn't buy a fake shirt. You wouldn't buy fake shoes. Why buy a fake database? MongoDB Atlas is the real thing."

FatherAnonymous3 karma

If that storage system goes down across the region (very unlikely, but still…)

Isn't this the purpose of aurora global?

MarkLovesTech6 karma

https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-global-database.html is only single writer. MongoDB Global Clusters let you take writes around the world, and let you control them via GDPR rules or whatever other data sovereignty requirements you may have.

https://docs.atlas.mongodb.com/global-clusters lets you have data routed to the correct zone based on GPDR (or other) rules you provide. They require developers to define single or multi-region Zones, where each zone supports write and read operations from geographically local shards.

Churchy_leFemme94 karma

Hi Mark! Thanks for doing this.

Can you talk about your experiences with impostor syndrome in any of your positions, and ways you were able to work past/around those feelings? I’m in my first job after university and the feeling is strong!

MarkLovesTech153 karma

Imposter Syndrome is real! Yes, in each role that I’ve taken on, I’ve become insecure about whether I was actually the person they thought they hired, on one hand. On the absolute side, I’ve often wondering if I’m up to the challenge. Over the years I’ve realized it’s completely natural and tried to turn it into being motivating rather than fearful. I consistently keep track of the top 3-5 ways I should improve (both in my family/personal and work life). Love to talk more about this!

Tisp3 karma

How do you keep track of those ? I guess what is your journal method/medium of choice

MarkLovesTech15 karma

I use Omnifocus, and have a project called "BetterMark". I set recurring 'ticklers' in that project. Some are once/year, some are once/week. When they come up, I think to myself "Hey, when do I next need to hear about this?"

SirBitcher93 karma

Why do I have to type 3 different types of queries for using the DB using Compass, CLI, and JDBC ?

MarkLovesTech55 karma

Compass and CLI syntax should be pretty close - the CLI is a Javascript interpreter, and Compass uses Node.js driver, but there are subtle differences in how they treat some BSON extensions (using helper functions vs extended JSON syntax, etc). JDBC driver syntax is meant to be more consistent with Java Driver. In general while all or most MongoDB Drivers support parsing JSON queries, they all try to keep syntax that's more consistent with each different language primitives.

IndianGuy7938 karma

Thank you for answering this - just so you know between mongodb documentation, tutorials, videos and some courses - the use is mix-n-match which creates lot of trouble for developers to follow (particularly if they are trying to learn something first time and don't have handle on all 3 syntax or fine differences between them)

MarkLovesTech3 karma

Thank you so much for the feedback. /u/asya999 can you make sure this feedback makes it back to the team? Thanks!

oufvj82 karma

Is MongoDB web scale?

MarkLovesTech40 karma

I think a teddy bear answered this question many years ago.

In all seriousness, what caused that (IMO) was that the company wasn't clear on the use cases of the product. So people thought it should be used for things it shouldn't have been used for. It was designed for a very particular purpose (DoubleClick) and was stunningly good at that.

It's not enough to have product-market-fit. You have to not overpromise what your product can do.

RampantRooster12 karma

Scrolled down just to find this comment. And of course op didn't reply

MarkLovesTech7 karma

If you mean me by "op", /u/RampantRooster, I just needed a couple hours to catch up. Thanks!

v0rtex162 karma

What does the day to day calendar look like for a CTO? I think it’s a position I’d like to aim for in my career but I’m not even sure I have a clear understanding what a CTO does 😄

MarkLovesTech131 karma

Well.. There’s what the calendar DOES look like and what it SHOULD look like.

I’m looking at my calendar now.

  • 20hours 1-1s
  • 10hours customer / analyst meetings or prep for them
  • 6 hours budget meetings
  • 6 hours partner meetings
  • 7 hours of “green” time to myself to work on my own stuff
  • 10 hours of misc stuff
  • 2 hours for this reddit ;-)

Yes, that’s more than 40 hours. I don’t ask anybody to work more than 40 hours - but I do because I love it. One of my biggest challenges is taking time off and stopping work so that I set a good example for others. One thing I started doing recently is using Gmail scheduled send to never send anything non-urgent over the weeked or on a holiday.

What a CTO does? Wow. Let me try.

Set the technical direction for the company, be a face for the community and our customer, work across the org, share lessons I’ve learned and continue learning. Make MongoDB the place that is the best place any of my employees will ever work in their career.

CAProvenzano56 karma

Mark really does work that much every week if not more. He is also one of the nicest and friendliest managers to work for. I know cause I've worked for him.

MarkLovesTech29 karma

It's truly awesome to hear from you, Chris! I hope things are well for you at Oracle and in Boston.

marseglia61 karma

What did you do at NASA?

MarkLovesTech131 karma

I was a Caltech student and we have the privilege of it being VERY easy to get jobs at JPL because Caltech manages JPL. I worked in Section 331, the space comms group. In that role, I had the illustrious job of programming a prom-burner and hooking it up to a Vax 11/780. I also worked in Section 346 with some fabulous people - in that group we did semiconductor research and I got to system manage my first 1megabyte MicroVax with a 30 meg harddrive - and that computer supported a lab of about 25 people! And that is where I got to play with a scanning tunnelling microscope and look at the atomic surfaces of stuff. JPL was completely amazing.

_bobby_tables_34 karma

Vax 11/780? How old are you? Last Vax I worked on was in 1992, and it was a decrepit machine then supporting a legacy platform.

MarkLovesTech56 karma

Please feel free to reverse engineer my age from https://www.linkedin.com/in/markporterlinkedin/

_bobby_tables_26 karma

Graduated Harvard 2019...so 23ish?

Berzerker739 karma

Funny, but his first experience says "As a 7th grader..." and this was in 1978, so he's 54/55.

ihatepitabread8361046 karma

Hi, Im his daughter and you are absolutely correct :)

MarkLovesTech34 karma

omg. I never expected to have you troll me on Reddit, young lady.

MarkLovesTech21 karma

You win.

holyoak53 karma

My question: How important is Mongo U in your vision for MongoDB? What is the end goal of Mongo U, and what will it take to achieve/maintain that vision?

I went through the first iteration of Mongo U, and it was great. Loved it.

Tried again last year, and it was horrific. Outdated presentations, incorrect answers, incomplete instructions for the assignments. And the proctors; omg the proctors. They were not helpful in any sense of the word, and actively belittled students for asking legitimate questions. Or repeatedly killed threads that had identical questions from multiple students, and then re-killed the thread when it was reposted. And this is not even addressing the dropout rate based on Vagrant/Virtualbox, which has it s own chapter of technical debt (not yours, but your choice to go that route).

In a nutshell, it seems the product is growing faster than the curriculum is being updated. It also seems that proctors are being chosen based on something other than teaching/interpersonal skills.

Is the brass at Mongo aware of the decline in quality of this project? Is this something that os just gonna be phased out? Is there a way i can help out on a real level (not just adding another ticket to the queue)? Thanks for answering, if you get to this~

MarkLovesTech80 karma

I'm going to start with an apology for your experience. That's just not ok.

We’re aware that some of the content is outdated and are working on fixing it. MongoDB University is something we are deeply committed to and plan to invest more on. I just had a backchannel chat with our university team and we'd love to talk to you more and hear about your experience. The easiest way to reach out is through our community forum (community.mongodb.com). And of course you can reach out to me personally @MarkLovesTech or here on /u/MarkLovesTech.

Again, my personal apology and apologies on behalf of all of MongoDB. We will do better.

MarkLovesTech51 karma

Hey! I LOVE LOVE LOVE the questions and am working on them as quickly as I can!

calsosta55 karma

Might make it easier to organize them in Excel.

MarkLovesTech18 karma

We indeed used an offline mechanism to allow others to spell check, add URL links, etc, to make it faster. I will however note that it's 11 hours after the AMA ended and I AM STILL ANSWERING QUESTIONS TO GET CAUGHT UP. ;-) Next time I'll have to bring my "thought>reddit direct-connect" widget.

_noho37 karma

Why’d you shut down Mlab on heroku, it was a great setup for devs to learn mongodb ?

MarkLovesTech38 karma

We unfortunately were not able to create a MongoDB Atlas Heroku marketplace offering in time, but please note that you can still run your Heroku apps with any database hosted on Atlas. The Atlas M0 tier is free just like the mLab Sandbox was. I love the passion for MongoDB, even on many platforms. I hope you find it even more powerful and easy to use on Atlas.

SNEAKY_PNIS29 karma

I work for a software company and there's always a struggle of support and product team against upper management and executives. They do not have product knowledge yet they're making decisions on the product as well as the future of the company. Is this a common theme in the IT and software industry? Support and product want/believe one thing and the executives, who do not know how to use the product, have a different idea.

MarkLovesTech39 karma

I would challenge your word “Always”. I don’t think that’s the case at all. In fact, at many companies I’ve worked at, such as MongoDB, Amazon, and Grab, the executives are passionate about having enough technical and product knowledge to make great decisions.

If you have this problem, I’d advise you to bring it to your leaders as a “meta problem”. You’re right that it’s just not ok to have this disconnect.

I’d advise you to think about some books, like “Execution: The Discipline of Getting Things Done”, “Crucial Conversations”, “Just Listen”, “The Effective Executive: Getting the RIGHT Things Done”, and “No Rules Rules”. These are all books that touch on the interaction of management priorities and leaf-node execution really well.

I hope this helps!

speckospock27 karma

What advantage does MongoDB offer over using SQL with JSON/JSONB column(s)?

MarkLovesTech28 karma

Look, I ran RDS PostgreSQL and Aurora PostgreSQL and am really excited by them offering JSON. But just take a look and you’ll see it’s like putting a dishwasher on the side of your camper. It supposedly gives you all the features but it just doesn’t fit the paradigm. And this is even when they offer indexes and everything else.

More seriously than my dishwasher comment, while tabular databases have added support for JSON/JSONB data types, and some have done it well, this functionality is bolted on, rather than natively supported and optimized for document data.

Developers find the document model provides a lot of flexibility to evolve their data model over time as needs change, and working with all of the data using a common query interface means developers aren’t context switching between the tabular world and the JSON world. Moreover, MongoDB’s query language is just more powerful than what you get from the JSON functions in tabular databases (and it keeps getting better!). And it’s more fun - try putting together an aggregation pipeline and you’ll see what I mean.

drewkiimon22 karma

Would we ever be able to use MongoDB for transactions? We know that we need more ACID/ consistency in our DBs, so will we always have a need for relational / SQL DBs? Would love to see if it's possible for Mongo or any other NoSQL store to be the all in one

MarkLovesTech24 karma

MongoDB has had support for multi-document transactions since 4.0 for replica sets and 4.2 for sharded clusters, so needing ACID compliance is *not* a reason not to use MongoDB!

I didn’t join MongoDB for no reason. I was quite happy on the board before I became so impassioned that I decided to ask for the CTO role. A large part of that is because my passion has always been to help developers write apps. SQL was conceived 50 years and 6 months ago. When the world was different. Now, developer time is the important thing. That’s the first reason I joined - MongoDB focuses on developers. Second, MongoDB’s architecture is the architecture for the future. Scale out, scale up, scale down, shardable, easy to use, runs on every place YOU want to run (all private clouds, all the major public clouds, and … your laptop or your Raspberry PI ;-)

dcmcderm22 karma

What advice would you have for those of us who lived their life in the RDBMS world (Oracle/PostgreSQL etc.) and are now trying to learn and work in the nosql paradigm?

This is the situation I'm in as I've had to work with MongoDB over the past couple years after being an Oracle guy for almost 2 decades. It's frankly mind boggling to suddenly work in a world where fundamental concepts like table joins, constraints etc. don't exist and this seems like a great opportunity to get some insight!

MarkLovesTech30 karma

The best piece of advice is to not think about the shift from SQL to document databases as a translation. Moving to document databases means rethinking the entire data model. So that is where I would start. MongoDB University actually offers a course exactly for long-term SQL users to help with this shift (https://university.mongodb.com/courses/M100/about) and also one on data modeling (https://university.mongodb.com/courses/M320/about).

ihatepitabread8361017 karma

who is your favorite child?

MarkLovesTech20 karma

(For the public knowledge on Reddit, this is my daughter trolling me)

You are my favorite daughter, and favorite social activist.

The oldest boy is my favorite computer nerd.

The next boy is my very favorite airplane pilot, KSP expert, gamester, and fellow spacex fanboy

The next boy is my favorite military enthusiast and one of the most honorable and dedicated people I've ever met.

My final boy is my favorite musician, co-fantasy-and-sci-fi reader, and long-hair blond that reminds me of me.

You are all my favorites.

ArturR9517 karma

What was your biggest challenge as a CTO so far?

MarkLovesTech58 karma

The biggest challenge I’ve faced is being humble. Full stop.

I came in and thought I knew so much - about databases, about the company, and about the people, from my time on the Board of Directors. I was flat out wrong. MongoDB thinks about data persistence and scale completely differently than the legacy and traditional databases I grew up on and worked on at AWS. The company has literally the best culture of any company I’ve ever been at; morale is high, context is high, and engineering excellence is balanced with customer obsession really well.

I thought I knew about operations. At AWS, every developer carries a pager. A huge number of people do at other companies too. At MongoDB, we let engineers be engineers - while still making sure that the customer feedback gets back to engineering and bugs are fixed speedily.

A book that really helped me was “The First 90 Days” by Michael Watkins - figure out what role you’re ACTUALLY coming in, what value the company ACTUALLY needs - and shed your misperceptions. That’s how I’ve approached the problem, and six months later (yesterday was my six month anniversary!) things seem to be going ok. Not denying there haven’t been some very humbling rough patches, but I’m learning to be better!

maryswat8716 karma

There's a job at MongoDB (APM) that I really really would love to interview for. What's the best way to get noticed? What are some values that MongoDB holds dear and look for in candidates?

MarkLovesTech17 karma

If you like the job, you should apply. We are always looking for talented people, with the right attitude and relevant experience.

Also, you should check out Our Core Values. Like I said in a couple other answers, I love our values and our culture. That’s what makes coming to work every day a joy or a misery, so choose carefully to see whether MongoDB or any company is a fit for you - no matter how good the tech or the compensation.

8urfiat14 karma

If you were in a literal food fight to the death, what food would you choose as your weapon?

MarkLovesTech34 karma

I would pick Durian as my weapon of choice, as it comes with the added bonus of being very smelly. Some offices in Southeast Asia (where I worked in Grab) love Durian - and some actually prohibit bringing in Durian to the office. In many hotels in Asia, you will be charged the equivalent of the smoking fee for bringing Durian in.

So, give me a Durian launcher and I’m set!

What foods would you suggest?

I recently had to use Cayenne pepper to scare raccoons off my lawn. It worked for a week and then.... it turns out raccoons LIKE cayenne pepper - and they would rip up the parts of the lawn that I had put the most Cayenne on. Sigh.

sixtimesthree13 karma

Is there a use case for mongodb if I'm using a cloud platform like gcp, aws or azure?

MarkLovesTech12 karma

Definitely. MongoDB Atlas actually integrates very well with GCP, AWS, and Azure (and other cloud platforms too!). We even offer multi-cloud clusters which allows you to spread the nodes that make up a cluster over multiple platform providers. In case a cloud provider goes down you'll still be up and running. The other advantage of using Atlas is that you can easily move between cloud providers and aren't locked in. In essence, our entire company is dedicated to providing the easiest ways to work with data on any platform whether a cloud provider, your mobile device or anywhere else.

Let’s talk more about your cloud use case and we can help make it fit right :-)

KathrynScapes11 karma

What are your thoughts about the current state of the industry's hiring/interviewing practices mainly revolving around the memorization and regurgitation of Leetcode solutions?

We all know that none of us will ever need to find the most efficient way to traverse an n x n matrix to find the longest contiguous sequence of integers within 45 minutes in our real line of work.

MarkLovesTech27 karma

You know, I believe that we should be interviewing for what the job will actually be. Ignoring MongoDB's interviewing practices, I think back to one of the best interviews I ever had.

I had dinner with the interviewing team the night before. No idea what to expect.

I walk in the next day at 8am and there is a terminal and some instructions. They went something like this

"Write any piece of code you want. Here are some examples and here are instructions on how to use the editor. Reach out to any of us for help during the day, we're all around you in the next room.

We're happy to take you out to lunch at noon and talk about whatever you want. You may or may not join us; your choice.

At 4pm, your coding will be over. We'll come in and talk about it together.

Here's the rub: It has to work. We don't care how complicated or simple a problem you choose, but if it doesn't work, you can just leave at 4pm. We are in the business of scoping our work and writing excellent working software every day.

We look forward to working with you today. Enjoy!"

Needless to say I didn't go out to lunch with them.

And I was indeed offered the job, but it was a close thing. The code didn't work until probably 3:45. I wish I could remember what it was.

MANY extra points if any of you can name the company.

davidkopec15 karma

It certainly sounds interesting. It sounds like a better test and more creative than white boarding. But it also sounds pretty brutal in terms of time and effort. White boarding (which I don't agree with) is typically an hour. This sounds like a full day's work. I hope this was for a fairly high level software development job that you were fairly likely to get going into it. Because you essentially did 8 hours of work + the interview the night before. That's a lot of time and effort.

Added: If the criteria above is met (a high level job that you are likely to get) then I think this kind of makes sense. We implemented something similar on a hiring committee I was on, but we had them do the work at home before the interview. Having to do it in an unfamiliar environment under time pressure is not dissimilar from unrealistic time pressure of white boarding.

MarkLovesTech3 karma

That's a really good point about the unfamiliar environment. Back then (it was in late 1980s) you couldn't really "do anything at home" as you wouldn't have had any way to send the code over, incompatibilities, etc.

timhor10 karma

Why don't you show your on prem pricing online ?

MarkLovesTech10 karma

We can't make everything public ;). Kidding - on prem pricing is often highly customer-specific. There are choices for cores and RAM and lots of other things. Our sales team is happy to chat with you about on prem solutions and pricing.

Did I mention that we love the simplicity of the cloud? :-)

TinMan24210 karma

SQL or SeeQuel?

MarkLovesTech26 karma

When I say it I say “See Quel”. And even “Post Gres See Quel”.

Of course, you can also say “S-Q-L”. They both work.

Oh, and in case you’re interested, “spaces” is my answer to your next question. And yes, I know this will get downvoted by many. But I am passionate about formatting things the way I want to, the way the code should be read, in my opinion, not some editors. And of course, if you open up in an editor with a different tab setting, all heck breaks loose!

viimeinen3 karma

Vim or emacs?

MarkLovesTech8 karma

vim, baby.

joshverd9 karma

What are your favorite new features from the last MongoDB release?

MarkLovesTech11 karma

We released so many features, it’s hard to choose. Personally, I love mirrored reads and hedged reads are great. They give you better, more consistent performance without you having to re-architect anything in your app. On the cloud side, I’m really excited about Multi-Cloud clusters, a feature that allows you to deploy a single cluster across multiple public clouds simultaneously, or move workloads seamlessly between them. Going a bit beyond that - Realm Sync which allows you to sync data on a mobile device with your Atlas database.

I think that's going to change mobile apps a lot.

pentakiller199 karma

Any resources you recommend for learning and building with mongo or other tools?

MarkLovesTech11 karma

MongoDB University is the best way to learn about mongo itself. For learning how to build with MongoDB products and other tools someone from my team just told me about Wes Bos's training courses which are much loved. Our developer advocates also create a lot of tutorials on developer.mongodb.com and we have a thriving community forum.

v0rtex19 karma

How involved / knowledgeable are you about the day to day tech, as CTO? How do you stay up to date, both on tech in general and in what all your teams are building?

As an engineer-turned-manager, am struggling with that balance and no longer being the expert when it comes to code.

MarkLovesTech8 karma

Well, the easy answer is “not as involved as I would like”.

BUT, this gateways to some career advice. Figure out what YOUR unique value is, and think about the things that only you can do that others can’t. The engineering team is excellent at most of the tech details. But they can’t talk to customers as well as I can, make the strategic or budget or culture decisions that make MongoDB successful or the culture decisions that make it a better place to work.

There is a great book for this “The Leadership Pipeline”. There are a lot of crappy books on the subject, but I like this one. I owe this and a large part of my other leadership advice to my excellent and amazing brother in law, https://www.linkedin.com/in/chris-miller-0a665329/.

Figure out what your value is and concentrate on that. Of course, you have to get everybody around you to sign onto that charter.

nukem9969 karma

What are your thoughts on the intense interviews many FAANG companies give?

I'm a senior engineer who has worked at various large tech companies. I've been considering making a change and started looking at job. Since I haven't interviewed in awhile I looked around for some practice problems and the programming questions companies like Facebook and Google give seem overly complex and not even directly related to the job. IMHO the true answer to many of these questions is use an existing library. Acceptance of these questions isn't only that they work but are perfectly optimized the first time you type it out. This isn't how I or anyone I know do software development. In the end I get the feeling these companies are filled with a bunch of people who can pump out algorithms but don't understand many of the fundamentals. For example I currently do OS development and have yet to come across a question about operating systems.

Is there a value in this interview process or is it, as a friend put it, a hazing process?

MarkLovesTech16 karma

Interviewing is hard for many companies. I answered in another question what my favorite interview experience was. I think in the end you also need to consider that the company is not just interviewing you - you are at the same time interviewing the company to find out whether you want to work there.

I think your point about how these companies are filled with a bunch of people who can pump out algorithms is not right. Just because the interviews push for that doesn’t mean that the people hired fit that mold. I think that FAANG companies hire an amazing group of people. They also miss a lot of “false-negatives” and they also have an unfortunate habit of hiring people who are like the current people. The problem with the interviewing processes you list above is that they don’t value diversity of opinion and background as much. But, to my knowledge, at least GAF are all working on that and improving their processes a lot :-)

Oh, and it's not a hazing process. They are well intentioned.

I'd give you two things to read to think above since it seems like you have a bit of a negative outlook on some pretty fantastic companies.

https://effectiviology.com/principle-of-charity/

https://fs.blog/2017/04/mental-model-hanlons-razor/

rbak19i8 karma

I never found SQL more obtuse than other languages. Its the opposite, it is very intuitive (ignoring optimizations). Ans it is the same language for every sql dayabases. If there is no scaling constraint, can NoSQL provide as much as SQL in terms of easiness ?

MarkLovesTech15 karma

SQL is simple, straightforward and human readable as long as you only have simple operations against a single table. As soon as you start trying to debug 43 table joins with correlated and non-correlated subqueries you realize some of its shortcomings. SQL was designed to work on normalized relations, and modern data is not very structured or tabular. While there exist SQL extensions to deal with arrays, etc. they are not as widely adopted and in fact differ across different relational databases.

When I was at Oracle, I had the privilege of working in the database kernel group. Sometime in the very early 90’s or late 80’s, I was leading the operating-system-dependent group. We had a bug where the SQL query was over 64K, which (sadly) crashed. I thought we were very clever when we upped the buffer size to 1M. … …. … Yes, that lasted less than three years before the combination of a really complicated data model and an evil ORM created queries over 1megabyte. Yes, in a single question. Of course, that’s the exception.

But even setting aside whether SQL is an intuitive language or not, it's a language that's based on strings which have to be embedded into different programming languages. That's not nearly as intuitive as having database objects map to native data structures in your programming language of choice and then being able to write queries as those same programmatic structures, rather than stitching together strings representing SQL.

I find the power of MQL being in our drivers which give you a native experience in the language of your choice. That said, relational databases have ORMs. My concern with ORMs are the unbelievably convoluted queries they produce, which can’t be understood by humans. It’s like inserting the Heisenberg Principle right into the middle of your code. And as engineers, we know how well computers deal with uncertainty.

That said, if you love SQL, we have a BI connector and totally understand that more of the world currently speaks SQL than MongoDB/MQL. We’re working on making the best of both worlds.

sci-fi-robot8 karma

Do you have any side projects?

MarkLovesTech21 karma

Yes! I’m learning piano and I just started to learn bridge.

Oh, and I am on a lifelong project to be a better husband/soulmate/partner and a better father. Those seem to be never ending as the criteria for success in both jobs changes regularly with no warning!

Physicist4Life5 karma

What advice would you give a father of 4 who is starting his own business, while also working in aerospace?

MarkLovesTech6 karma

And you also have "Physicist4Life" as your handle? Wow.

My advice would be to use situational parenting with your kids. Each of them needs a different dad. Don't try to be the perfect dad - be the one each one of them needs - which may be very different.

Second, realize that quantity vs. quality really is true. Spending 15 minutes *actually listening* with your phone put away, with your full attention, to that one child at a time, is priceless to them - and thus priceless to you.

Third, you and your partner are going to need to be in perfect lockstep to make that combination of things work!

Thanks for the really awesome and touching question.

nowtayneicangetinto8 karma

Hi Mark,

After joining the Mongo team, did you have to rewire your brain to think in terms of NoSQL, coming from a strong SQL background? SQL is a beautiful language but I have learned my brain encounters several roadblocks when I work on a NoSQL project. Curious to hear what mental gymnastics you had to do to overcome it!

Thanks! :)

MarkLovesTech3 karma

The answer is more complicated than “rewire in terms of NoSQL vs SQL”. That’s really not the pivot. There are multiple pivots. First is that I came from a world where the developer bent their work to the whim and instructions of the database more, and here the product bends to the whim and needs of the developer. Second is that SQL vs MQL vs. any other language isn’t that big a deal. What does matter is that MongoDB was built from the ground up to scale up, stay up, and give you answers quickly from the beginning. <insert WebScale jokes here, trolls>. Adding transactions and a cloud DBaaS later turns out to be the way to go.

From a systems perspective, we spend more time talking about distributed systems problems and solutions than I did even at Amazon with RDS (think about that for a second…) EVERYTHING at MongoDB is distributed - across machines, clusters, regions and even cloud providers. Not to denigrate all the transaction complications, but distributed systems at scale is really hard and that’s the pivot my mind had to make.

I realize this isn’t a great answer to your question, but if you want to clarify your question we can go deeper.

allywarner7 karma

Hi Mark, thanks for doing this! What argument(s) would you make to someone who is using a competing database but thinking about switching? It's a lot of work...what makes it worth switching to MongoDB?

MarkLovesTech13 karma

MongoDB was built for developers by developers. Using our Document data model is more intuitive to how a developer naturally thinks about code and data. You’ll end up developing apps faster and more reliably.

There are so many things that MongoDB has that nobody else has - we have Global Clusters which handle your GDPR or governance needs. We have Multi-Cloud clusters. We have client-side Field Level Encryption. We have the flexibility of read and write concerns that let you choose between latency and consistency suited to your needs.

MongoDB has scaling built in from the bottom up. With other databases, particularly relational, they are built around the concept of a single master and many readers. It’s easier to stand up a multi-node writable cluster in MongoDB than any other database. We started with scalability and added ACID transactions, which has turned out to be the very best architecture, rather than starting with ACID transactions and bolting on scalability as an afterthought.

And, if you like coding in databases, you can take the source code and modify and improve it and make it even better :-) We are proud to make our source available and take contributions from the community and you can use those improvements in your own business!

We have many fantastic resources for helping you learn how to best use MongoDB including MongoDB University

IsleOfOne6 karma

Many engineers make the mistake of writing off database companies because they aren’t interested in working on a database, don’t have the experience, or otherwise think they wouldn’t qualify. What these engineers fail to realize is that these companies employ engineers to work on more than just the database solution.

Aside from work directly on the database product, what other types of engineers do you employ?

MarkLovesTech10 karma

First, there are so many components to a database that it's hard to believe that an engineer wouldn't be able to find something that would be fascinating and challenging to them. Especially in the current age of distributed systems, and user friendly UI front ends there's something for every engineer in a database/data platform company. Just as an example, our currently open positions in engineering span different skill sets, languages, platforms, covering everything from networking to security, UI/UX to curriculum development, query optimization to process automation and more.

Even just within the core database team, there are engineers who work on driver APIs, replication, sharding, storage, concurrency, query parsing, query optimization, internal developer tools, performance testing, correctness testing, deployment automation and I'm sure I'm forgetting a whole lot more. Then outside of core database, there are engineers who work on Atlas, documentation, education, technical services, consultants, solution architects, product managers (yes, they are engineers), developer advocates (yes, they too are engineers) and so many more.

davidkopec6 karma

Hi Mark,

Thanks for doing this. I'm a MongoDB shareholder and user. I'd like to get your take on the licensing controversy that happened a bit before you joined. Where do you think the right balance is struck between a truly open source license (by the open source definition for example) and a license that is practical for a cloud provider?

Also, I noticed in your answers that you refer to a lot of books. How much of your management style has been developed through experience versus what you've learned in the books you've cited?

Thanks in advance for your answers,

David

MarkLovesTech3 karma

David,

As to books, yes, an awful lot of my management style has been based on books I've read. I like the ability to ponder over time, re-read. I've got to say that though I heavily recommend 10-15 books, I've probably read (or partially read) 150-200, so I am relatively picky :-)

Of course, experience is massively important. I have a set of "cultural hints" that I'll be sharing publicly in the next month or so - and those are all borne out of the many mistakes I've made over and over in my career. Per the old saw "Perhaps the purpose of your life may be only to serve as a warning to others", I believe that it is important to pass on failures just as much (if not more) than successes.

I hope this helps. Feel free to DM if you'd like to chat more. Or we can discuss here.

Mark

enigma_v35 karma

What’s your desk setup?

MarkLovesTech18 karma

https://imgur.com/a/740cx2Q

Now, there is a LOT there

- pictures of my kids and family

- my cool camera and mic setup for podcasts, etc.

- My split keyboard with the trackpad in the center. Which gives me the same experience across using my macbook and the desk.

- Pottery I have made.

- My 25/50 minute timer so that I can remind myself that between zoom meetings, we should ALWAYS have 5 minutes. Otherwise we feel bad about ourselves as human beings just going to the restroom. I'd highly advise this for your mental sanity.

- My alexa and the phillips HUE lamps it controls - they cycle through circadian rhythm colors during the day.

- My lovely 39" monitor.

- My labeler. I label everything, including my labeler.

- Clocks in 7 timezones so that I always can be "geo-local" and respectful of people I'm talking to, no matter where in the world they are.

And, oh crap, my bowl of oatmeal from this morning. I guess I should have moved that before taking the picture.

mattstorm3605 karma

You ever been involved in a security situation? Such as a live attacker in the network or evidence of which?

MarkLovesTech7 karma

I cannot confirm or deny the existence of such events. ;-)

Seriously, the answer is “Many more than I ever thought”.

Security is Job One. You need to build a culture at your company that when security calls that everything stops. For me, this was sometimes when my Security Principal Engineer says ‘can we chat for 5 minutes pretty soon’? - and yes Dennis this is for you…) You have to move through the standard phases of assessment, mitigation, resolution, and longterm fixing. You have to build a culture of excellence around this.

There are many bad people out there. It’s a sad fact. In fact, while you were reading this, one of them might be hacking at your network... One thing companies do to test this is put out “honey pots” - fake sites that attract hackers to break in. It is interesting that most honey pots I’ve been associated with are attempted to be hacked in less than a day.

IsleOfOne4 karma

What is your company’s policy on remote work WRT its software engineers? Is this policy temporary/COVID-only, or more permanent? Do you use a location-based compensation system?

MarkLovesTech9 karma

We’re on optional WFH right now, with some of our offices open (most closed). We analyze that on a per-geo basis. Anybody can work from home until at least July 2021 and we just extended that optionally to Sept 2021.

On the rest of your questions… yes, those are crazy important questions and our exec staff has a task force to create “the better normal”. (I personally don’t like the phrase "new normal" for some reason).

We are in a time that we have the opportunity to rethink work. Yes, the pandemic is terrible and awful and millions of people are suffering :-( But for those of us who can work remotely, this is the chance to craft the working environment that will last us the rest of our lives. Lean in and help your company figure it out..

whodat7734 karma

Are you hiring?

MarkLovesTech9 karma

Absolutely! Check out https://www.mongodb.com/careers. We have lots of great jobs, in many roles, levels, and geographies.

beforevirtue4 karma

Are there any skills required of you as a CTO that you didn't anticipate would be important?

Are there any skills required of an IC that you expected would also be important for being a CTO, but turned out not to be?

MarkLovesTech7 karma

Before I became an executive, I believed that being a CTO was “just more of being a Director” or “just more of being a VP”. It’s so wrong. Being a CTO (or any executive) is just as different from being a mid-level executive as being in marketing is different from being in DevOps. Completely different skill set.

Of course, I didn’t know this at the time, so tried to apply my historical behavior and skills to my new role. Without going into too much detail, let’s just say it was a tough couple years.

The one thing that surprises me most is the importance of crisp communication. In other roles, you can get away with being vague or even non-decisive. As an exec, you have to listen listen listen and then bring the group to a conclusion (optimal) or make a decision that’s not a one-way door yourself (if consensus is not coming).

So I guess two things coming to mind: Being really good at listening, really good at bringing decisions, and really good at communicating those decisions. Oh wait, that’s three. I did that on another question too ;-)

As to the IC skills needed, no, there weren’t any that I thought would be important. The IC skill that you have to bring along though is getting along with others without using the power of your position. As an exec, if you’re like me, you actually *dislike* the way people view the power of your position, but you have to understand that it’s there and use if carefully and judiciously if you must, but avoid using it when you can. That’s how you build a team and a culture.

holdagold4 karma

Do you actually wear the MongoDB shirt or was this a photo one timer?

ihatepitabread836103 karma

Hi! Im his daughter (he can confirm this)! What I can say is that not only does he wear them almost every day, he also gives some of the extras to me to wear as well :)

MarkLovesTech5 karma

Daughter! You are going to make me have to repay MongoDB for the swag I am giving to my family! SHHHHHHHH.

rmo6234 karma

Where’s the first place you’ll travel to post-Covid?

MarkLovesTech5 karma

To see my elderly relatives who I have not been able to see, both for them and for us. That’s Nevada, South Carolina, Virginia, Southern California, Vancouver, and a bunch of other places.

Then, when that is done, to our little apartment in our beloved Tuscany, in a city filled with charming and gracious people who know how to value the hours of their days and the seasons of their lives better than we do here in the US.

What about you?

mehyay763 karma

Do you get your coffee from Philz next door?

MarkLovesTech12 karma

What the heck is Philz?* I think as a Seattle resident, I may be legally required to drink Seattle brands. That said, when COVID struck, I went out to the garage and found my almost-never-used espresso machine and actually learned how to use it, much to the delight of my wife who had been annoyed that I’d never used the gift she gave me.

(* I’m kidding; I know it’s the coffee shop by our Palo Alto office - and I can’t wait to get back down there when things settle down…)

climbandmaintain3 karma

How the hell do I even begin to convince people that MongoDB A: isn’t awful like it was twenty years ago and B: is actually very feature complete? The only time I’ve suggested MongoDB as a solution (and it was a fantastic solution!) I had the much more senior devs recoiling in horror.

MarkLovesTech4 karma

Our docs describe how full-featured MongoDB is. 4.4 has lots of features not found in other databases, like user-chooseable write concerns, global clusters, multi-cloud clusters, FLE, and so many other things.

I think your senior devs were more afraid of the unknown than they wanted to admit.

Thanks for the post!

Dalton_Thunder3 karma

What is the process for determining features that go on to your product roadmap? Do you have an example of something that wasn’t totally financially justifiable but that you felt technically needed to be done? How do you get other c-suite execs to get EXCITED about databases? Thanks!

MarkLovesTech4 karma

What a fun question.

We of course already know a lot of things we're excited about (the backlog is hundreds or even thousands of items long). The teams themselves do this - it's not some top-down process. We believe in bottom up empowered processes wherever possible.

Our astute and excellent sales and support team give us quarterly reports on what's going on in the product in the field. That's really important to see where we hit the mark and where we missed.

Then, I am humbled by how our product teams under "@sahirazam" (Sahir, our CPO) pull this all together into product definitions and initiatives. And then the teams get together once a quarter and brainstorm on how to prioritize things.

We have lots of things we do that aren't strictly ROI-based. If you don't do that, you'll become a chop-shop, only working for short-term goals. That way leads to stagnation, attrition, and death.

I'm puzzled about your last question "How do you get other c-suite execs to get EXCITED about databases?"

How could people NOT be excited about databases? Databases are like the substrate of the world's operations. In all seriousness, we just never have that problem.

MarkLovesTech5 karma

Or maybe, just maybe, they are all really nice to me and pretend to be excited.

Now I'm worried.

Darnit.

PassionateDeveloper_3 karma

Hi Mark,

thank you for doing your AMA :)

1) I am a senior software developer (fullstack, most C# with SQL backend, frontend in React now) since 14 years, I work full time in Germany, I am very hungry for knowledge,

I got offered several jobs with responsibility for other members but I am an asshole as boss, so I declined. I lead projects here and then but I love to dig deep into code, so I dont want to be on meetings every day all day.

I got into teaching 3 years ago, so I teached Java and Database at a german IT-School before Corona hit us, now I am just a developer again.

I feel stucked, but I don't even know why. Can u give me a advice what to do next?

2) 1 Month ago I started with the idea of creating a "coding camp" in Germany. So get a room, get 20 computers, another developer who whants to do it with me for free and offer 2 or 4 week courses in the summer holidays for kids around 12 to 16 years to get deep into IT and software development. I dreamed about teaching them all what I know and helping them to do the first steps into a new feature for them. I want to do it for free, spend my time for free and offer it to lower social kids instead of the rich ones - but for that I would have to have around 10K for all expenses for 4 weeks (starting at the room, renting the computer, having at least some drinks and food on the days etc.).

Any idea where to start to collect this money on this hard times?

MarkLovesTech7 karma

It’s great that you have enough introspection in order to see your strengths and weaknesses. I’d think deeply through a lens of “no regrets” - what will you regret NOT doing 10 years from now. It doesn’t sound like you’ll regret not being a boss. It sounds like you should work really hard to gain knowledge and that will make you fulfilled and happy. As to being a teacher - does it fulfill you more to help others learn? That’s a bit in conflict with not wanting to be a boss, as the very best leaders know that their main job is mostly to help others. But if you find teaching fulfilling, I’d go with that. And sadly, I don’t have much advice on how to make the classroom stuff work money-wise :-(

imacatpersonbro3 karma

Whats the most useful coding language for a noob to learn to someday have a job coding?

MarkLovesTech12 karma

While it probably depends on which part of the stack you want to work in (frontend, backend) Javascript and Python are the two that pop into mind. They are also easier to learn than some other languages, and there are a lot of resources available that are newbie-friendly. There are so many languages. Personally I love Swift and Rust, but that harks back to my (don’t shame me) TurboPascal days.

illusionst3 karma

[Serious] When did you figure out you are a genius?

MarkLovesTech4 karma

If that ever happens, I'll let you know.

[Serious] I'm not. I tend to over-work and over-think things. I've always been surrounded by people smarter than me. At school, at college, at work. I worked fulltime in college, two jobs during the summer. I slept under my desk more nights than I can count the first decade of my career. I "fester" (think deeply without interruption) in order to come to my conclusions and points of view. I'm hard to be around because of this (ask my family). For me, it's about the work. I wish I had the insight that I often see in others; I have to work to get there.

MarkLovesTech2 karma

Hey folks,

Please submit your questions quickly as we'll be closing the AMA at the bottom of the hour - 12:30PT, 15:30ET, 20:30LHR, 04:30SIN, 07:30SYD, 02:00DEL (India)

Mark

HelloVap2 karma

What are your thoughts on column compressed in memory database technology like SAP HANA and newer versions of SQL?

MarkLovesTech3 karma

I think it's pretty cool tech. Not something I've put a huge amount of effort into. I believe that the architectures of today are simple composable apps where smaller domains of data (not size) are hidden behind microservice APIs. Computers are faster, networks are faster. Humans remain the same speed. Optimizing for the developer (our core customer) feels right to us.

ihatecats182 karma

Can you fix massive health databases please?

MarkLovesTech3 karma

Can you clarify?

In total transparency and the happy co-habitator with many cats over my life, I may have issues responding productively, though, given your handle :-(

coryrenton2 karma

How would you design a database explicitly to be decoded by alien life (a la voyager disk)?

MarkLovesTech6 karma

I’d start with hydrogen and the spectral lines. I’d create math from that. From that I would create a basic science vocab. From that, … well, I don’t know. And I have no idea how Voyager actually did it (I should since I worked at JPL)

Frankly, I sometimes wonder why we humans, all on one planet, can’t communicate better. We shouldn’t need Voyager disks to understand and respect each other.

Thanks for the very very very fun question.

thebarheadedgoose2 karma

What do you think about CockroachDB? I'm interested in watching its progression as a sort of open source Spanner.

MarkLovesTech2 karma

It’s great to see a fellow NYC database disruptor attracting interest and funding. We love how incredibly exciting the database market is.

As it continues to mature, CockroachDB may become an attractive option for some legacy relational database applications that are evolving to support distributed (i.e. cross-node, cross-data center), ACID-compliant transactions (a capability also available with MongoDB, and without the schema rigidity imposed by relational designs). Indeed, Google originally designed Spanner to replace MySQL as the transactional database backing its global advertising network.

That said, the competitor in me has to come out and say that we believe we have a better architecture due to our document model, better scaling, more complete platform, and really easy-to-use cloud console. But I'm being less humble than I should be. I'm just so proud of the work the company has put into everything - noting in particular that I wasn't here until six months ago, so I can't take any credit yet!

BrinxeSway2 karma

Are you guys making an active push to get new developers to learn using MongoDB? If so, what plans do you guys have?

MarkLovesTech3 karma

Yes. We partner with bootcamps, online courses, universities and high schools. We also have a program for students ( https://www.mongodb.com/students ) and for educators ( http://educators.mongodb.com/ ) to help reach the new generation of developers.

More generally, we produce a lot of content for new developers on developer.mongodb.com and have an active community at community.mongodb.com that is there to help new developers as well. To learn MongoDB we recommend the free courses on MongoDB University.

And per other posts, we know we have both made a lot of progress and can always improve. Please be generous in giving us the gift of feedback on our forums ( https://developer.mongodb.com/community/forums/ )

TheNuclearRaven1 karma

I'm currently a Freshman in EE with a minor in Business Administration. CTO is my dream job.

How can I achieve it?

MarkLovesTech1 karma

Wow. I think you win “most open-ended question of Mark’s AMA” ;-)

There are four different types of CTO, you can google that.

I would suggest you look at life through a lens of what will fulfill you. Those three little letters come with intense pressure and risk and expectations. And if you don’t want to have that on you, don’t try for it.

Figure out what you’re amazing at - and you will most likely already be passionate about it (or can be so).

OR figure out what you’re passionate about and put work in and you will most likely become amazing at it. There’s lots of 10,000 hour quotes, etc on this.

I would also suggest Clay Christensen “How Will You Measure Your Life”. https://www.youtube.com/watch?v=tvos4nORf_Y (and there is a book).

I’ve also written an article on that that I’ll publish someday.

Hope this helps and love your aspiration and enthusiasm!

jpfeif291 karma

What is the main difference between MySQL and MongoDB? I just got into using SQL for some of my projects and I want to know the main difference.

MarkLovesTech2 karma

There are lots of differences! First and foremost, MySQL is a relational database and MongoDB is a document database. Relational databases have been around for a long time (1970 Codd Paper) , but document databases came into their own because they free developers from some of the constraints associated with things like upfront schema design and a fixed tabular structure. Developers just love the document model.

Going beyond these basic differences, MongoDB scales well and has a growing feature set. And MongoDB’s Atlas service is designed to make it really easy to use MongoDB for both tiny and huge production datasets, in multiple clouds, with global deployments, without needing expert DBAs to manage the whole thing. It’s all designed to make it easy to get started and grow with your application needs and make developers more productive.

Not only that, but we work every day to make the coding experience, which is the main surface area for MongoDB for developers to be more and more native and natural.

DanyRango1 karma

Which new technoloigies are you most excited about? (could be IT or non-IT related)

I just learned about Apache Kafka in my last term in university and thought that's something that opens up a lot of new possibilities. I guess in the US you are always one step ahead, so I would like to now what you are hyped about.

MarkLovesTech3 karma

I’m pretty simple. There are so many examples so I’ll just give one.

I love MongoDB charts. When I came to the company, I was bored in a meeting (yes, it happens even here). I spun up an Atlas cluster, which I’d done before. But then decided to do things I’d never done.

  • I learned about our data tool Compass, downloaded it, installed it and learned to use it
  • I learned about aggregation pipelines.
  • I needed some data so I loaded up 350MB of sample data into my cluster
  • I wrote my first agg pipeline to sum up and filter the sample data
  • I built a chart on that data

19 minutes. Start to finish. That’s amazing. The tech that I’m most excited about is how we can put things together so fast.

Two areas that I’m particularly interested in are photogrammetry, ai/ml for fraud and recommendations, and realtime analytics. Oh wait, that’s three.

Tenderhombre1 karma

How hard is it to migrate existing systems to MongoDB. How realistic is it to have a hybrid situation with both SQL and No-SQL or is it recommended not to mix and match?

I'm a younger developer and have taken over the role of managing a 10 year old product as a full stack developer. After finally convincing management to move off of ColdFusion 9 my next target is updating the database.

It an old system designed as a psuedo Entity Attribute Value system. Admittedly over the years standards have been ignored or overlooked and there a quite a few eav hacks. NoSQL seems like a much better solution, especially considering customers desires for more searchable data.

How hard is a migration like this are hybrid systems common/recommended and are there resources to help with this?

MarkLovesTech1 karma

Application migration is a difficult problem to discuss in the abstract as there are so many considerations that affect the complexity of the problem. If you have an existing system, you’ll need to understand the data model and performance requirements of your application. MongoDB has plenty of customers who are updating their IT infrastructure, for example, moving to a service oriented architecture. They will move parts of their application suite to MongoDB at a time.

When I was at AWS, I had a great team that I led (they led me, didn’t you, Ilia?) that wrong AWS Database Migration Service and we worked with a great partner to write the AWS Schema Conversion Tool. What we learned is that Migration is hard.

Reach out to me after the AMA if you’d like.

renan_orleans0 karma

Although we have seen a boom in Coding and IT careers, a lot of basic tools don't work well (google maps for example), a lot of websites of big companies are simply dysfunctional, among other basic problems. So what are these people doing? Sometimes we seem to be in a high tech era, sometimes it seems so unreliable...

MarkLovesTech3 karma

Software development is really hard. It takes a certain kind of mind. Testing software is even harder.

There are many factors that can affect the effectiveness of your applications. Often an idea that is great today might not be so great 6 months laters.

The trick is to stay open-minded and regularly review what you are trying to achieve, and most importantly stay close to your user base to make sure you stay on the right track.

Honestly, I feel like my career has been like climbing a range of mountains. Build one great piece of software, realize it’s become an unmaintainable monolith with aged APIs, tear it down, and do it again.

As to the websites, I’ve experienced that myself, and sometimes with websites I’ve been the CTO or General Manager of….(sadly). The way to fix it is to be relentlessly customer obsessed and humble and not defensive. If a customer thinks your website sucks, then they are right - by definition. So you have to suck up your pride in what you thought was the best experience ever and listen, listen, listen.

Last-Outlandishness5-2 karma

Sorry, I have another question. What are your best tips to get into ivies? (15) applying to go to Exeter for my 12th year.

MarkLovesTech1 karma

Yikes! I have 5 kids in various stages of applying to and going to college. I am sadly bemused by the system of applying to colleges these days with all the different types of admissions, dates, etc. When I was young, you just took the tests, turned in your AP and SAT and ACT scores, and wrote some essays. Oh, I realize I’m sounding like an old curmudgeon and I’m not being very helpful...

IsleOfOne0 karma

What is your socio-economic background? As sad as it is, this matters. A lot. The bar is set differently for people with different backgrounds.

MarkLovesTech1 karma

I grew up on a homestead in Alaska, in a mobile home. Lower middle class, probably. My parents were both computer programmers for the university of Alaska (who knew!) A funny story: My dad brought home many pages of sheets covered with numbers. I was about 6. We didn't have color plotters or printers, so what you did was use markers and color all the numbers (62=cyan, 67=purple, etc).

My dad offered to double my allowance if I colored about 10 sheets of paper. I happily accepted.

Unfortunately, it wasn't until he took my sheets and presented them at work that he'd noticed that I'd gotten bored and just started coloring whatever I wanted, regardless of the numbers.

I had to give back my doubled allowance. Sigh.

brez-4 karma

Have we finally rid ourselves of that ridiculous "NoSQL Movement" nonsense? A "movement"? Really? like the Civil Rights Movement? Tools shouldn't be movements.. what's next construction works tired of using a claw hammer will start the NoHammer Movement?

MarkLovesTech1 karma

Yeah, it’s just frankly silly. NoSQL wasn’t about “NO SQL” . It was about “Not Only SQL”. Look it up.

What was really going on was that relational databases were not scalable and had rough edges - how many production systems have gone down because somebody forgot to lock their query plan on Oracle, and right at a peak time of load, the optimizer cleverly decides to flip the plan and BOOM your site is down. (That’s an operator problem, not a database problem…)

The truth is, we needed scalable databases and we needed databases that were less brittle. SQL is fine and it wasn’t the problem. Scalable reliable databases were.

Of course, those were first launched without transactions, which limited their uses cases. Now, many of them (including MongoDB) have ACID transactions.

Document databases and scalable databases are the tools of the future, I believe, even though SQL and relational will be around for decades at least.

We use the term “non relational”. MongoDB is a general purpose database, just like the legacy databases. Like you say, it’s not about SQL or MQL. It’s about getting stuff done and writing reliable apps that delight users in the timeframe needed by your business or organization.