• Short posts

    A list of software resources
    Curated & Timeless
    Swipe right to explore About shorts
    Traveling Coderman
  • Feature Factories

    A feature factory creates features like in a factory assembly line.

    • Impact is not measured.
    • Teams are shuffled.
    • Shipping is celebrated.
    • Failures aren't acknowledged.
    • Work is not connected to core metrics.
    • PMs do not retrospect their work.
    • People obsess over prioritizations.
    • The team does not retrospect their work.
    • Work is handed off.
    • The team is working in large batches.
    • New deals drive new features.
    • Shiny things are prioritized.
    Read post from John Cutler
  • Functional programming

    In functional programming, data is immutable and functions are stateless.

    Function arguments can not mutate in the function body. The result of a function is its return value. Functions don't have other effects nor other results.

    function changeGPA(student, amount) {
    return [
    student[0],
    student[1] + amount,
    ];
    }

    function changeGPAs(students) {
    return students.map((student) =>
    changeGPA(student, 0.1)
    );
    }

    Functional programming increases debuggability and reusability. Reasoning is easier since functions express their result through the return value.

    Read post from Cassidy Williams
  • Big Tech does not use Scrum

    In Big Tech, engineers lead the projects. Their teams choose the project management approach. Projects spanning multiple teams are lead by Technical program managers.

    Big Tech gives teams autonomy and assigns them problems. They make data, code and metrics available to the teams. Communication is direct between engineers without middle man.

    Read post from Gergely Orosz
  • What is a strategy?

    Often leaders confuse goals with strategy. Or declare initiatives as "strategic".

    For example, increasing ARR by 200% is a goal. It doesn't specify how to achieve it. Achieving such a goal requires a strategy. It does not suffice to put in more effort or adjust some processes.

    A strategy is an analysis of an underlying potential and a set of coherent actions to utilize this potential.

    A focus on a new market. A user problem surfacing that a new product can solve.

    A great strategy focuses and aligns the efforts of the company to utilize such a potential.

    Read post from Richard Rumelt
  • Fizz Buzz

    Fizz Buzz is a simple algorithmic problem for interviews.

    Write a program that prints the numbers from 1 to 100. But for multiples of three print "Fizz" instead of the number and for the multiples of five print "Buzz". For numbers which are multiples of both three and five print "FizzBuzz".

    Fizz Buzz is intentionally simple. Nevertheless, of those applying to programming jobs, only few are able to solve it.

    If the applicant is able to, the interviewer can move on to deeper software engineering topics.

    A program like Fizz Buzz acts as a pre-filter to verify programming ability. While avoiding spending too much time on programming in the interview.

    Read post from Jeff Atwood
  • A guide to web accessibility

    Web accessibility makes the web accessible to more people. Many things improve web accessibility.

    • Semantic HTML elements (ul, button, a and more).
    • Users can fully use the website with the keyboard.
    • Each form input has a label.
    • Text has a contrast higher than 4.5:1 with its background.
    • Alternative text for images.
    • Consistent header tags (h1, h2 and more).
    • The focused element is correctly set.
    • Buttons only displaying icons contain an alternative text.
    Read post from Konstantin Tieber
  • Should micro frontends embed micro frontends?

    It's important to distinguish applications from libraries.

    A micro frontend is an application. It handles routing, translations and more. It could exist as a standalone without the surrounding app shell.

    Applications should not embed applications.

    The semantics would become unclear. Which application is in charge of the window url? Which application is in charge of the local storage? The modals of which application would take precedence? Hence, micro frontends should not embed micro frontends.

    Instead, micro frontends can embed libraries.

    A library is a collection of components. They assemble to an application but don't touch shared resources like window url or local storage.

    Instead of loading a micro frontend at runtime from a micro frontend, a library from another team can be embedded in the build process.

  • How can I inject HTML into each 11ty post?

    Assign the additional markup to a variable. Pass it and the content to a filter inject.

    {% set snippet %}
    {% include "_includes/my-snippet.njk" %}
    {% endset %}

    {{ content | inject(snippet) | safe }}

    Second, define the inject filter. It consists of three steps: Parse, manipulate and serialize.

    const cheerio = require("cheerio");

    module.exports = function (
    eleventyConfig
    ) {
    eleventyConfig.addFilter(
    "inject",
    (content, injection) => {
    const $ = cheerio.load(content);
    $(
    "body > h2:nth-of-type(3)"
    ).before(injection);
    return $.html($("body"));
    }
    );
    };

    With these steps, you will get an injected HTML snippet into every post.

    Read post
  • What should be a component?

    Good components are defined by how a user interacts with it. Not by how it looks.

    A user can click a button expecting an action. A user can confirm a modal expecting changes to be persisted.

    For a card, there is no reasonable interaction. It's defined by visuals. A card should be a CSS class instead of a component.

    For a search fields, there are too many reasonable interactions. Entering text, results in a dropdown, filter options, boolean operators. None are true for all search fields. A search field should not be a shared component.

    When adding a component, consider what its interactions are.

  • Finding product-led companies

    Distinguish sales-led from product-led companies with two things on their websites main page.

    First, the call-to-action.

    A product-led company has a call-to-action "Sign up" or "Try it". It leads you to the product. Maybe with a tour, maybe with a wizard. But it leads you without human interaction to the product.

    A sales-led company has a call-to-action "Schedule a demo", "Read the whitepaper", "Contact Sales". A chat bot might greet you connecting you with sales.

    Second, the addressed audience.

    A product-led company talks to "you" as the user and what advantages "you" will have. A sales-led company talks about the user in third person. It talks to the buyer. "Your engineers", "your team" or "your employees".

    Applying both rules, you get a pretty good idea about the companies approach.