Wednesday, April 05, 2023

Key components of AI

Machine Learning: Machine learning is a subset of AI that involves training machines to learn from data, without being explicitly programmed. This involves creating models and algorithms that can analyze data and identify patterns, allowing machines to make predictions or decisions based on that data.

Natural Language Processing: Natural Language Processing (NLP) is a field of AI that focuses on understanding and interpreting human language. NLP algorithms are used in applications like chatbots, virtual assistants, and language translation software.

Computer Vision: Computer vision is another area of AI that involves teaching machines to "see" and interpret visual information. This can include tasks like image recognition, object detection, and facial recognition.

Robotics: Robotics involves the development of physical machines that can perform tasks autonomously, or with minimal human intervention. This can include industrial robots, self-driving cars, and drones.

Expert Systems: Expert systems are AI programs that are designed to mimic the decision-making abilities of a human expert in a particular field. They are often used in fields like medicine, finance, and engineering.

Neural Networks: Neural networks are a type of machine learning algorithm that are inspired by the structure of the human brain. They consist of interconnected nodes that are capable of processing and analyzing data.

Machine Learning Basics

Machine learning is a type of artificial intelligence that allows computers to learn from data and improve over time without being explicitly programmed.

Here are some key concepts in machine learning:

  1. Data: Machine learning algorithms need data to learn from. This data can be labeled (i.e., the desired output is known) or unlabeled (the desired output is unknown).
  2. Model: A machine learning model is a mathematical representation of the relationships between the input data and the desired output. The model is trained on a labeled dataset to learn these relationships and is then used to make predictions on new, unseen data.
  3. Training: Training a machine learning model involves feeding it a labeled dataset and iteratively adjusting the model parameters to minimize the difference between the predicted output and the actual output.
  4. Validation: Validation is the process of evaluating the performance of a trained model on a new, unseen dataset to ensure that it generalizes well to new data.
  5. Testing: Testing is the final stage of machine learning, where the performance of the model is evaluated on a completely new, unseen dataset to assess its overall effectiveness.
  6. Supervised Learning: This type of machine learning involves training a model on labeled data to predict a specific output variable. The goal is to minimize the difference between the predicted output and the actual output.
  7. Unsupervised Learning: This type of machine learning involves training a model on unlabeled data to identify patterns and relationships within the data.
  8. Reinforcement Learning: This type of machine learning involves training a model to interact with an environment and learn from the rewards and punishments it receives based on its actions.

Wednesday, November 03, 2021

Quotes from The Art of Software Development - James Shore

  • It is difficult to imagine how software will work even before we begin using it. 
  • It is harder to think of absolutely everything your software needs to do. (We cannot specify all the requirements upfront.). That is requirements are emergent. 
  • Core concepts of Agile are:
    • Rely on people: 
      • Trust people
      • Put decisions in their hands
      • Base your work on healthy collaborative relationships
    • Deliver Value frequently
      • Experiment
      • Seek feedback
      • Use feedback to improve your product
    • Eliminate waste:
      • Work in small increments.
      • Embrace possibility of failure
      • Others are 
        • Problems due to wait time
        • Lack of knowledge
        • Time consuming daily stand ups
        • Lengthy planning and other meetings
        • Manual regression takes long time
    • Seek technical excellence:
      • Start simple, add complexity only in response to needs. 
      • Create systems that are easy to evolve
The road to agile mastery - Shu Ha Ri



Tuesday, November 02, 2021

Sprint goal

Sprint goal ties up to the product goal which again aligns with the product goal all of which aligns with the Product Strategy. This goal aligns with the product vision. 

Sprint goal >> Product Goal >> Product Strategy >> Product Vision >> Company Vision

Image courtesy: Roman Pichler.

Sprint goal: is a brief explanation of what the team plans to achieve during the course of an Agile sprint. 

There HAS to be a single sprint goal towards which the team will focus all its energies and try to achieve by end of the iteration. However, as an antipattern it is seen teams have multiple sprint goals - as a summary of all the assorted pieces of work the team may be working on. 

Having a single goal

Having a single goal forces you to pull users stories that are aligned to the finely-grained product area. (Allen Holub). This also means you may be working on some lower-value stories just because they are aligned. That leaves lots of high-value work items in the backlog simply because they are unrelated to the Single Goal. 

Product goal: describes the future state of the product. It is a long-term objective towards with the scrum team work. 

Product goal is best used to describe a specific or a measurable benefit or outcome a product should create in the course of say next two to six months.

Example: acquire users, increase conversion rate, generate revenue, reduce technical debt, etc. 


If we already have automation, what's the need for Agents?

“Automation” and “agent” sound similar — but they solve very different classes of problems. Automation = Fixed Instruction → Fixed Outcome ...