900 karma · joined March 2, 2010
(Myself, I've been heard complaining that git is overly complex, but the source code control systems that I used to use before git include Subversion, CVS and various Rational products and I have no desire to go back to any of them.)
The book that really helped me with this is The Charisma Myth by Olivia Fox Cabane. It presents a really simple model for charisma as consisting of three components: power, warmth and presence, and gives a lot of advice to help you to strengthen each of those components by doing exercises that work on different aspects of your psychology. The key insight for me was realising that you can come across as both powerful/serious and as warm/compassionate/friendly, and that people who do this are described as charismatic. I genuinely didn't realise that until I read the book - I thought you had to choose between being nice and being taken seriously - and that's why you'll often find me recommending it on HN and elsewhere.
Another book that presents a different but similar model is Radical Candor by Kim Scott. The premise of this book is that you might think that you have to choose between giving candid feedback (including negative feedback) to your teammates or caring about their wellbeing, but that this is not the case. You absolutely _can_ do both and, again, it's extremely valuable to do so.
How does the above sound? Does it address your situation or does it miss the point? I'd be interested to hear any feedback or further questions that you have.
Apprenticeship Patterns by Adewale Oshineye and Dave Hoover: A set of "design patterns" for your career as a software engineer. I read this relatively late on, when my career was in a bit of a rut, and I credit it for giving me the motivation and the tools to get out of that rut. I wish I'd found it earlier.
Other brilliant non-technical books: The Manager's Path by Camille Fournier, Radical Candor by Kim Scott, Mastering Communication At Work by Jon Wortmann and Ethan Becker, Mindset by Carol Dweck, Drive by Daniel Pink, The Power of Habit by Charles Duhigg.
Some brilliant books focussing a bit more on tech and code craft: Growing Object Oriented Software, Guided by Tests ("The GOOS Book") by Nat Pryce and Steve Freeman, Refactoring by Martin Fowler, Clean Code and Clean Architecture by Bob Martin.
I ask because I personally became disillusioned with Duolingo's streaks and leaderboards. I found that I was forcing myself to use it every day but I lost the love of learning the language. Ultimately, I stopped using it because I had a lot of extrinsic motivation to hit targets in the app but little intrinsic motivation to keep learning.
It sounds like your experiences were different from mine and I'm curious to learn what made them so.
Apologies, I did write a snarky comment and I'm very sorry that I did that, rather than asking for clarification and/or explaining my position a bit more clearly.
I take the view that sharing an SQS queue (or a topic, or a stream...) between two services is OK. It creates a contract between those two services, of course, and part of that contract might be that there is a uniqueId field that the receiving service is going to have to persist in its own database in order to only action each request once, but it doesn't add an excessive amount of complexity or coupling between the services, not for me at least.
I'm still not OK with having two services share the same database, though, even if you're using it for a narrow purpose. For me, the danger is that you end up introducing more coupling than just agreeing on a message format and messaging semantics. I've been burned by that once or twice and I don't want to get burned by it again and I'm pretty happy that it's widely seen as an anti-pattern these days and personally I dogmatically avoid it. I do take your point that the database is going to end up being a SPOF/bottleneck, though, and I don't really have a great answer for that in the general case.
I interpret arduinomancer's post above to mean that if the receiving service must action a single message once and only once (which is sometimes but not always necessary) then you need to give each SQS message a unique ID and that ID needs to be stored in as DB by the receiving service. I've used that pattern a few times and it works well (and doesn't result in unnecessary coupling between sender and receiver). In the past, I've used messaging systems that gave stronger transactional guarantees, but those systems were things like JMS or MQSeries and I don't really want to go back to those days.
The reality is that the decline and fall of the Roman Empire wasn't a sharply defined event and more of a process that took an awfully long time. The idea that lead poisoning contributed to that process is an interesting one but I'm not sure that the article answers any questions about that.
There are two key insights that helped me to eliminate the need for so many mocks: a) modern languages that support functional programming allow you to separate the concerns of computation and interaction with collaborators, and it's an awful lot easier to test drive a pure function that it is to test drive a graph of collaborating objects; b) modern hardware is sufficiently fast that it's much more feasible to spin up a whole service (or many services) in order to run tests on them, and you don't need to write fine grained unit tests merely in order to make the tests run quickly enough.
Understand how to load test your system and to reason about its behaviour under load and its failure modes when you push it too hard. It's one thing to be able to build a system and functionally test it such that you're confident that it behaves correctly when you send one request at a time. It's another thing to let thousands or millions of real users hit it for real in production and to have confidence that you are giving them all a good experience.
The crucial thing for me is to recognise that I won't read everything that goes into that column and that's ok.
So what do you mean by "retro characteristics" and what do you mean by "a classical style"?
A couple of books that have helped me:
- The Charisma Myth by Olivia Fox Cabane. This book changed my life than any other. The premise is that charisma is a skill that can be learned, and isn't something that some people are born with, and that you can become more charismatic by working on your internal mental state and learn to emit signals of power, warmth and presence. I didn't used to be a people person until I read this book.
- Mastering Communication At Work by Ethan Becker and Jon Wortmann. This book is specifically aimed at leaders in a business context. It contains lots of great advice on subjects such as understanding different communication styles (and tailoring your approach accordingly), managing your "ethos" i.e. the way that you come across to people, running effective meetings and many more.
It makes me sad to see that it has gone down hill so much since I last visited. Hacking the back button like that makes me not want to visit again.
As the article states, many English speakers are monolingual and probably have a hard time empathising with the struggles that non-native speakers can have with a language. I worry that the situation will only get worse. English is now spoken by so many people in so many places and the incentives (and opportunities) for English speakers to learn other languages are consequently increasingly small.
Having said that, one of the things that you have to learn when you start speaking with English speakers from around the world is to recognise which of the words in your vocabulary will be understood vs which are particular to your native country. I'd put words like "prepone" and "needful" into this category: you need to find an alternative when talking to people from places where those words aren't understood.
https://en.wikipedia.org/wiki/List_of_countries_by_English-s...
The chap in question was from Portugal. If I understand correctly from your website, you're from Brazil, right? Is there any difference between how that word would be used in Brazilian vs European Portuguese?