Topics

Featured in Development

Peter Alvaro talks about the reasons one should engage in language design and why many of us would (or should) do something so perverse as to design a language that no one will ever use. He shares some of the extreme and sometimes obnoxious opinions that guided his design process.

Featured in AI, ML & Data Engineering

Today on The InfoQ Podcast, Wes talks with Katharine Jarmul about privacy and fairness in machine learning algorithms. Jarul discusses what’s meant by Ethical Machine Learning and some things to consider when working towards achieving fairness. Jarmul is the co-founder at KIProtect a machine learning security and privacy firm based in Germany and is one of the three keynote speakers at QCon.ai.

Featured in Culture & Methods

Organizations struggle to scale their agility. While every organization is different, common patterns explain the major challenges that most organizations face: organizational design, trying to copy others, “one-size-fits-all” scaling, scaling in siloes, and neglecting engineering practices. This article explains why, what to do about it, and how the three leading scaling frameworks compare.

Five Habits of Highly Effective Software Developers

What are some of the code-level practices of highly effective developers? Robert Miller wrote a detailed article on Java.NET covering 5 practices which could apply to any language, including minimalist constructors, methods with clear focus and intent, minimizing logic in mutating methods, and minimizing dependendies between behaviour methods. Miller's article frames the practices as making developers more effective, and thus more profitable.

The habits, summarized below, are:

Habit 1: Constructor Performs Minimal Work. Ideally, its constructor will only load data into its instance variables using the constructor's parameters Habit 2: Methods Clearly Convey Their Intent. Long and descriptive method names help developer teams quickly understand the purpose and function of their software. Habit 3: An Object Performs a Focused Set of Services. Each object in the software to be focused on performing a small and unique set of services. Objects that perform a small amount of work are easier to read and more likely to be used correctly because there is less code to digest.Habit 4: State-Changing Methods Contain Minimal Behavior Logic. Intermixing state-changing logic with behavior logic makes the software more difficult to understand because it increases the amount of work happening in one place.Habit 5: Behavior Methods Can Be Called in Any Order. Ensure that each behavior method provides value independent of any other behavior method.