516 karma · joined March 13, 2008
Twitter (and almost everywhere else): JitterTed
Blog: https://TED.dev
Twitch: https://JitterTed.Stream
My Discord: unlisted, but DM me for an invite: JitterTed#4770
Email: tedyoung@gmail.com
Take time to share and listen. Teaching, mentoring, coaching, etc. others, especially those with less experience, is good, but is often done as a one-way transfer of information. Instead, find people who ask good questions (those with the least experience often ask the best ones) and be open to exploring those questions together. It's hard, because you will base your answers on your experience, which is by definition limited (it is for everyone), but it may not be the right answer in all situations.
However, I think it's also true what the author says in terms of not everything is like an object, thought I would say that Domain-Driven Design's idea that there are multiple _kinds_ of objects: Entities and Value Objects, and that they serve different purposes. In addition, there are data-only things used to carry data around and especially across internal/external boundaries, those are Data Transfer Objects. With those three, I've found I can teach OOP to folks and get them to understand it as long as I get across one last concept: all method calls should be Commands or Queries.
When the author says:
> All calls between objects are unidirectional: no public method of an actual object (not a plain data class) returns any value.
That's close, because _most_ of the methods are Commands (requests for an object to change the state for which it's responsible), and anything left are Queries (what's your current state?).
> Does everybody else find it so obvious that it's not worth mentioning and I'm the clown that didn't realize it?
No, it's not said enough, and you're not a clown. The clowns are those that teach getters and setters right after they teach you about classes and don't tell you that the _entire_ purpose of an object is Behavior not Data. Alas, they teach this because it's what they were taught (and it doesn't help that the AP Computer Science curriculum in the USA explicitly teaches this).
* What do they know now (or think they understand)? You can only build knowledge on existing knowledge, so first find out what foundations exist (this connects to the author's "listener's worldview" idea).
* Tutoring (1-on-1) will almost always be better than teaching (1-to-many) because you can (if you try) better understand what's being understood and what's not.
* Learning is construction of desired knowledge, so learners have to "do" something and be provided quick feedback to build the desired concept (which is why learning on your own with little feedback is subject to learning the "undesirable" thing, even though it might have "worked" for you).
I did a talk on this topic (Human Learning) that you can find on YouTube (JitterTed.TV).
They continue to work and improve it (which I'm relieved about, because Schwab's mobile app is awful, Webull is worse, and I don't know how anyone uses RobinHood for options trading, it's so hard to do cancel/replace orders with them, which I do constantly).
As others have mentioned, I'd like more secure ways to blur the area, e.g., completely blanking it out, or filling with random text and then blurring.
Edit: Would also be useful to replace the text instead of blurring, that way viewers could see realistic information without revealing real keys, etc.
Edit: Please allow the plus (+) symbol for emails.
Nuzzel replaced a similar -- but much better -- tool that I can no longer remember, after it shut down as well. At this points I'll probably have to create yet another side-project to do what Nuzzel was doing for me.
The OP issues may also be related to procrastination, where having accountability to others may be one (among many) solution, e.g., having a pair-programming partner (or a mob), or, what has worked for me, programming live on Twitch.
I spend a good part of my time training Java developers away from this idea in order to help them make their code more testable and understandable. Queries and Commands are not just pedantic alternate names for Getters and Setters: thinking about objects with respect to what you can ask it to do (Command or Request) and what you can find out from it (Query) significantly improves the code that gets written.
(And I won't get into sites that won't let you paste passwords into their forms.)
Well, no, it's not. It's true that DDD-based architectures (like Hexagonal or Ports & Adapters) do provide guidance on code organization (I teach courses on this), but to say that code organization is DDD is misleading at best.
As others have said, DDD is so much more than that, and I'd summarize DDD as making Domain Concepts and Behavior primary, instead of the Data (and databases) being the focus.
Code reviews are a poor use of time and don't solve the problems (quality, learning) that people try and use them for, or, if they do, it's very inefficient (as you're finding).
If you must do code reviews, review them synchronously with the author.
The Slack one could be done by recording the screen (using any one of a number of screen recorders such as Camtasia, Screenflow, Quicktime, or a bunch of free/open-source ones) and then using their tools to highlight via animation and record a voiceover or using a dedicated video application like Adobe Premiere Pro or Apple Final Cut Pro X. Not difficult, but another skill to learn.
Remember, these videos (and many like them) are created by teams who have dedicated graphics and video folks (or hire freelancers) to do the work.
Well, no, not yet. Microsoft doesn't break out Azure separately. It's usually included in their "Intelligent Cloud", which is the largest segment, but that also includes SQL Server (a big money maker), Windows Server, GitHub, and other stuff. "Commercial Cloud" revenue (which is all the cloud portions of their products, from Azure to Office 365 Commercial) was $51.7Bln of $143Bln overall. So yes, Azure makes a lot of money, but not "most".
For YT, viewers would have to already know who they're looking for and so they're not likely to "stumble" across your stream.