- Aug 2024
-
kb.databasedesignbook.com kb.databasedesignbook.com
-
For clarity, here is what else would be included into a time zone definition: What is the UTC offset of this time zone? Does this time zone have Daylight Savings Time? When does DST begin? When does DST end? What is the UTC offset when DST is on? We’d also need to model previous definitions of a time zone. For example, the government may decide to change the day when DST goes into force, or get rid of DST, etc. Is this time zone active or retired? This is an incomplete list. Modeling all of this data using our approach is possible, but is a separate, and quite technical exercise. Let’s get back to events.
We define the other attributes of a timezone
-
For the purposes of this text, we’ll do only a very minimal model of Timezone. Basically, the only attribute we’d introduce is: Anchor Question Logical type Example value Physical column Physical type Timezone What is the human-readable name of this Timezone? string “Europe/Kyiv” We won’t go into details of how the timezone is actually defined. We assume that there is a complementary logical model that describes the structure of timezones. Also, we assume that there is some function that takes a local time in the specified timezone and returns UTC time (and vice-versa). This will be discussed in more detail in the next section, when we will talk about repeating events.
Attributes: - What is the human-readable name of this Timezone? Assumptions: - existence of a logical model describing the structure of timezones - existence of a function that converts a local time to another zone
-
Anchors Having said that, it seems that we need to add two anchors: Anchor Physical table Timezone TimeEvent There are dozens of time zones in the world. We can confirm the validity of the Timezone anchor by writing down example sentences: “There are 120 Timezones in our database”; “When this import script finishes, a new Timezone is added to our database”. (Timezone data structure is discussed below.) The sentences for TimeEvent are also straightforward: “There are 2500 TimeEvents in our database”; “When this button is clicked, a new TimeEvent is created”;
We add 2 anchors: Timezone TimeEvents
-
We have one motivating example: plane tickets. Planes often cross time zone boundaries, and the take-off and landing times in your ticket would be in different time zones. Say, there is a flight from Amsterdam to London that departs on December 24, at 16:50 (Amsterdam time) and lands at 17:05 (London time). So, the flight duration is 1 hour 15 minutes.
Plane tickets are example of event spanning multiple timezones (starting and ending)
-
⚓Anchor1* ⚓Anchor2 Sentences (subject, verb, object, cardinality) Cardinality (1:N, M:N, 1:1) Physical table or column User < DayEvent User creates several DayEvents DayEvent is created by only one User 1:N Links help to pin down the correct design for many complicated scenarios. To describe the link, you need to write down two sentences. If the sentences don’t make sense or do not match the reality of the business — you’ve just prevented a design mistake! What do we see in this table? Link connects two anchors. Anchors could be different, like here, or the same. For example, “Employee is a manager of Employee” is one example of one such link. To specify cardinality, we use a custom notation with the “<” character (other possibilities are: “—”, “=”, and “>”). It is the same as “1:N”, but additionally it allows you to specify which anchor is “only one” and which is “several”. We use two formalized sentences that involve two anchors, a verb, and information about cardinality. Those sentences allow us to validate and document our design. We write down the cardinality again, in a more familiar way in a separate column. Pinning down cardinality is essential, so we make a lot of fuss about it. (We’ll discuss the links much more, of course).
- To design a link, you write down two formalised sentences. If they don't match the reality, then you've just prevented a design mistake
- Link connects two anchors (same or different anchors)
- Cardinality is specified with <,>,-,=, -
-
Links Where do we store the information that this particular user has created this particular DayEvent? At the first glance, this may look like an attribute of DayEvent, right? (Actually, no). Anchor Question Logical type Example value Physical column Physical type DayEvent Which User has created this DayEvent??? number??? 2??? Attributes cannot contain IDs. Instead, when two anchors are involved, we need to use links.
Attributes cannot contain IDs, therefore we use links
-
Attributes of DayEvent Suppose that we want to schedule a two-day company retreat that begins on January 14th, 2024. In terms of anchors, this is going to be a DayEvent. Looking at the paragraph above, we can see that we need to store the following data about the DayEvents: Name of the event; Begin date and end date of the event. Let’s write that down in our table: Anchor Question Logical type Example value Physical column Physical type DayEvent What is the name of this DayEvent? string “Company retreat” DayEvent When does the DayEvent begin? date 2024-01-14 DayEvent When does the DayEvent end? date 2024-01-15 What can we see here? We defined our first three attributes; We don’t have any short names for the attributes, and this may bother us a little. We’d expect to have something like “DayEvent_name” or some other identification to refer to the attribute later in the text. We’ll return to this topic later. We have a new logical type: date. We won’t need to deal with timezones in this section. For most events in actual calendars the begin date and end date would probably be the same (most events are single-day). We’ll just store the same date in both attributes. This allows us to treat the special case (single-day events) as the general case (multi-day events). This is a general design strategy, but we’re going to investigate later if this line of thinking is always applicable.
We specify 3 attributes on the DayEvent anchor: - No short names but questions - DayEvent begin and DayEvent end will probably be the same value
-
Which data about users should we model? Users are ubiquitous, and different systems may want to store a lot of information about users. For this post, we’re going to model just the bare minimum of user data: emails. Anchor Question Logical type Example value Physical column Physical type User What is the email of this User? string “cjdate@example.org” What can we see here? This attribute belongs to the User anchor that was defined in the previous section; We use questions to describe all sorts of attributes. Later on we’ll discuss why we prefer this style over “User’s email” and such; Logical type is quite simple. If you expected to see “VARCHAR(128)” here or something like that: no, we’ll discuss this much later. We show an example value that helps us to confirm our thinking. Again, in simple cases this is very obvious, but it would help reviewers to confirm that everyone is on the same page. We won’t be dealing with two last columns for now, we’ll discuss the physical model later in this post.
To define the attributes of an anchor, we use: - Question - Logical Type - Example Value
(We can see that we've added, yet still empty, a physical column and physical type table heading)
We use questions to define attributes. This will be explained later on.
-
Part 1: Basic all-day events Anchors First thing we need is to find some so-called anchors. Anchors are also known as entities. Anchors are usually nouns, such as User and Event.
Anchors = Entities: - usually nouns e.g. User and Event - Can be counted - Can be added
Anchors handle the two following things: - IDs - Counting
Any other data is the responsibility of Attributes
-
For the repeating events, the specific instances can be moved to a different date/time. You can also delete some instances of the repeating events, for example, skipping a certain weekly meeting.
Each instance of a repeating event can be set to a different time/date, and their occurrence can be customised
-
The most complex part of calendar events is times and dates: “All day” events vs time-based; Both can be repeated and non-repeated; All day events: Can spread over multiple days; Time-based events: Can have associated time zone; Have begin and end time; Begin and end time can happen on different days; Begin and end time can be in different timezones; Both all-day and time based events: Can be repeated daily, or every N days; Can be repeated weekly, on certain days of the week; again, it can be every two or more weeks; Can be repeated monthly, on a certain day or day of the week; Can be repeated annually; Repeating events can go on forever, until a certain date, or for a certain number of repetitions;
Time and dates are the most complex part of calendar events.
-
Events are the central part of Google Calendar, and we’re going to design them as closely as possible to the real thing. Events have title and description, as well as some other minor attributes such as location.
Events will be implemented as close as possible to their real counterpart in Google Calendar
-
Time zones Every country and territory uses one or more time zones. Time zone definitions occasionally change. Each country, being a sovereign state, can decide to change their time zone definition. Time zones may use Daylight Savings Time, or can be uniform. New time zones may be introduced, or retired. In this text, we won’t go into complications of handling time zone definitions. If you were really implementing a serious global calendaring solution, you’d probably have a separate team dealing with such issues. However, in this tutorial we will implement full timezone-aware events that are usable in practice.
timezones can change, be created and are set by nations they may use daylight saving time or not
-
Let’s write down a quick draft of time-based events and see how it compares to date-based events. Quoting the “problem description” section: “Time-based events: Can have associated time zone; Have begin and end time; Begin and end time can happen on different days; Begin and end time can be in different timezones;”
Reminder of Time based event from the problem description section
-
A peek into the physical model Again skipping ahead: if we would have stopped right now, and tried to write down the physical design for the schema that we have so far, here is what we’d see. This is just to confirm that we’re heading in a familiar direction. Table: day_events id name begin_date end_date user_id 20 “Company retreat” 2024-01-14 2024-01-15 3 … … … … … We’ll discuss the physical model later in the “Creating SQL Tables” section.
Peeking into the future, looking at physical model that'll be created with SQL
-
Let’s skip ahead a little bit, and show how the table data about the users looks like. We’ll be using a simple strategy to design physical tables, so the result is going to be completely unsurprising: Table users id email … 2 “cjdate@example.org” … 3 “someone@else.com” … … … … This is just to show the part of the final result so that you know where we’re heading to. Here, a user with ID=2 has email “cjdate@example.org”, and a user with ID=3 has email “someone@else.com”.
We get a sneak peek of the destination
-
We’re going to see more examples of logical types later. We extensively discuss the logical types in the book.
More logical types will be discussed later and in the book
-
Attributes of User Attributes store the actual information about anchors.
Attributes define the data we store about an anchor/entity
-
To validate that we have an anchor, we can write a sentence using the name of this anchor. If this sentence makes sense, then this is an anchor. Example sentences: “There are 200 Users in our database”; “When this form is submitted, a new User is added to the database”; Same for DayEvent: “There are 3000 DayEvents in our database”; “When this button is clicked, a new DayEvent is created”; Such sentences will be useful later in more complicated cases. If the sentence does not make sense, then it may be an attribute: “There are 400 Prices in our database” (???); “When this form is submitted, a new Price is added to the database” (???).
To validate an anchor, put it in a sentence. If it makes sense, then we probably have a valid anchor. If it doesn't, it should probably be an attribute.
-
We won’t be dealing with the last column (“Physical table”) for now, we’ll discuss the physical model in the “Creating SQL Tables” section below.
Interesting to see that for each Anchor, there's a corresponding physical table. For now, we won't be dealing with that.
-
So, for example, in our database tables there would be a User with, say, ID=23, and DayEvent with ID=100, etc.
An example
-
Basically the only thing that anchors handle is IDs and counting. All the data is handled by attributes, discussed in the next section.
Anchors only handles IDs and counting
-
The first two anchors that come to mind are: Anchor Physical table User DayEvent
Lets say we first identify two anchors: User, DayEvent
-
Anchors are extremely obvious in simple cases, but may get tricky in non-obvious cases. We’re going to write down even the most obvious anchors, to get some experience with handling them.
Anchors can be trivial but are tricky in non-obvious cases
-
Anchors are something that can be counted. “No users”, “one user”, “two users”, etc. Also, one defining characteristic of an anchor is that it can be added: “adds a user record to the database”.
Anchors/Entities can be counted
-
You can change the schedule of the repeated event, even if some of the events already happeneds. For example, you can switch from two project meetings every week on Tuesday and Thursday to one meeting every two weeks, on Fridays.
Future occurence of existing events can be modified
-
Google Calendar is a multi-user system. For example, users can share the events with other people. We’re going to implement only a bare minimum of user-related data.
We'll implement minimal user related functionality
-
We’re going to implement a big part of Google Calendar functionality. Some parts we’ll skip, but we’ll try and implement every feature of calendaring. Some areas we’ll implement just enough to be able to discuss the more interesting parts. In the end you will be able to add missing functionality to the schema, going through the same process.
We cover the core calendaring functionalities.
-
As the second step, when the logical model is decided, we design the physical tables. This process is very straightforward. For each element of the logical model there would be a corresponding table or column. Physical models can be as dependent on a specific database implementation as you need.
Second step is the physical tables where each element of the logical will be converted to either a table or a column, by taking into account the specific db implementation.
-
We begin with a logical model, written in a simple tabular format. We use short formalized sentences to define data attributes and relationships between entities. This helps us to make sure that our logical model aligns with the actual business requirements. Logical model is independent from a specific database implementation
First step is logical model, defining entities, attributes and relationships
-
Often people start with designing the tables right away, but we take a different approach. This tutorial is aimed at people who are new to database design. The goal of the process is to answer several important questions: Where to begin? How to make sure that we did not miss anything? how to ask for feedback on our database design; how to fix design mistakes;
Aimed at beginners and looks to answer any essential questions one might have
-
We will first build a complete logical model that describes the calendar data to be stored. This should take most of the effort (~80% of text by word count). After the logical model is finished, we’ll build table design directly based on the logical model
Logical Model -> Table design
-
-
Local file Local file
-
Figure 1.1: A concept map showing the mathematical topics that we will cover in thischapter. We’ll learn about how to solve equations using algebra, how to model the worldusing functions, and how to think geometrically. The material in this chapter is requiredfor your understanding of the more advanced topics in this book.
- Algebra is the manipulation of number/variables
- function are represented in the cartesian plane
- etc.
-
Do NOT worry about math! You are an adult, and you can learn math muchmore easily than when you were in high school. We’ll review everything you needto know about high school math, and by the end of this chapter, you’ll see thatmath is nothing to worry about.
As an adult you shouldn't be worried about math as you'll learn it faster than in high school
-
n this chapter we’ll review the fundamental ideas of mathematics, including num-bers, equations, and functions. To understand college-level textbooks, you needto be comfortable with mathematical calculations. Many people have trouble withmath, however. Some people say they hate math, or could never learn it. It’snot uncommon for children who score poorly on their school math exams to de-velop math complexes in their grown lives. If you are carrying any such emotionalbaggage, you can drop it right here and right now.
We'll see fundamental ideas of maths: - numbers - equations - functions
-
Calculus and mechanics are often taught as separate subjects. It shouldn’t belike that! If you learn calculus without mechanics, it will be boring. If you learnphysics without calculus, you won’t truly understand. The exposition in this bookcovers both subjects in an integrated manner and aims to highlight the connectionsbetween them. Let’s dig in.3
Calculus and mechanics should be though together. The first one is boring without the second. The second one cannot be understood without prior knowledge of the first.
-
Chapter 5 covers topics from differential calculus and integral calculus. We willstudy limits, derivatives, integrals, sequences, and series. You will find that 100pages are enough to cover all the concepts in calculus, as well as illustrate themwith examples and practice exercises
Chap 5 covers calculus: differentials and integral.
-
In Chapter 3, we will learn about vectors. Vectors describe directional quantitieslike forces and velocities. We need vectors to properly understand the laws ofphysics. Vectors are used in many areas of science and technology, so becomingcomfortable with vector calculations will pay dividends when learning other subjects.
Vectors describe directional quantities like forces and velocities
-
In Chapter 2, we’ll look at how techniques of high school math can be used todescribe and model the world. We’ll learn about the basic laws that govern themotion of objects in one dimension and the mathematical equations that describethe motion. By the end of this chapter, you’ll be able to predict the flight time ofa ball thrown in the air.
Chap 2 covers the laws of motion of objects in 1D
-
Chapter 1 is a comprehensive review of math fundamentals including algebra,equation solving, and functions. The exposition of each topic is brief to make foreasy reading
Chapter 1 is the foundation upon which everything else will be built
-
Calculus and mechanics can be difficult subjects. Understanding the materialisn’t hard per se, but it takes patience and practice. Calculus and mechanicsbecome much easier to absorb when you break down the material into manageablechunks. It is most important you learn the connections between concepts.
Calculus and mechanics are though subject that can be understood if you break them down into digestible chunks and derive connections between the constituent concepts.
-
The best part is that you don’t need to know how technology works to useit. You need not understand how Internet protocols operate to check your emailand find original pirate material. You don’t need to be a programmer to tell acomputer to automate repetitive tasks and increase your productivity. However,when it comes to building new things, understanding becomes important. Oneparticularly useful skill is the ability to create mathematical models of real-worldsituations. The techniques of mechanics and calculus are powerful building blocksfor understanding the world around us. This is why these courses are taught in thefirst year of university studies: they contain keys that unlock the rest of science.
you don't need to understand how things work to use them. However, you need that understanding to build them.
-
The last two centuries have been marked by tremendous technological advances.Every sector of the economy has been transformed by the use of computers and theadvent of the Internet. There is no doubt technology’s importance will continueto grow in the coming years.
The past two centuries have been marked with fast technological improvements.
-
Each section in this book is a self-contained tutorial. Each section covers thedefinitions, formulas, and explanations associated with a single topic. You cantherefore read the sections in any order you find logical. Along the way, youwill learn about the connections between the concepts of calculus and mechanics.Understanding mechanics is much easier if you know the ideas of calculus. At thesame time, the ideas behind calculus are best illustrated through concrete physicsexamples. Learning the two subjects simultaneously is the best approach.
Then I could zip to chapter 4 and 5
-
8. A mass-spring system is undergoing simple harmonic motion. Its position function isx(t) = A sin(ωt). What is its maximum acceleration?
Knew it back in the days. Check Chapter 4
-
2. What is the second derivative of A sin(ωx)?
- y = Asin(wx)
- y' = wAcos(wx)
- y'' = -Awwsin(wx) = -Aw^2sin(wx)
-
If you are mystified by Q1, Q2,Q5, read Chapter 5
I almost had it on Q2
-
Solve for t in:7(3 + 4t) = 11(6t − 4)
- 21 + 28t = 66t - 44
- 21 + 44 = 66t - 28t
- 65 = 38t
- t = 65 / 38
-
4. What is the magnitude of the gravitational force between two planets of massM and mass m separated by a distance r?
I almost had it but didn't have the correct formula F = G * m_1 * m_ 2 / r¨2
-
What is the value of x ?
Given that: h^2 = o^2 + a^2 a = sqrt(h^2 - o^2) then x = sqrt(1^2 - 0.5^2) = sqrt(1-0.25) = sqrt(0.75)
-
1. What is the derivative of sin(x)?
cos(x)
-
Non-students, don’t worry: you do not need to be taking a class in order tolearn math. Independent learners interested in learning university-level material willfind this book very useful. Many university graduates read this book to rememberthe calculus they learned back in their university days.
relevant to me
-
My aim is to make learning calculus and mechanics more accessible. Anyoneshould be able to open this book and become proficient in calculus and mechanics,regardless of their mathematical background.
the goal
Tags
Annotators
-
-
www.aei.org www.aei.org
-
Increasingly, however, it seems Washington has it wrong. Tshisekedi is among the world’s most corrupt leaders. As infrastructure crumbles around the country, Tshisekedi grows rich. Today, the amount of money stolen likely exceeds the total value of International Monetary Fund loans that continue to keep the country afloat. As underdeveloped as DRC’s capital, Kinshasa, can be, cities like Goma are exponentially worse, lacking paved roads, basic sanitation, and reliable water and electricity. Perhaps this is why Congolese now flock to M23.
Thins aren't great indeed. But I understand that this is an OP-ED. Will need to check the author.
-
Quickly, M23 took Goma, the third largest city in eastern Congo. Congolese soldiers and police defected to M23 en masse. A peace deal led M23 to withdraw from Goma and, ultimately in 2013, the group retreated to Uganda. That same year, the US Department of the Treasury sanctioned M23.
M23 were beaten! This sounds like wrong affirmation.
-
The United Nations and an incestuous network of academics, human rights groups, and international organization accuse M23 of looting Congolese resources, receiving support from Rwanda and/or Uganda, and various human rights abuses. Even as the groups amplify accusations that journalists uncritically report, core evidence remains sparse or exaggerated.
The refutation of United Nations and journalistic evidence is very strange to me. On what evidence does the author make these claims ? Can he point to independent sources supporting the claim that "core evidence remains sparse or exaggerated." ?
-
- Jul 2024
-
www.neoprofs.org www.neoprofs.org
-
Médite donc tous ces enseignements et tous ceux qui s’y rattachent, médite-les jour et nuit, à part toi et aussi en commun avec ton semblable. Si tu le fais, jamais tu n’éprouveras le moindre trouble en songe ou éveillé, et tu vivras comme un dieu parmi les hommes. Car un homme qui vit au milieu de biens impérissables ne ressemble en rien à un être mortel.
Epicure, Lettre à Ménécée
-
- Nov 2023
-
readmake.com readmake.comMAKE1
-
You'll be rewarded by not doing dodgy stuff like spamming, manipulating your users into doing stuff, growth hacking your search rankings or faking your social media, or abusing your power to compete unfairly if you're successful.
Surprise by no growth hacking
-
- Oct 2023
-
jamesclear.com jamesclear.com
-
This difference is one of the key distinctions between continuous improvement and first principles thinking. Continuous improvement tends to occur within the boundary set by the original vision.
within the confines of the original form
-
- May 2023
-
Local file Local file
-
Customer experience PMs should be in regular communication with cus-tomers to understand what they are looking for in a product, the types ofuser and their backgrounds, and the ways in which the product may beused.
Important point that needs to be setup for Kadea Online
-
There is a common view that software product engineering is simplyadvanced programming and that traditional software engineering is irrelevant.All you need to know is how to use a programming language plus the frame-works and libraries for that language. This is a misconception and I have writ-ten this book to explain the activities, apart from programming, that I believeare essential for developing high-quality software products.
Misconceptions about software product engineering
-
Platform
Games (?)
-
If you read about software products, you may come across two other terms:“software product lines” and “platforms” (Table 1.1). Software product linesare systems designed to be adaptable to meet the specific needs of customersby changing parts of the source code. Platforms provide a set of features thatcan be used to create new functionality. However, you always have to workwithin the constraints defined by the platform suppliers.
Software product lines and platforms are software products
-
- Jan 2023
-
matthewpollard.com matthewpollard.com
-
I’m noteven going to give you a sales system, really; I’m giving you theframework to create your own.
the promise of this books is a framework for instantiating sales systems
-
Here’s the advantage in sales we introverts have over our extrovertedpeers: We don’t rely on our personality. In the absence of naturaltalent, we have to rely on a process...and in the long-run, processbeats personality. Every time.
process over personality, it the long run the first trumps the latter
-
By rehearsing three differenttopics, Alex doesn’t need to be spontaneous, nor does he have towait out those long pauses while he and the potential client findtheir verbal footing. He now goes into a meeting already prepared toinitiate—and, more important, control—the small talk. Establishingrapport is no longer a chore or a necessary evil. It’s a to do: a taskthat Alex is relaxed and prepared for because he already knows howthe routine goes.
prepare canned material since you're not naturally spontaneous
-
Introverts, on the other hand, just rely on the system.
Rely on the system
-
“Build it and they will come” maywork in the movies, but if that’s your strategy in business, you’re justcounting the days till you close your doors.
build it and they will come is a fantasy
-
So, they concentrate on the work. Business owners oftengo into business for themselves because they’re great at theirfunctional skill. Lawyers start their own firms because they knowthe law. Electricians start their own electrical contracting companiesbecause they’re good electricians. IT professionals start their ownconsultancy business because they’re proficient with a specificplatform.But just because you’re good at something—or even great atit—doesn’t mean that customers will automatically show up atyour door.
customers will not show at your door because you're good at something!
-
- Dec 2022
-
127.0.0.1:8080 127.0.0.1:8080
-
Just as long-distance runners push through pain to experience the pleasure of “runner’s high,” I have largely gotten past the pain of my mistake making and instead enjoy the pleasure that comes with learning from it. I believe that with practice you can change your habits and experience the same “mistake learner’s high.”
This is a great analogy: getting past the pain of failing but enjoy the learning. It's not about the falls along the way, it's about the path and the lessons learned along the way
-
-
127.0.0.1:8080 127.0.0.1:8080
-
The principles you choose can be anything you want them to be as long as they are authentic—i.e., as long as they reflect your true character and values
principles allow you to stay true to your character and values
-
Think for yourself to decide 1) what you want, 2) what is true, and 3) what you should do to achieve #1 in light of #2 . . . . . . and do that with humility and open-mindedness so that you consider the best thinking available to you.
Principle 1:
-
While it isn’t necessarily a bad thing to use others’ principles, adopting principles without giving them much thought can expose you to the risk of acting in ways inconsistent with your goals and your nature.
You can use another's principle but just don't adopt them without thinking about it
-
To be principled means to consistently operate with principles that can be clearly explained.
To be principled = having clear, explainable principles with which you operate
-
If instead we classify these situations into types and have good principles for dealing with them, we will make better decisions more quickly and have better lives as a result.
classify situations and have good principles for dealing with them
-
Principles are fundamental truths that serve as the foundations for behavior that gets you what you want out of life. They can be applied again and again in similar situations to help you achieve your goals.
What principles are: fundamental fondational truths
-
Whatever success I’ve had in life has had more to do with my knowing how to deal with my not knowing than anything I know.
Establishing a system for learning from mistakes
-
-
Local file Local file
-
Strategy needn’t be the purview of a small set of experts. It can bedemystified into a set of five important questions that can (and should) beasked at every level of the business: What is your winning aspiration?Where should you play? How can you win there? What capabilities do youneed? What management systems would support it all? These choices,which can be understood as a strategic choice cascade, can be captured on asingle page.
aspire to capture the cascade on a single page
-
The final strategic choice in the cascade focuses on management systems.These are the systems that foster, support, and measure the strategy.
Measuring resonated with me. It gives a sense that management is about measuring and indeed what can't be measured can't be controlled. Management is about controlling
-
Two questions flow from and support the heart of strategy: (1) whatcapabilities must be in place to win, and (2) what management systems arerequired to support the strategic choices? The first of these questions, thecapabilities choice, relates to the range and quality of activities that willenable a company to win where it chooses to play. Capabilities are the mapof activities and competencies that critically underpin specific where-to-play and how-to-win choices
Capabilities = activities and competencies that are the foundation to where-to-pay and how-to-win choices
-
To determine how to win, an organization must decide what will enable itto create unique value and sustainably deliver that value to customers in away that is distinct from the firm’s competitors. Michael Porter called itcompetitive advantage—the specific way a firm utilizes its advantages tocreate superior value for a consumer or a customer and in turn, superiorreturns for the firm.
How to win requires a competitive advantage: unique value proposition + deliver it
-
Where to play selects the playing field; how to win defines the choices forwinning on that field. It is the recipe for success in the chosen segments,categories, channels, geographies, and so on. The how-to-win choice isintimately tied to the where-to-play choice. Remember, it is not how to wingenerally, but how to win within the chosen where-to-play domains.
This choice is tightly coupled with "Where to Play": it's not only How to win, but it's "How to win within the chosen where-to-play domains"
-
The next two questions are where to play and how to win. These twochoices, which are tightly bound up with one another, form the very heart ofstrategy and are the two most critical questions in strategy formulation.
The two most important questions in strategy formulation are: where to play and how to win. They define the specific activities of the organisation.
-
At Olay, the winning aspirations were defined as market share leadershipin North America, $1 billion in sales, and a global share that put the brandamong the market leaders. A revitalized and transformed Olay wasexpected to establish skin care as a strong pillar for beauty along with haircare. Establishing and maintaining leadership of a new masstige segment,positioned between mass and prestige, was a third aspiration.
Concrete winning aspirations
-
The first question—what is our winning aspiration?—sets the frame for allthe other choices. A company must seek to win in a particular place and in aparticular way. If it doesn’t seek to win, it is wasting the time of its peopleand the investments of its capital providers. But to be most helpful, theabstract concept of winning should be translated into defined aspirations.Aspirations are statements about the ideal future. At a later stage in theprocess, a company ties to those aspirations some specific benchmarks thatmeasure progress toward them
You must aspire to win otherwise you're wasting people's time
-
Consider the salesperson in the Manhattan store. She defines winning asbeing the best salesperson in the store and having customers who aredelighted with her service.
I like this individual examples. It shows that it has to go up to there as well
-
The result is a set of nested cascades that cover the fullorganization (figure 1-2)
Strategy span the full depth of the organisation: starting at the corporate level, going through the brand or departmental level, and finishing at the individual levels
-
pecifically,strategy is the answer to these five interrelated questions:1. What is your winning aspiration? The purpose of your enterprise, itsmotivating aspiration.2. Where will you play? A playing field where you can achieve thataspiration.3. How will you win? The way you will win on the chosen playing field.4. What capabilities must be in place? The set and configuration ofcapabilities required to win in the chosen way.5. What management systems are required? The systems and measuresthat enable the capabilities and support the choices.
Strategy is a series of five cascading questions
-
Our intent is to provide you with a do-it-yourself guide to strategy. Weoffer you the concepts, process, and practical tools you need to create anddevelop a winning strategy for your business, function, or organization—astrategy that serves your customers better and enables you to compete moresuccessfully and to win.
The promise of this book is to be a practical do-it-yourself guide to strategy so that every business leader can develop a winning strategy for his organisation.
-
Strategy is a relatively young discipline. Until the middle of the lastcentury, much of what people now think of as strategy was categorizedsimply as management.
Strategy is not management
-
Taken together, the five choices, one framework, and one processprovide a playbook for crafting strategy in any organization.
To craft a stratagy in any organisation, one must: 1. Five Choices 2. Strategy logic flow framework 3. Reverse Engineering - Process
-
-
newsletter.pragmaticengineer.com newsletter.pragmaticengineer.com
-
While you might think that pairing less experienced engineers is a waste of time, every single time I had a less experienced engineer work by themselves, I ended up regretting it.
This has been my experience this year
-
-
openclassrooms.com openclassrooms.com
-
Passons en revue rapide les moyens pour développer les compétences au sein d’une organisation (service, entreprise, administration, association…) :le recrutement (apport de compétences externes pérenne) ;l’externalisation / la sous-traitance (apport de compétences externes ponctuel ou pérenne) ;la formation (apport de compétences internes pérenne) ;la redéfinition des postes de travail (meilleure adéquation des compétences internes) ;l’apprentissage sur le tas ou en situation de travail : l’apprenant développe seul ses compétences (développement individuel des compétences) ;l’accompagnement individuel : mentorat, coaching (déblocage et développement individualisé des compétences) ;la mise en place de groupes de qualité, pour la résolution de problèmes ou le codéveloppement (développement collectif des compétences internes) ;l’autoformation : assister à des conférences, se former en dehors des dispositifs, tenir une veille... (développement autonome des compétences internes).
Il y a 8 façon de développer les compétences au sein d'une organisation allant du recrutement, en passant par la formation, la mise en situation et l'autoformation
-
-
openclassrooms.com openclassrooms.com
-
Quand vous lisez cette définition, vous pouvez remarquer des points importants. Le premier, c’est qu’il faut qu’il y ait écart ; le deuxième, c’est que cet écart concerne les compétences. Enfin, le troisième, c’est qu’on est centré à la fois dans le temps (“un moment donné”) et sur une personne (“un individu”).
Besoins = * +écart (niveau actuelle, niveau espéré) * + compétences * + temps * + cible
-
-
openclassrooms.com openclassrooms.com
-
Le “P” placé en début du PADDIE+M est quant à lui une phase de planning, qui permet de fixer un cadre temporel bien défini au projet. Cela est notamment nécessaire pour les projets d’envergure ou les projets contraints par le temps.
Utiliser le PADDIE+M lorsqu'on est sur un projet d'envergure et/ou contraint dans le temps
-
les objectifs pédagogiques (qui diffèrent des objectifs de formation)
Quelles est. cette différence ?
-
-
openclassrooms.com openclassrooms.com
-
Ils sont complémentaires et souvent “en cascade” : la définition des orientations permet d’aider à la conception des dispositifs. Chaque dispositif conçu nécessite d’être rendu opérationnel et requiert donc une ingénierie pédagogique.
Step by step
-
-
openclassrooms.com openclassrooms.com
-
À la fin de ce cours, vous serez capable de :analyser un besoin de formation ;designer un dispositif pertinent ;développer ce dispositif en équipe ;implémenter la formation ;évaluer l’action de formation.
Les objectifs pédagogiques du cours
-
L’ingénierie est un processus structuré et méthodique qui permet de passer de besoins opérationnels à la mise en œuvre d’une solution.
Ingénierie: - Méthode, structure, processus - Pas des besoins à une solution
C'est cela que je n'ai pas saisi en discutant avec les universités françaises
-
Cela correspondrait à ne pas faire le travail d’ingénierie, car il n’y aurait pas eu d’analyse.
L'ingénierie nécessite une analyse avant de poser des solutions
-
- Nov 2022
-
newsletter.pragmaticengineer.com newsletter.pragmaticengineer.com
-
The “Goals, Signals, Metrics” framework is the most important thing I learned from Ciera, while at Google. This is a framework for defining metrics:Define the actual goal you’re trying to accomplish. Opt for a descriptive definition, for example, say “here is a description of what we want to actually accomplish with our work.” Not the vaguer, “I want to measure X.”Define signals. How would you know if you accomplished that goal, if you had infinite knowledge of everything? These are called “signals.” For example, a signal is “how happy are people with my product?” You cannot directly know how happy people are with your product, unless you’re magically all-knowing. However, if having happy customers is one of your goals, then this is the right signal for that.Figure out your metrics. These are proxies for that signal. Metrics are always proxies, there are no perfect metrics.
Goals, Signals, Metric framework for defining metrics
-
You can’t ask everybody about everything, all of the time. This seemingly simple and straightforward statement was one of our most important learnings. It seems obvious when you say it out loud, but implementing this insight is more complicated!To implement the approach of asking developers different questions at different times, you use some math and observation. We needed to get statistically significant data over a certain period of time, for a certain population of developers. However, we set ourselves the constraint to only ask a developer one question, about one thing, every X number of days. So, we couldn’t ask about 300 different tools at once; we needed to narrow our questions down to larger workflows. Even with this narrowing, we could not get enough data unless we asked everybody about all of them, all of the time.Despite our efforts, we still needed to keep a developer survey in place. Developers are happier answering 30 questions in ten minutes, once a quarter, than getting a daily email with one question – even if it only takes 30 seconds to answer.’Note from Gergely: For its own reasons, Amazon does get employees to answer one question per day via the Connections app, as covered in Inside Amazon’s Engineering Culture.
This an interesting insight, contrasted by seemingly by Amazon's practice. I'll need to explore it because I might find some interesting practices that can be applied to KDA
-
Across the software industry, many companies have adopted the “religion” of being data-driven when it comes to user-facing products. It’s a big area of focus when training new Product Managers: how to collect data, how to present it, how to analyze it, and what to do with the results. However, this is not necessarily an area of focus for software engineers.
This is an interesting point. The last sentence kind of gives an indication that's we've all been doing engineering wrong. Shouldn't it be data driver all along ?
-
-
localhost:8083 localhost:8083
-
Engineering—The Practical Application of Science
That's for me the key insight here: engineering is applied science!
-
-
livebook.manning.com livebook.manning.com
-
Figure 4.5 What can you do to encourage or allow the stakeholders to modify their behavior to help achieve the business goal?
I would have included the why here
-
- Oct 2022
-
livebook.manning.com livebook.manning.com
-
Both Behavior Driven Development and Test Driven Development are examples of Example Driven Development.
Example Driven Development
-
Acceptance tests often use a full or near-full application stack, whereas unit tests concentrate on individual components in isolation. Unit tests make it easier to focus on getting a particular class working and identifying what other services or components it needs. Unit tests also make it easier to detect and isolate errors or regressions. You’ll typically write many small unit tests in order to get an acceptance criterion to pass (see Figure 3.12). At the unit testing level, teams practicing BDD often use Test Driven Development, or TDD, to drive out the actual implementation
this interplay between BDD and TDD: BDD for end to end features TDD to grow the components and units that are needed to make the feature pass
-
This is a typical BDD approach, often referred to as “outside-in”. As we implement a layer, we will discover other things it needs to function, other services it needs to call. We have a choice; we can either build these things straight away, or we can put them to one side, model them as an interface or a dummy class, and come back to them later. If the first approach works just fine for simpler problems, for more complex code it is generally much more efficient to stay focused on the work at hand.
Outside in approach, coupled with the london and chicago style usage in the wild
-
Writing the executable specifications before writing the code is a great way to discover and flesh out the technical design you need in order to deliver the business goals. It helps you discover what domain classes would make sense, what services you might need, and how the services need to interact with each other. It also helps you think about how to make your code easy to test. And code that is easy to test is easy to maintain.
Programming by intention
-
They aren’t too sure what this service should look like just yet, but they do know that it needs to give them a list of proposed departure times. And writing the glue code gives them the perfect opportunity to experiment with different API designs, and see what they like best.
Programming by intention
-
The test reports will be generated using Serenity BDD,[7] an open source library that makes it easier to organize and report on BDD test results.
Finding out about this tool for the first time
-
We can use examples like the ones Tracy and her team recorded as the basis for more formal acceptance criteria. In a nutshell, the acceptance criteria are what will satisfy stakeholders (and QA) that the application does what it’s supposed to do.
Acceptance criteria provide a way for stakeholders and QA to verify whether a feature is completely implemented
-
In this section, we’ll see how to take these business-focused examples and rewrite them in the form of executable specifications. You’ll see how you can automate these specifications, and how doing so leads to discovering what code you need to write. And you’ll see how these executable specifications can be a powerful reporting and living-documentation tool.
From user stories and examples to acceptance criteria written in gherkin
-
Often these conversations uncover uncertainty or complexity, which leads us to split features into smaller chunks. In Scrum, a User Story needs to be small enough to deliver in a single sprint. If a feature will take more than one sprint to build, it is good practices to split a it into several stories that can be delivered incrementally over several sprints. This way, the team can get feedback earlier and more often, which in turn reduces the risk of error.
This is talked about in the user story book
-
Tracy uses a technique called Example Mapping[4] to make the discovery process more visual. She notes down these examples and rules using colored post-its on a wall: blue cards represent the business rules, and green cards represent examples and counter-examples of these rules. Pink cards represent questions that we don’t have answers for right now. A yellow card at the top of the board reminds us which feature or user story is being discussed.
Example Mapping as a tool to illustrate the discovery process
-
Many teams find Impact Mapping (see Figure 3.3) a useful exercise to discover and prioritize high-level capabilities and features that can help deliver a business goal. Impact Mapping helps business and technical people discuss business goals through the prism of four fundamental question: "Why are we doing this (i.e. what are our business goals)?", "Whose behavior do we need to change (i.e. who are the key actors)?", "How might their behavior change (i.e. what changes in their behavior would help us achieve our business goals)", and "What software features might support this behavior change".
Impact Mapping = Why Who How What
-
-
Local file Local file
-
Figure 7.1 In this chapter we’ll look at how to make the automated executable specifications robustand maintainable.
This is great!
In my opinion, the author should have included it in chapter 6.
-
The order here is important. When you plan features and stories, your principal aimshould be to deliver business value. Start out with what business value you intend toprovide B, then who needs the feature you’re proposing, c, and finally what featureyou think will support this outcome d
This is an interesting take: start with the business need
-
A key part of this practice involves defining scenarios, or concrete examples of howa particular feature or story works. These scenarios will help you to validate andextend your understanding of the problem, and they’re also an excellent communica-tion tool. They act as the foundation of the acceptance criteria, which you then inte-grate into the build process in the form of automated acceptance tests. In conjunctionwith the automated acceptance tests, these examples guide the development process,helping designers to prepare effective and functional user-interface designs and assist-ing developers to discover the underlying behaviors that they’ll need to implement todeliver the required features.
Scenarios are concrete exemples of how a particular feature or story works
-
Figure 1.11 High-level and low-level executable specifications generate different sorts of livingdocumentation for the system
Business goal -> Features (User Stories) -> Exemples (Acceptance Criteria) -> Executable Specifications (In a BDD tool) -> Low-Level Specification (Unit Tests)
-
This notation eventually evolved into a commonly used form often referred to asGherkin.
The birth of Gherkin
-
Domain-Driven Design,13 which promotes the use of a ubiquitouslanguage that business people can understand to describe and model a system.
DDD advocates using the language of the domain to describe and model a system
-
North observed that a few simple practices, such as naming unit tests as full sen-tences and using the word “should,” can help developers write more meaningful tests,which in turn helps them write higher quality code more efficiently. When you think interms of what the class should do, instead of what method or function is being tested, it’seasier to keep your efforts focused on the underlying business requirements.
use should in naming your tests, it makes you think about the behaviour of what you are implementing, an NLP technique according to Continuous Delivery guy
-
Despite its advantages, many teams still have difficulty adopting and using TDDeffectively. Developers often have trouble knowing where to start or what tests theyshould write next. Sometimes TDD can lead developers to become too detail-focused,losing the broader picture of the business goals they’re supposed to implement. Someteams also find that the large numbers of unit tests can become hard to maintain asthe project grows in size.
The problems with TDD: - not knowing where to start - focusing too much on the tree and forgetting the forest - high coupling between tests and implementation
-
Behavior-Driven Development ( BDD) is a set of software engineering practicesdesigned to help teams build and deliver more valuable, higher quality software faster.It draws on Agile and lean practices including, in particular, Test-Driven Development(TDD) and Domain-Driven Design ( DDD). But most importantly, BDD provides a com-mon language based on simple, structured sentences expressed in English (or in thenative language of the stakeholders) that facilitate communication between projectteam members and business stakeholders.
BDD is at the crossroad of TDD and DDD, while giving a common language for stakeholders and team members to understand each others
-
As practitioners, we like to keep things grounded in real-world examples, soin chapter 2 you’ll see what BDD looks like in a real project, all the way from dis-covering the requirements and automating the high-level acceptance criteria tobuilding and verifying the design and implementation, through to producingaccurate and up-to-date technical and functional documentation.
I should probably start here
-
The goal of this book is to help get teams up and running with effective BDD practices.It aims to give you a complete picture of how BDD practices apply at all levels of thesoftware development process, including discovering and defining high-level require-ments, implementing the application features, and writing executable specificationsin the form of automated acceptance and unit tests.
The book promise's to get you up and running with BDD
-
-
Local file Local file
-
pecification by Example, agileacceptance testing, Behavior-Driven Development, and all the alternative names for thesame thing solve these problems. This book will help you get started with those prac-tices and learn how to contribute better to your team, regardless of whether you qualifyyourself as a tester, developer, analyst, or product owner.
The book promise/objective: get started with Agile Acceptance Testing, Behaviour-Driven Development (BDD), and Specification by Exemple.
-
If you’re a practitioner, like me, and your bread and butter come from making or helpingsoftware go live, this book has a lot to offer. I primarily wrote this book for teams whohave tried to implement an agile process and ran into problems that manifest themselvesas poor quality, rework, and missed customer expectations. (Yes, these are problems, andplainly iterating is a workaround and not a solution.)
These are the problems that currently plage us: poor quality, expectation not understood or miscommunicated, etc.
-
It presents the collectiveknowledge of about 50 projects, ranging from public websites to internal back-officesystems. These projects involved diverse teams, from small ones working in the same of-fice to groups spread across different continents, working in a range of processes includ-ing Extreme Programming (XP), Scrum, Kanban, and similar methods (often bundledtogether under the names agile and lean). They have one thing in common—they all gotthe practices of collaborating on specifications and tests right, and they got big benefitsout of that.
Experience over 50 projects, working in different ways however each having a common things: collaborating on specification and test right to achieve positive returns
-
-
Local file Local file
-
How to set up your Software Development Teams?This is one of the most important questions to consider when working to create great software.
Central question to this paper I suppose
-