Taleb makes the argument this should actually be obvious. Old ideas have survived over time, which suggests they are good enough to be passed down from generation to generation. New ideas are a complete crapshoot, and you have to do a lot more work to figure out if they're worth a damn.
One thing not highlighted in this article is that Seneca considered "leisure" the highest virtue. He talks about Augustus, for example, and other prominent Romans who "won" the rat race, and says they basically wasted their lives. So I think you'd find Seneca's message agreeable. Just read the real thing and ignore this knockoff.
The second option is possible if you declare an abstract dependency (preferably just a contract like an interface) and make your persistence layer implement it. I highly recommend "Clean Architecture" if you'd like to learn more about that approach.
Small quibble, I really like inverting the (business logic) –> (persistence) dependency. That way your business logic drives everything, which aligns with your point about the app being "logic with an HTTP interface." Agree wholeheartedly with the rest.
A lot of people here are defending ADHD/procrastination, and while I agree with a lot of the points (especially the one about industrialization being maladaptive), it's worth considering the personal cost of not mitigating these behaviors. "Rework" ends with a good quote about inspiration being a diminishing resource. You might feel really passionate about some big project, but if you don't have the skills to organize, plan, and implement the subtasks required to get it done, your enthusiasm will eventually wane and you'll never bring it to life. This happened to me perpetually throughout my twenties and I've lost track of how many good ideas I had that died on the vine because I lacked the skill to bring them to life. Figuring out how to create a system that works for you and allows you to capture and make progress on your ideas is hugely valuable. I understand the concern about becoming a slave to a system, but letting your potential wither away is an equally unpleasant fate.
Or QE was essentially money printing that rippled through the shadow banking system in such a way that the price of certain assets (companies/stocks, real estate) are inflating indefinitely.
John Cleese videos, esp. "Creativity in Management" on YouTube
"The Creative Habit"
"Creativity: Flow and the Psychology of Discovery and Invention"
If you really take it to heart, though, the Cleese video is all you need. Creativity in my mind falls into the category of "simple but not easy": you only have to do a few things, but they require hard work and thought.
1. Create time and space. Easier said than done if you have a busy life and people who expect things from you. You need to make a quiet place you go where you are not interrupted for a specific period of time. There you think, imagine, focus on your goal and work.
2. Mental clarity / confidence to play and do something not "serious." Creativity requires a playful mindset and the confidence to overcome your self-doubts and fears. Again easier said than done.
3. You have to work. Creativity is a cycle of work, examine the thing you made, and come up with more ideas / next steps. If all you do is think and you never actually work, then you might be "creative" but you aren't "creating." Alternatively if you just work and don't step back to think, you're creating but probably not doing it creatively. So you have to get into a cycle of create, observe think; create, observe, think.
There are probably use cases where core language features like "highly concurrent/distributed by default" or "highly safe low-level operations" are worth the risk, but in general this is my answer too. I just finished a 2-year modern Java/Angular 2 project, and it was a pretty solid stack. Using Kotlin on the back end would have eliminated a significant number of the bugs we ran into (so many null pointers), along with reducing huge amounts of boilerplate and duplication.
The number of available libraries is ridiculous thanks to Java interop. Compare this with an Elixir project some of my coworkers did. They ended up having to write their own message bus client library because one didn't exist yet. That sucked up a huge amount of dev time that could've been used to actually make their product.
I'm not sure this is a counterargument, but if a company did this in an open way I could trust, I would buy EVERYTHING from them. Fridge, washer, dryer, dishwasher, televisions, small electronics, cars, whatever. You name it I'd buy it. I don't have enough information to determine how many people are like me, but the profit you could make on me as a customer would be ridiculous. You'd get the kind of platform loyalty that Amazon and Google dream of. I'd probably even be happy to share some personal information with you in a way that I controlled that you could turn around and sell. The sense of autonomy, privacy, and control is that valuable to me.
I attended a private high school that gave us a remarkable degree of freedom at a young age. We were allowed to drive off campus as upper classmen, choose a wide range of electives, and generally were treated as the near-adults we were.
Recently I read that my high school is instituting a random drug testing policy. I wrote a letter (that I'm sure they promptly ignored) saying how the thing I most remember about my high school experience is that I was trusted with a high degree of autonomy, and in return I was expected to act responsibly and to think about issues with a seriousness not often expected of teenagers in our society.
It seems like more and more these infantilizing policies are becoming a norm in our society. Instead of trusting human beings and granting them personal autonomy and responsibility, we act like imposing ever-greater layers of rules and controls will produce good citizens. Frankly I think this is a disastrous approach and is creating entitled, helpless, and childish adults. It's a massive disservice to ourselves and our society.
I'll never forget my first day of college. Lots of the other kids in my dorm were running around like crazy people. You could tell they'd never really been free to be themselves and run their own affairs. I felt very different. While it was a significant change to be totally on my own, it felt like a natural extension of the freedom I had slowly been granted over the previous two or three years. I was ready to deal with it. I didn't do everything perfectly, and I could have made better decisions, but by and large I felt like the transition to adulthood was comfortable and natural. The more we impose these command-and-control models, the more I fear we are robbing our children of that same feeling and casting them into adulthood with poorer tools than we were given.
If anything, the amount of shadow work foisted on customers has increased. Somehow it's a norm to have to go through a bunch of bullshit to have errors corrected and often just to get halfway decent service. It's obviously worse in industries without meaningful competition, but society in general seems to put up with it and assume that's just the way it is.
This is the same impulse behind many disasters of history. It's a classic "who watches the watchmen?" problem. You can't perfect human society, and attempting to do so through the blunt centralization of power into the hands of a supposedly enlightened elite has rarely worked out the way it was intended.
You need strong engineering management to communicate the business advantages of well-made software. The benefits of good software are exceedingly hard to measure and understand as a businessperson, because design is a lot like risk management: you can't measure the cost of the disasters that don't happen. The only substitute is to communicate thoroughly on the business's own terms and to show examples of payoffs whenever they're tangible enough to make the point.
I think people fail to deeply reflect on what they want from life. I'll share my list, because maybe it will help someone else to figure out theirs:
• Maintain my body
• Maintain a sense of mental tranquility
• Work on projects and learn things I find meaningful and interesting
• Visit my friends and family in my hometown regularly
• Have a good home life with my wife and someday children
• Have a job that keeps me interested but isn't so exhausting it detracts from the above
If you don't have a list like this, and you don't know what resonates with you, then your actions will be unguided and you'll not find any sense of peace or progress. Pay attention to what helps you be happy, reflect on it and use it to guide your choices and use of time in this life.
My team (Spring Boot / Angular greenfield app in an enterprise) has a guy that transitioned over from .NET and is totally new to the Java ecosystem. He has 30+ years experience with SQL and can't stand entity frameworks or make them do the best-practice stuff he knows we should be doing, but with JOOQ he's had a lot of success bringing his extensive knowledge base to bear on our project.
I've found the opposite. When I start to write a test, I often realize I don't know exactly what I need to do because the requirements are unclear or somehow conflict with some other assumption of the system. That realization prompts me to go talk to my product owner, which forces them to clarify their requirements and target a more coherent idea of what the system should be.
Funny enough, one of my favorite talks argues the opposite. "Constraints Liberate, Liberties Constrain." I won't attempt to summarize but it's well worth a watch.
Simple is easier than complex the same way that exercise is easier than chronic obesity. If you have the discipline to do the obvious that's great, but it takes willpower to create or do the simple thing. Oftentimes it's easier or more expedient to do the lazier easy thing in the moment, but you pay for it down the road. For example: I notice I'm doing the same calculation twice on the front and back end of my application. The "simple" thing to do would typically be to extract that logic to one place so that you don't end up having to modify it in two/five/twelve places down the road. But I'm already halfway through writing it, and the simplification will involve some non-trivial refactoring, so I take the easy route and write the same logic twice. It's easy for now, but will be complex when I have to change it down the road.
Lack of perfect information is a well-known failure mode of standard economic models. It may be true that people value their inherently scarce time more than they value the improved light bulb buying decision they could make by obtaining more information, but that doesn't mean consumers don't value better light bulbs. It just means there's an inefficiency due to the cost to the average consumer of learning about light bulbs (or whatever product).
I agree. I had Bloomberg on that list but it's gotten steadily worse over the last few years. Some parts of WSJ and NYT are still pretty good, but they're flooded by drivel and hard to find.
The problem is you don't get to pick and choose who your culture affects. If you hire people with those opinions and then tell them they need to watch what they say, other employees get the same message. You may have people who aren't political at all, but they see people being punished for expressing their opinions and decide they too better modify their behavior.
2. As a tool for thought, prompting the application of inverse problem solving
Both of these have costs and benefits. If you consider the metaphor of the security system, you could secure your house at every entry point, purchase motion sensors, heat detectors, a body guard, etc. etc. If you're Jeff Bezos maybe all of that makes sense. If you're a normal person it's prohibitively expensive and probably provides value that is nowhere near proportional to its cost. You also have to be aware that there is no such thing as perfect security. You could buy the most expensive system on earth and something still might get through. So security is about risk, probability, tradeoffs, and intelligent investment. It's never going to be perfect.
Inverse thinking is an incredibly powerful tool for problem solving, but it's not always necessary or useful. I do think if you haven't practiced something like TDD, it's great to start by over applying it so that you can get in the habit, see the benefit, and then slowly scale back as you better understand the method's pros and cons.
At the end of the day, any practice or discipline should be tied to values. If you don't know WHY you're doing it and what you're getting out of it, then why are you doing it at all? Maybe as an exploratory exercise, but beyond the learning phase you should only do it if you understand why you're doing it.
It's a really hard argument to refute, because once you bring "power" and the "subconscious" into arguments almost nothing is falsifiable. Nevertheless some possible contradictory evidence:
1. Look at all of the people throughout history who fought for education, e.g. blacks in America. Obviously they perceived some value in receiving an education and did not just have it imposed on them.
2. Look at the statements of educators and public education advocates throughout history. They speak broadly about the advantage to the individual and the ability to better oneself.
I could go on, but the reality is that you can always argue that something fundamentally comes down to "power." It's such a vague concept and so ever-present in the relations of social animals like humans that it isn't really separable from anything we do. You could argue basically every idea we have is just a collective illusion to foster social cohesion. That's the thesis of the book "Sapiens," for example. I think comparing public schools to "you are the product" things like Facebook is sort of facile and silly though.
That "directly" is carrying a lot of weight, though. The salesmen have nothing to sell without all of the work of the other employees. I prefer the conception of profit and cost in "The Goal": you have throughput (money from sale of your product), inventory (goods in the system not yet converted to sales), and operating expense, the cost of translating raw materials to goods or services (e.g. payroll, cost of electricity for your buildings). In that model it's obvious that salespeople are an expense like everybody else, and the profit from their sales is a reward of the effort of the entire system, not just the salespeople.
You can get value from making your own. I have a small list for coding that says "commit, test, story" that reminds me to be always saving my work, coding against a test, and testing against a story. As long as you remember that you're the one in charge and don't treat it like your boss, a list can be a great aid to memory and discipline.