I think I would disagree a little with @Paul_Danyliuk.
If your kid wants the gratifying experience of building something quickly, I think Coda is great. Especially to expose them to the mental models of relational databases and queries. It’s very powerful, and it’s very flexible. It’s like learning Excel, super useful.
That said, Coda is not code. It’s explicitly their goal to make it no-code. If it’s your kid’s goal to learn to code, this is not it. Some ideas can be learned here, but some cannot. In fact, some may be very strange if you haven’t worked with them before.
For example, the FormulaMap
formula is quite strange, it’s much better to learn about for loops and then to learn how FormulaMap
is a type of for loop than it is to try to learn for loops through FormulaMap
.
Here’s how you would count the number of instances of a certain person in a list using a tool like Python (without using defaultdict or collections.Counter):
# the names of users
users = ["Name", "Different Name", ..., "Name"]
# initialize a dictionary to keep track of the frequency a user shows up
counter = dict()
for user in users:
# if user is not already being tracked, add a new entry
if counter.get(user, None) is None:
counter[user] = 1
# otherwise, increment the existing entry
else:
counter[user] += 1
# print a bulleted list
for name, count in counter:
print(f"- {name} {count}")
In Coda it’s:
Users.Name.Unique().FormulaMap(
Concatenate(CurrentValue, ' ',
Todos.Filter(Users.Name=CurrentValue).Count())
).BulletedList()
These are very different mental models.
The first programming language you learn is really important as it frames how you think about the concepts from then onward. Famously Visual Basic Bad and Dijkstra’s Go To Statement Considered Harmful talk about how learning the wrong first programming language can have lasting effects.
I’m not going to argue that Coda is on par with these at all, it’s remarkably elegant. But you don’t do data science in Coda, you don’t build machine learning models in Coda, you don’t build APIs in Coda, you don’t develop video games in Coda, you don’t run embedded systems on Coda, you don’t perform data compression in Coda, etc. (For all of you with counter-examples of people who have done these things in Coda, you know what I mean.)
If your kid wants to learn a programming language, I’d recommend learning:
- python (best for beginners)
- C#
- java
- javascript
- ruby
If your kid wants to learn how to build beautiful, sophisticated documents, even web and mobile apps, Coda is great for that!
EDIT: added example of coda vs python and the final, preceding paragraph