// wisdom
Wisdom
A moodboard of tweets and links I keep coming back to.
No CS Degree
Inspiring interviews with successful self-taught and bootcamp developersSimplicity
Distinguished Engineers are not always right & importance of the feedback
When I first joined Google, I was reading a design doc out of curiosity. I saw a comment from a distinguished engineer contradictory to my experience. I immediately thought I must have been wrong all these years because there's no way I know better than a distinguished engineer.
Jaana Dogan ヤナ ドガン @rakyll
A coworker asked why I don't reply and explain my perspective. He also kept continuing it should never matter who I'm responding to. "Distinguished engineers know less than you think." I responded. They incorporated that feedback and made changes.
Jaana Dogan ヤナ ドガン @rakyll
That week changed my life. I rarely suffer from imposter's syndrome knowing that we are good at different pieces of the puzzle, and what matters is to be able to combine our knowledge and experience to build great things.
Jaana Dogan ヤナ ドガン @rakyll
Chasing FAANG
Staff Engineering
"Does the title even matter?" at http://StaffEng.com was a good read. IMO, the title changes the nature of taking risks. It's expected for staff+ to initiate new projects and fail more often. Until you get there, you risk your credibility more often and more significantly.
Jaana Dogan ヤナ ドガン @rakyll
Getting to staff requires dealing with high levels of ambiguity while taking risks and fighting the good fights and delivering results when few people are believing you. It's constant anxiety and overhead if the title is not helping you to communicate your track record.
Jaana Dogan ヤナ ドガン @rakyll
Junior Devs
A junior dev on my team told me the first feedback she got at work was that she was asking too many questions. WHAT!? Let people ask ALL the questions they need! It's maybe a bit annoying for you in the moment, but your time ain't worth more than their confidence and career!
Monica Dinculescu @notwaldorf
I don't know who needs to hear this, but your goal as a senior dev/manager/mentor/basically anyone who's been on the team longer than a more junior dev is to HELP THE OTHER PERSON SUCCEED. And that means answering all their questions, so that they can understand more!
Monica Dinculescu @notwaldorf
I'm so angry about this zero sum attitude. If you're worried that helping the other person takes something away from you, or they'll take your place or something, then maybe you ain't the hot shot dev you thought you were, pal. And maybe you should've learnt more as a junior?? 🙃
Monica Dinculescu @notwaldorf
Job Title
Titles matter. 10 years ago, when I was junior, I didn’t go for promo for a while. I accumulated more leadership over time. My perf said I’m splitting myself too thin even though I was just performing at the next level. I got promoted and my next perf appreciated my “thin” split.
Jaana Dogan ヤナ ドガン @rakyll
I'd be happier in a world titles mattered less but titles change the way others perceive the content and scope of your work. Titles also set the expectations for many people because not everyone can work at the same level on a project.
Jaana Dogan ヤナ ドガン @rakyll
Inclusivity problems in tech has a lot to do with titles. You won't be invited to a cross-team strategy meeting if you are officially a junior person regardless of how you perform. It's your leader's job to start including you. If they fail, you're missing opportunities.
Jaana Dogan ヤナ ドガン @rakyll
Titles matter because it impacts the way people outside of your immediate team/org work with you. If I wanted to work on projects only directly impacting a few engineers, I'd not care about titles. If you need to go beyond, keeping levels representative of your scope matters.
Jaana Dogan ヤナ ドガン @rakyll
Once you step outside the boundaries of your company, describing the scope and responsibilities of your title starts to matter. It's not unlikely for a principle engineer at a XXX billion dollar company to operate with a larger scope than many SV CTOs.
Jaana Dogan ヤナ ドガン @rakyll
Opinions
It's almost impossible to grow in career if you cannot express your personal opinions even though they are unpopular.
Jaana Dogan ヤナ ドガン @rakyll
@rakyll A friend used to say that if you are not getting in trouble at least once every 6 months, you are not pushing it. So maybe the way you grow in a career is exactly by expressing those unpopular opinions. But how this is perceived will vary from org to org
mamadero @mamadero
@mamadero Once a manager said this exact thing and it really changed my life.
Jaana Dogan ヤナ ドガン @rakyll
Big Companies
All the anecdotal stories about how large companies work are cringe-worthy. After working years for such companies, you can't truly understand how things ended up being the way they are because solutions are organically growing.
Jaana Dogan ヤナ ドガン @rakyll
At large companies, solution X probably has 20+ other alternatives but you never hear about them externally because only X has been externalized. What's external has a tendency to be "cutting-edge" because externalizing solutions means PR and attracts others.
Jaana Dogan ヤナ ドガン @rakyll
Developing New Language
Productionization new languages at Google is a lot of work. As a person who witnessed two attempts, this thread is what I learned. Google has an incubation policy for new languages. You start by being experimental, then become incubator and then graduate to a canonical language.
Jaana Dogan ヤナ ドガン @rakyll
Being able to explain why you are introducing a new language and how you are going to do cost analysis is VERY CRITICAL at the proposal stage. You can't get around by underestimating this step.
Jaana Dogan ヤナ ドガン @rakyll
Our SRE team has a lot of requirements from our languages. They enjoy identical contact surfaces with other languages, functional parity in terms of tools. But most importantly, SREs want to be able to understand and change the code base they support.
Jaana Dogan ヤナ ドガン @rakyll
Focus on the operability aspects of the language runtime, and making the monitoring and debugging surface and tooling very similar to other languages. Extra credits if you can improve incident response with your new language.
Jaana Dogan ヤナ ドガン @rakyll
It's a must to meet the operating system and architecture requirements from the runtimes and Google hardware-specific stuff's. Follow Borg's production-ready language requirements. You need all the essential debugging z-pages: /varz, /statz, /heapz, /profilez, ...
Jaana Dogan ヤナ ドガン @rakyll
Readability is a must. You need a style guideline and a proper readability process. You need to figure out the early readability approvers. Then, where to put things in the monorepo? How to handle third-party packages, modules, etc? How do you vendor?
Jaana Dogan ヤナ ドガン @rakyll
Then, it's an endless list of integrations with the developer tools we build in house. Build system support, developer tooling support, indexer support, testing and CI support, ... This list is endless and there is no easy way around.
Jaana Dogan ヤナ ドガン @rakyll
Critical libraries! At Google, everything is in-house built and you need to provide client libraries for all the critical services. You also need a proto compiler. You can't push new services without gRPC support. If gRPC doesn't already have support for your language, good luck!
Jaana Dogan ヤナ ドガン @rakyll
Essential runtime metrics should be exported and should have similar parity with other languages. You have to also have a plan for runtime version requirements, update policy and security patches policy. For example, we start using Go in production as soon as there is an RC.
Jaana Dogan ヤナ ドガン @rakyll
Then we have other runtime policies and best practices. For example, graceful shutdown policies... A more granular example would be flushing logs on program exit. You have to document and provide convenience to these every day tasks.
Jaana Dogan ヤナ ドガン @rakyll
engEDU and internal training comes next. You have to represent the language support internally all across the tech stack. You need high quality reference code for critical services and internal training programs to teach the internal flavors. You will need internal case studies.
Jaana Dogan ヤナ ドガン @rakyll
Testimonials and success stories from other teams help the internal adoption! Especially large scale systems feel more confident once more examples of the new language exists in similar scales in production. It gives an idea about how mature the support and integrations are.
Jaana Dogan ヤナ ドガン @rakyll
Working on languages at Google is hard work but it is a good opportunity to learn the entire stack end-to-end. It allows you to inherit a lot of knowledge and work with a large number of production users closely.
Jaana Dogan ヤナ ドガン @rakyll
CS Degree
There is a major difference between saying "Not all software development jobs need a CS degree." and "No one should have CS degrees." I'm not sure people understand this obvious difference.
Jaana Dogan ヤナ ドガン @rakyll
Some people's arguments around developers without CS degrees are clustered around "the fact" they don't know maths or have enough analytical skills -- even though there is an overwhelming number of people pivoting from maths & other engineering fields to software development.
Jaana Dogan ヤナ ドガン @rakyll
I am not trying to say you can only learn maths or be analytical if you are coming from these fields. What I'm trying to say is that the reality is just so inconsistent with the counter arguments that it's hard to take them seriously.
Jaana Dogan ヤナ ドガン @rakyll
A lot of people are also missing the fact that a CS degree is giving you the 5-10% of what's needed to perform as a software developer unless you are specialized in some topics like robotics. Then you learn by reviews, mentorship and experience.
Jaana Dogan ヤナ ドガン @rakyll
Unpopular opinion: I see CS degrees complementary to our craft. It teaches a little bit of the foundations. It doesn't determine the boundaries of your knowledge or your technical depth. I benefited a lot from having one and would recommend it if you have time/money.
Jaana Dogan ヤナ ドガン @rakyll
Knowing what's in the CS curriculum and how inconsistent the quality of the education is also the reason why I'm criticizing people bullshitting about these programs. Understanding each individual's knowledge and skills is more valuable than checking boxes bc they have a degree.
Jaana Dogan ヤナ ドガン @rakyll
Conferences
Being able to attend to conferences is the peak privilege in tech. That's why they are not that relevant to practitioners in the big picture. Parts of our industry live in their bubbles to be able to acknowledge this fact and we have a long way to go.
Jaana Dogan ヤナ ドガン @rakyll
Working in a conference-driven economy made me see it first hand how painful this is to people who don't have access to these venues. They feel othered and excluded from critical collaboration opportunities and discussions (even if that's never been the intention).
Jaana Dogan ヤナ ドガン @rakyll
Good API
CAP
Too many people asked me about the CAP theorem in the last 10 years and I want to share my opinion on this for once: Not everyone understands that the definition of availability has a lot of nuances and the CAP theorem is talking about a specific measure of "availability".
Jaana Dogan ヤナ ドガン @rakyll
1: Availability of the node vs system Network partition tolerance is a way to achieve "high availability" in a system. So, people are confused how the availability and partition tolerance are orthogonal concerns.
Jaana Dogan ヤナ ドガン @rakyll
2: Availability vs health In the modern context, when we talk about availability, we mean "meeting SLOs" which includes latency objectives. The CAP theorem's availability doesn't capture latency and the CAP theorem has nothing to say about latency. Another source of confusion.
Jaana Dogan ヤナ ドガン @rakyll
If you are using the CAP theorem, it's sometimes a philosophical conversation to determine whether a system is CA or CP. It's due to the confusion about what A and P means and how orthogonal they are in the original model.
Jaana Dogan ヤナ ドガン @rakyll
This is unfortunately a large topic and my thoughts won't fit here... Even though it's limited in terms of compromises presented, I still think that the CAP theorem can be useful to teach how to think. It's just important to understand its shortcomings and people's confusions.
Jaana Dogan ヤナ ドガン @rakyll
Database Migrations
System Design Interviews
Design Docs, RFCs, Etc
Another great article from @cramforce about design docs. If you are not discussing trade-offs or trying to address ambiguity, you may not need a design doc. https://www.industrialempathy.com/posts/design-docs-at-google/
Jaana Dogan ヤナ ドガン @rakyll
My ideas either fit into a tweet or a five-page design doc. I never saw them fitting into a one-pager. Why?
Jaana Dogan ヤナ ドガン @rakyll
Communication
Good Infrastructure
Bad Product Management
One problem in tech is high-level managers who doesn't have a clue about technical complexities but are trying to measure the impact of infrastructure projects and failing to understand their value proposition. There I said it.
Jaana Dogan ヤナ ドガン @rakyll
If I was an executive and if our main business was a developer product, I would be using our product on a daily basis as if I'm a practitioner. I wonder how many executives do this at any of the tech companies.
Jaana Dogan ヤナ ドガン @rakyll
Burnout
I'm never taking 6 months without a real vacation again, cause that shit does a number to your mental and emotional health. 😭
Iheanyi Ekechukwu @kwuchu
Burnout threads often imply its working too much. Whenever I’ve felt burnt out it was a misalignment with how I was spending my energy, not just the amount. Working too much makes me tired, but burnout feels like suspended momentum without a worthwhile goal.
Layla Sells 🐚🦪 @LaylaSells_cshs
Wow 😳 *burnout == suspended momentum without a worthwhile goal* struck a chord. I spent some time reflecting and wanted to help those who might be experiencing burnout now. 🧵🧶 1/13
Layla Sells 🐚🦪 @LaylaSells_cshs
When we think something is “killing our career” or “toxic” or any of the other awful sounding things forced on us, we shrink a bit. We work hard, but the focus is just trying to get out. We spin on our stationary bikes, tired, sore and in the same spot. 2/13
Layla Sells 🐚🦪 @LaylaSells_cshs
If your goal from a spin class is getting across town. Wow, you’re going to feel like a failure. But if that class is just practice. If you collect your learnings and toned muscles and head out to do something new it’s totally different. 3/13
Layla Sells 🐚🦪 @LaylaSells_cshs
Burnout feels awful and makes it super hard to function. As you get more drained, it compounds. You have less energy. Brute forcing your actions becomes harder. You do less. Guilt and the fear of failure creep in. 4/13
Layla Sells 🐚🦪 @LaylaSells_cshs
Stress & anxiety leads to over-reliance on our primal brain when we need our prefrontal cortex most. Please be kind to yourself. The more you can build up your own psychological safety, the more access to your logical brain you’ll have back. 5/13
Layla Sells 🐚🦪 @LaylaSells_cshs
The longer down a path, the more it feels like wasted time. That’s scary. But really, you have no idea how the story ends. You don’t know what great things your future self will do; what things become possible only after going through this. 6/13
Layla Sells 🐚🦪 @LaylaSells_cshs
As far down the wrong path that you think you’ve gone, you can always turn back or take the next fork in the road. Staying the course down a regretted path only takes you further down that path. What would your future self a year (or 5) down the road be happy you did today? 7/13
Layla Sells 🐚🦪 @LaylaSells_cshs
You don't have to - stay if you're miserable - be miserable to leave (you can be happy & want something different) - leave to still change it all - have all the answers to make new decisions - jump from dread to ideal to feel better 8/13
Layla Sells 🐚🦪 @LaylaSells_cshs
If you don’t even know where to begin. Try a thought download (https://devyourlife.com/thought-download) or 30 days of gratitude (my exp: https://devyourlife.com/public-gratitudes). Experiment with how you can build your own personal momentum. 9/13
Layla Sells 🐚🦪 @LaylaSells_cshs
When I start feeling off, I do both. I get my thoughts out of my head and then I restart my gratitude practice. It doesn’t have to be public or in a fancy notebook. Yes gratitude helps you appreciate what you have, but it also retrains your brain to search for good things. 10/13
Layla Sells 🐚🦪 @LaylaSells_cshs
I consider myself a problem solver by trade. The problem with being a problem solver is that you’re always on the lookout for problems to solve. Taking the time to intentionally practice finding good things builds your positive pattern matching skills. 11/13
Layla Sells 🐚🦪 @LaylaSells_cshs
In part it’s about giving the good stuff it’s fair share of attention. Another benefit of tracking what you are grateful for is that it shows you what you value which is an important input into deciding what you want to do (more of). 12/13
Layla Sells 🐚🦪 @LaylaSells_cshs
Find your little wins. “Go as far as you can see; when you get there, you'll be able to see farther.” - JP Morgan 13/13
Layla Sells 🐚🦪 @LaylaSells_cshs