๐Ÿ—๏ธ Software engineering

Misc

  • What distinguishes great software engineers? [๐Ÿ‡ฌ๐Ÿ‡ง] [Dec 2019]

    • Another summary from the other blogger.

      A paper by Microsoft researchers to identify the most important attributes that distinguish great engineers:

      Importance Attribute

      Must

      Pays attention to coding details, such as error handling, memory, performance, style

      Must

      Mentally capable of handling complexity; can comprehend multiple interacting software components

      Must

      Continuously improving: improves themselves, their product, or their surroundings

      Must

      Honest: provide credible information and feedback that others can act on

      Must

      Open-minded: lets new information change their thinking

      Must

      Executes: knows when to stop thinking and to start doing

      Must

      Self-reliant: gets things done independently and does not get blocked easily

      Must

      Self-reflecting: recognizes when things are going wrong with a plan and pivots

      Must

      Persevering: not dissuaded by setbacks and failures

      Must

      Fits together with other pieces around it: code accounts for surrounding constraints and products.

      Must

      Knowledgeable about their technical domain, including product, platform, and competitors

      Must

      Makes informed trade-offs: code is responsive to time to market goals, critical needs of the business

      Must

      Updates their decision making knowledge: does not let their understanding stagnate

      Must

      Curious: desires to know why things happen and how things work

      Must

      Evolving: code is structured to be effectively built, delivered, and updated incrementally.

      Should

      Knowledgeable about tools and building materials: knows strengths and weaknesses of code

      Should

      Grows their ability to make good decisions: builds understanding of possible outcomes of decisions

      Should

      Sees the forest and the trees: reasons through situations at multiple levels of abstraction

      Should

      Craftsmanship: wants their output to be a reflection of their skills and abilities

      Should

      Does due diligence beforehand: examines available information before deciding

      Should

      Elegant: designs solutions that others can understand and appreciate

      Should

      Asks for help: knows the limits of their knowledge and supplements it with knowledge of others

      Should

      Desires to turn ideas into reality: takes pleasure in building software

      Should

      Long-termed: considers costs and benefits over time, not just short-term goals

      Should

      Willing to go into the unknown: can step outside of comfort zone to explore a new area

      Should

      Is a good listener: effectively obtains, comprehends, and understands othersโ€™ knowledge

      Should

      Passionate: intrinsically interested in the area they are working in

      Should

      Manages expectations: clearly communicates what they are going to do and by when

      Should

      Focused: prioritizes time for the most impactful work

      Should

      Systematic: address problems in an organized, principled manner

      Should

      Adapts to new settings: continues to be valuable to the organization as environment changes

      Should

      Integrates understandings of others: can build a more complete understanding with others

      Should

      Does not make it personal: avoids deciding based on individual goals and feelings

      Should

      Creative: generates novel and innovative solutions based on the context and its limitations

      Should

      Walks-the-walk: acts as an exemplar for others to follow

      Should

      Knowledgeable about software engineering processes: knows the bests practices and techniques

      Should

      Anticipates needs: proactively determines potential problems and needs

      Should

      Uses the right processes during construction: uses best practices and techniques to construct software

      Should

      Resists external pressure for the good of the software product: stands firm against outside pressures

      Should

      Has a good reputation: has the belief, respect, trust, and confidence of others

      Should

      Productive: achieves the same results as others faster

      Helps

      Knowledgeable about customers and business: understands their productโ€™s value proposition

      Helps

      Creates shared understanding with others: shapes othersโ€™ knowledge via effective communication

      Helps

      Creates shared success for everyone: establishes long-term goals that everyone can buy into

      Helps

      Aligned with organizational goals: takes actions for the good of the product and the organization

      Helps

      Well-mannered: treats others with respect

      Helps

      Data-driven: lets data drive actions, not solely intuition

      Helps

      Creates a safe haven for others: frees others to make decisions based on what is right, not fear

      Helps

      Mentoring: teaches, guides, and supports other developers

      Helps

      Knowledgeable about people and the organization: aware of othersโ€™ responsibilities and knowledge

      Helps

      Challenges others to improve: encourages expanding capabilities and goals

      Helps

      Personable: establishes trusting, positive social relationships

      Helps

      Hardworking: is willing to work more than 8 hour days to deliver

      Helps

      Trades favors: builds personal equity with others allowing them to call upon others later

  • aicommits

    A CLI that writes your git commit messages for you with AI. Beware: it sends your code to OpenAI!

  • Bloom filter calculator