Sunday, January 21, 2018

Interesting talks/podcasts 2018 Jan (II)


More interesting talks and podcast that I think that worth the time:


Sunday, January 07, 2018

Interesting talks/podcasts 2018 Jan

New year, new talks and podcasts. Enjoy...

Saturday, December 30, 2017

"How" vs. "What"

As I continue to grow as a software developer, I've come to realize that my interests lie more in the way we create solutions (How) rather than the solutions themselves (What).

At the beginning of my career, I was captivated by the incredible things that technology allows us to do - from launching rockets into space to developing video games and robotics. However, I've come to understand that the true value lies in how we approach the development process. It's not just about the impressive products we can create but about the method by which we bring those ideas to life.

In our daily work as developers, the most important aspect is how we tackle challenges and bring our visions to fruition. This focus on process rather than the product has become increasingly clear to me over time.

Currently, the following aspects of my work as a software developer are most important to me:
  • The way we work as a team and support one another's growth as developers.
  • Our ability to communicate and collaborate effectively.
  • The value we create for our customers through our solutions.
  • Our dedication to continually innovating and improving our processes, relationships, and learning. 
These are the elements that, in my opinion, truly drive success in our field.

For me, the journey is just as important as the destination. It's the people and experiences I encounter along the way that truly matter.

It may seem counterintuitive, but in my experience, I've found that by focusing on the "how" of things - the process and the people involved - I'm able to be a part of creating strong, effective teams that produce great results and products.

So to evaluate new opportunities, I follow these steps:
  • First, I evaluate whether the opportunity aligns with my personal mission and ethical values (See more at my Personal Mission).
  • Second, evaluate "How" they work:
    • Whether the focus is on resources and assets or people and skills.
    • Whether the company's values are reflected in their hiring practices.
    • How the company approaches uncertainty and risk in the product development process.
    • Whether the focus is on outputs or outcomes.
    • Whether the company is open to validation and learning, or if they seem to have all the answers already.
    • Whether there is a genuine culture of collaboration within the company.
            In summary, are they optimized for continuous change or are they optimized for an industrial age that is no longer relevant? ;) 

            I'm trying to determine if the company's culture is 'green' or 'teal' in nature (see the following infographic), or if at least the company is open to evolving towards those models.




            For me, "How" we work directly affects my day-to-day satisfaction, my motivation, and my overall performance.

            Related stuff:

            (Text updated 2022-12-20)

            Saturday, December 09, 2017

            "It depends" / Jocelyn Goldfein model for software classification

            Continuing with the idea of knowing the context of our software as the first step to making better decisions (see it depends blogpost). I will explain in this post a software classification that I found very useful.

            This software classification was created/defined by Jocelyn Goldfein in the article http://firstround.com/review/the-right-way-to-ship-software/ and explained at The "right" way to ship software Jocelyn Goldfein - hack.summit 2016.

            The presentation's core message is that there is no single "right" way to ship software, as every release process optimizes for different goals and involves trade-offs. The optimal approach is situational, determined by a company's technology stack/deployment model and business model/mission, requiring a flexible and adaptable mindset rather than adherence to a "religious" belief about one methodology.

            The model classifies an application in two axes:

            • Horizontal axis: Technology stack and deployment model. From very costly to deploy (on-premise, operating systems, embedded software, etc.) to easy to deploy (web application in a cloud PaaS).
            • Vertical axis: Business model and customer type. From costly enterprise-critical software to free consumer apps.

            This classification helps define the cost of making a mistake, the optimal release process, how to gather feedback, and more.

            For instance:

            • Web/cloud deployment allows rapid iteration and testing. Bugs are easier to fix, enabling a more risk-seeking approach ("move fast and break things").
            • On-prem or device deployments are slower and riskier. Bugs are expensive to fix and may severely disrupt customer operations, thus requiring more conservative, predictable processes.
            • Enterprise-grade software often requires predictability over speed. Customers need to plan around releases.
            • Consumer-facing software benefits from great UX and fast experimentation cycles. New features can be introduced continuously without prior scheduling.

            Beta programs are an especially effective tool across all quadrants: they allow for frequent shipping and direct feedback from users who are willing to tolerate early-stage issues in exchange for access and influence.

            Changing release processes is hard, because it usually demands culture change. Engineers tend to become attached to the processes that worked for them in the past, even if the current context requires a different approach. This can lead to internal conflict, especially when companies pivot from one quadrant (e.g., web) to another (e.g., mobile). To navigate this, teams should align on shared values and mission. Processes are negotiable; purpose is not.

            When hiring, prioritize learning mindset over specific methodologies. New hires should understand the current context to avoid blindly applying processes that made sense elsewhere but may not fit now.

            I found this classification very useful for my day to day work. But remember, the context can be different for each part of a large system and also evolve with time.

            According to this classification, these are the systems in which I have been involved:

            Thank you, Jocelyn Goldfein, for this useful classification model.

            References: