Dates covered: March 4-10, 2019 (week 10 of 52)
Career
The Best Ways to Use Social Media to Expand Your Network (via Harvard Business Review)
- Reach out to people who are less senior (i.e., C-suite); you’re more likely to get a response
- Be brief but personal in your first message
- Ask for advice instead of specific things such as investment opportunities
- Pay it forward
Communication
A Good Meeting Needs a Clear Decision-Making Process (via Harvard Business Review)
I’m always on the lookout for how to make meetings better. This tip is fundamental for meetings where you need to decide: How will you make a decision if you can’t agree? There are many answers; the important part is figuring that out before you meet. Bonus: learned about the RACI (responsible, accountable, consulted, informed) decision-making model.
Why “I Don’t Have Time” Is a Bad Way to Decline an Invitation (via Harvard Business Review)
The person doing the inviting most likely considers time a controllable resource for the invitee. The author suggests stating something possibly more correct, and a trait the invitee has less control over — e.g., I don’t have enough energy, or that’s more than I can afford right now.
Ethics
Companies Need to Pay More Attention to Everyday Unethical Behavior (via Harvard Business Review)
Unethical behavior is likely to occur when (1) norms about how people should behave is ambiguous, (2) the conflict of interest is subtle, (3) the victim isn’t identified, (4) performance goals are unrealistic, or (5) the decision is made by a group instead of an individual. Companies need to be clear of the legal and moral outcomes of certain behaviors; employees need to be reminded about how misconduct will be treated.
For Sale, By Owner: The Psychology Of Repugnant Transactions (via Gillie Hunt)
In the US, you can’t sell or buy organs — even if they’re yours. How much would someone pay you before you parted ways with one eye or kidney? Alvin Roth defines a repugnant transaction as “a transaction some people would like to engage in and other people don’t think they should be allowed to even if it’s hard to see how those other people are harmed.” The episode had some interesting scenarios about ethics, law, economics, and moral implications of various transactions.
Leadership
7 Ways to Improve Your Ability to Deliver Criticism (via The Software Mentor)
- It’s much easier to correct a minor issue than a major one. So once you see something, say something.
- The only negative feedback is feedback that doesn’t support future improvement.
- If you cannot think of a way to give your criticism so that it supports future improvement, then keep it to yourself until you can.
- People don’t care how much you know until they know how much you care.
- First agree on the facts. Then discuss the impacts.
- Focus on the behaviors and what someone did rather than what type of person you imagine him or her to be.
- People are much more committed to a solution if they own it.
The Pillars of Management (via Software Lead Weekly)
Your direct reports, your discipline, the business, and work quality. At any point in your career and day-to-day, the priority of these will change. Know where you’re focused and ask whether that makes sense in the moment.
Process
We’re terrible at predicting time, so do these things instead (via Steve Stamm)
Estimation mistakes are typically attributed to not considering similar tasks in the past and assuming we won’t run into any delays.
- Use historical data (time trackers help here)
- Have someone else estimate for you
- Estimate in ranges
- Use three-point estimations (best, most likely, and worst)
- Calculate your fudge ratio
- Estimate at the low point for your day
Race
Women of Color Get Less Support at Work. Here’s How Managers Can Change That. (via Harvard Business Review)
- Take initiative (e.g., ensure people are included in social events)
- Give credit where it’s due
- Provide honest feedback
- Assess potential, not just competencies
- Check for bias
- Ask why (especially during exit interviews)
Security
Cybersecurity Is Putting Customer Trust at the Center of Competition (via Harvard Business Review)
There’s a staggering amount of software in everything we use — from cars to cell phones, to power stations — which makes it impossible to mitigate all threats. This article suggests that all companies that have a digital product/service need to demonstrate trust, show clear processes to protect data, and signal that message via marketing/branding.
Society
A Bold Idea to Replace Politicians (via TED)
In democracies voter turnout is often low, and one of the frequently cited reasons is that voters are not where the real power is — it’s in the representatives those voters elect. However, if every citizen voted on every law, the depth and breadth of the work would be overwhelming. The speaker proposes a system of using machine learning to train an avatar so each individual could be a senator, voting on and writing laws. Of course there are potential problems, but the presenter makes a compelling argument to get us out of a system with potentially bigger flaws.
Software development
Sensible Software Engineering (via The Software Mentor)
A fascinating counterargument to Agile, TDD, and Kubernetes — they are local maxima, focusing on short-term gains and “fixing” complexity by abstracting it away. The answer to reducing complexity is not “more software.” A foundation in logic, statistics, and game theory is something that can help (“rigorous and heuristic thinking”) as opposed to humans trying to simulate what the computer is doing through code.
Separation of Concerns (via The Software Mentor)
Programming is typically split into separate domains (style and presentation, business logic, and content) so that they can change independently, team roles can be easily determined, and aspects of the application are easier to locate. The article poses some other ways to separate things — ease of scale, cross-cutting concerns (e.g., logging, error handling), and ability to debug.
Why Simple is So Complex (via The Software Mentor)
There are non-technical factors, and the types of systems we create end up being inherently non-linear. Statically-typed languages and the selection of the “best” framework aren’t silver bullets either. Simplicity can be subjective; the author suggests that there are few things orgs can do to lower complexity — allow time for good design, coding practices, and refactoring; avoid the latest shiny tech (proven > cool); follow good procedures such as code reviews, design reviews, some design up front, due diligence about how things will work/fail, and get solid requirements.
Is CQRS Complicated? (via The Software Mentor)
Caveat emptor: I didn’t watch the hour-long talk where the author goes into how to address the issue of how to make it less complicated. CQRS (command query responsibility segregation) is one of those fancy terms you may hear at the software architect’s water cooler. It does tend to bring with it several other equally overwhelming concepts such as event sourcing, message brokers, eventual consistently. Apparently you can get the benefits of CQRS without all the patterns.
Stress
Stressed at Work? Mentoring a Colleague Could Help (via Harvard Business Review)
This article covers a small study of how senior and junior police officers interacted in a mentor/mentee program (given how policework is rated as one of the most stressful occupations). Mentors experienced lower anxiety, described their job as more meaningful, and built trust about job-specific concerns.
Technology
How Will We Prevent AI-Based Forgery? (via Harvard Business Review)
As AI gets more powerful people will find it more difficult to distinguish fact from fiction. There’s a high potential for false content to be used by rogue actors (e.g., Russia interfering with US elections). The author states that we need to move toward digital signatures and to lower the barriers for doing so. We also need a means for doing things anonymously but credibly (e.g., whistle-blowing).
C# 8: Default Interface Methods Implementation (via The Software Mentor)
Apparently having default implementation for interfaces is being considered as part of C# 8. Maybe I’m naive, but this sounds like a lazy way of getting around improper interface segregation. Also, isn’t this what abstract classes are for? The post also goes into how multiple interface inheritance becoming a nightmare (basically because they work like abstract classes now!).