A podcast about development and design.
We do our best to be code-agnostic but we talk a lot about Rails, JavaScript, React, React Native, design, business and startups.
php/*
A podcast about development and design.
We do our best to be code-agnostic but we talk a lot about Rails, JavaScript, React, React Native, design, business and startups.
Copyright: © ¯_(ツ)_/¯
A weekly podcast about programming, development, and design.
Conversation — When Tech Meets Business
Iteration — A weekly podcast about programming, development, and design through the lens of amazing books, chapter-by-chapter.
This episode uses Chapter 13 of Extreme programing as a jumping off point
Testing Early, Often, and Automated
Here is the dilemma in software development: defects are expensive, but eliminating defects is also expensive.
Planning: Managing Scope
This episode jumps off Chapter 12 of Extreme programing by Kent Beck.
Planning is an exercise in listening, speaking, and aligning goals for a specific time period. It is valuable input for each team member. Without planning, we are individuals with haphazard connections and effectiveness. We are a team when we plan and work in harmony.
XP recommends planning at any timescale with these four steps.
1.) List the items of work that may need to be done.
2.) Estimate the items.
3.) Set a budget for the planning cycle.
4.) Agree on the work that needs to be done within the budget. As you negotiate, don't change the estimates or the budget.
This usually comes from the client, sometimes myself or the team.
So here is our high level break down. 1st we add a new bottom tab that says students seeking this tab replaces the settings gear tab. The settings tab will be moved to the top right corner of the app. When a student clicks that tab the design attached (below) would show. * Design shows a list of students who have performed searches, with a "Message" button on each.
Rules A student should show up on a tutors seeking list if......A student search is
Whiz Tutor — an app where you can find a book nearby tutors for in-person tutoring.
Pitch was — when students search for but don't book a tutor, let relevant tutors message those students. This would happen through a "Students Seeking" tab that shows up in the tutors Mobile app.
Hand off the pitch to a designer on the team to refine and recommend a scope.
Question the work
Define the work
Handoff the design
So recent and painful.
Welcome to Iteration: a weekly podcast about programming, development, and design through the lens of amazing books, chapter by chapter
corollary: noun, a proposition that follows from one already proved. e.g. "The huge increases in unemployment were the corollary of expenditure cuts.
TLDR: Walk before you run
The point of customer involvement is to reduce wasted effort by putting the people with the needs in direct contact with the people who can fill those needs.
(After you write tests and fix the bug...) Once the defect is resolved, figure out _why_ the defect was created and wasn't caught. Initiate the necessary changes to prevent this kind of defect in the future
Magic formula for success as an agency:
A variety of people must work together in interlinking ways to make a project more effective. They have to work together as a group for each to be successful.
TLDR: what should each of these roles do on an XP team?
Tester - find the happy path; find ways to break it
Interaction Designer - choose overall metaphors for the system; create personas and goals; help the team analyze and make sense of the world;
Product Managers - write stories; pick themes and stories in quarterly cycles; prioritizes; encourage communication between customers and programmers
Project Managers Facilitate communication, help identify priorities and consistent accountability.
Executives Courage, confidence and accountability
A weekly podcast about programming, development, and design through the lens of amazing books, chapter by chapter
John: Hi, I'm John and I'm joined by JP.
JP: Today we will be going through chapters 6, 7, and 8 for those following alone - which are all about Extreme Programming practices. These are the things that XP teams are doing on a daily basis. Kent Beck defines two categories for practices: Primary Practices and Corollary Practices. You must first master the primary practices before considering corollary ones. This episode focuses on primary practices.
Practices that do not serve a purpose or have values are empty. For example, pair programming for the sake of making your boss happy doesn't make much sense. However, pair programming to communicate, get feedback, simplify the system, catch errors, and bolster courage makes a lot of sense.
XP predicts that the more face time you have, the more humane and productive the project.
👨🏫 humanity
👨🏫 improvement
👨🏫 quality
Make your workspace about work. An interested observer should be able to walk into the team space and get a general idea of how the project is going in 15 seconds.
👨🏫 mutual benefit - doing stuff today that benefits me now and in the future
👨🏫 flow
Work only as many hours as you can be productive and only as many hours as you can sustain. Burning yourself out unproductively today and spoiling the next two days' work isn't good for you or for the team.
Taking care of yourself is the quickest way back to energized work.
I turn to long work hours as a way of grabbing control in a situation in which I am otherwise out of control
👨🏫 flow
👨🏫 humanity
👨🏫 improvement
👨🏫 mutual benefit
Hot tips:
➡️ stay the same amount of time but manage time better
➡️️️️️ block off 2 hours at a time in your calendar just for coding
➡️ turn off phone, email, and slack notifications
Plan using customer-visible functionality. As soon as the story is written, try to estimate the development effort necessary to implement it.
Write stories on index cards and put them on a frequently passed wall. Every attempt I've seen to computerize stories has failed to provide a fraction of the value of having real cards on a real wall.
👨🏫 flow
👨🏫 reflection
👨🏫 quality
REMEMBER! XP is a way to improve both your development process and your experience in it.
Change always starts at home. The only person you can actually change is yourself. [...] Dictating practices to a team destroys trust and creates resentment.
lead by example
🐶 Find a practice - List out Things that drain you, list out things that energize your work, adopt practices around these two things, preventing drain and supporting energizing!
A weekly podcast about programming, development, and design through the lens of amazing books, chapter-by-chapter
Hi, I'm John and I'm joined by JP.
Today we will be going through chapter 5 and continuing our discussion about the guiding principles of Extreme Programming.
Values are too abstract to directly guide behavior. (This is why we discuss things in the context of principles)
Other principles may guide your team, but these are the principles that guide XP:
Now obviously we aren't going to bore you with discussion on all 14 of these principles, so today we'll only talk about a handful of them.
Copy and paste alert
What do people need to be good developers? What are some basic human needs?
Interestingly, satisfying these requisites meets both business and human needs.
"Fractal Nature of geology" When nature finds a shape that works, she uses it wherever she can.
A crystal is a material whose constituents, such as atoms, molecules or ions, are arranged in a highly ordered microscopic structure — the same arrangment all the way to an atomic level. The same shape, makes up arrangments that make the same shape, that makes up arrangements that make the same shape.
All's to say - I've found that many things that prove useful at a small scale, work at larger scales
Concepts like
Software development teams where everyone is alike, while comfotable, are not effective. Teams need to bring together a variety of skills, attitudes, and perspectives to see problems and pitfalls, to think of multiple ways to solve problems, and to implement the solutions. Teams need diversity
The principle of diversity suggets that the programmers should work together on the problem and both opinions should be valued.
"Learn to see problems as opportunities for change."
To reach exellence, problems need to turn into opportunities for learning and improvment, not just survival.
Conciously choose to transform each problem into an opportunity. Good book on this the obsticle is the way
Example: .env files for all of our projects got posted to a public repo. We migrated toward a better more secure system, credentials that would be harder to leak and are easier to rotate. We used the problem as an oppourtunity to improve our architecture.
Sacrificing quality is not effective as a means of control... Quality should not be a control variable.
This is really extreme.
Author makes the aurgument that when you skimp on quality you end up spending even more time or money. This rings true, I have often taken the wrong approach in projects of skipming on design, testing or refacting and it doesn't really help in the long run.
We'd all like to get more features out the door for less money, it's just not doable. Less is less.
If you're having trouble succeeding, fail. Don't know which of the three ways to implement a story? Try it all three ways.
When you don't know what to do, risking failure can be the shortest, surest road to success
Conclusion:
Season 7 Epsiode 2
A weekly podcast about programming, development, and design through the lens of amazing books, chapter-by-chapter
5 Essential Values in Extreme Programing
Extreme Programing By Kent Beck - Chapters 2,3 and 4
Chapter 2 - Learning to Drive
frequent, small corrections
don't wait to find out if you are going in the wrong direction
Chapter 3 - Values, Principles, and Practices
values are the roots of things we like and don't like in a situation.
Making values explicit is important because without values, practices quickly become rote (habitual repetition), activities performed for their own sake buck lacking any purpose or direction.
practices are evidence of values
Practices are clear. Everyone knows if I've attended the morning standup meetings. Whether I really valuecommunication is fuzzy. Whether I maintain practices that enhance communication is concrete.
principles bridge the gap between values and practices
START HERE
Chapter 4 - Values
Chapters 2 and 3 are small introductory sections, here is the TLDR:
Software, teams, and requirements change. We need to be able to adapt
to such change. The next 3 sections will be about values, practices,
and principles of Extreme Programming
Chapter 4 is about values
Everyone who touches software has a sense of what matters. One person might think what really matters is carefully thinking through all conceivable design decisions before implementing. Another might think what really matters is not having any restrictions on his own personal freedom.
What actually matters is not how any given person behaves as much as how the individuals behave as part of a team and as part of an organization.
Sometimes it's easy to bikeshed over things like code style. Arrow functions vs function declaration, inline functions vs methods, etc
XP embraces 5 values to guide development
JP: Retro feedback and postmortem feedback often includes communication - both good and bad
2. Simplicity
To make a system simple enough to gracefully solve only today's problems is hard work.
"What is the simplest thing that could possible work?"
JP: Emphasis on "today's problems" - how can we provide value to the customer without compromising on theirexperience and without overengineering a solution?
JS: Stakeholder communicatinon, actively work to include everyone in at the key touchpoints, initial concept, mokcup, prototype, final review.
JS: Have something to look at / talk about. Somebody make a mockup, somebody write some pseudocode
opinions about an idea, yours or your teammates
how the code looks when you implement the idea
whether the tests were easy to write
whether the tests run
how the idea works once it has been deployed
JP: Be agile! Look to build an MVP. Get analytics on things and make decisions from there. It's hard to invest in an idea entirely and then end up ditching the whole thing. Everyone feels burned.
JS: Again, think through key touchpoints, (99%, 50%, 1%)[https://medium.com/the-mission/how-to-scale-yourself-the-99-50-1-framework-7798518f36e1]
JP: Being able to speak up when you disagree with people's ideas and being able to listen and exercising patience.
JS: Being honest with yourslef and stakeholders about timelines, replytimes, scope.
JS: Having the courage to set boundries. - "I need this by tomorrow" - I'm sorry, I can't make that happen for you.
5. Respect
If members of a team don't care about each other and what they're doing, XP won't work. If members of a team don't care about a project, nothing can save it. Every person whose life is touched by software development has equal value as a human being. No one is intrinsically worth more than anyone else.
JP: It's much easier when everyone respects each other.
JS: Reconize there's rarely a "wrong" approach, avoid letting pesonal preference becoming the "right" way.
JS: Reconize positives, "what I like about this is... however" Try to keep things in a positive context.
6. Other
This list isn't exhaustive. The important thing is that your team should align on core values.
Other Values: safety, security, predictability, and quality-of-life <- I feel like these need an episode!
Chapter conclusion:
Values don't provide concrete advice about what to do in software development. Because of the distance between values and practices, we need a way to bridge the gap between them. Principles are the tool we need.
Picks
JP: Pair code review sessions
JS: the (99/50/1 framework)[https://medium.com/the-mission/how-to-scale-yourself-the-99-50-1-framework-7798518f36e1]
JS: Basecamp's new book - (Shape Up)[https://basecamp.com/shapeup]
Iteration — A weekly podcast about programming, development, and design through the lens of amazing books, chapter-by-chapter.
By Kent Beck
"Extreme Programing is about social change. It's about letting go of habits and patterns that were adaptive in the past, but now in the way of us doing out best work. It's about giving up the defenses that protect us but interfere with our productivity. It may leave us feeing exposed.
It's about being open about what we are capable of doing and then doing it. And, allowing and expecting others to do the same...
...It's about the process of becoming more of our best selves and in the process our best as developers. And, it's about writing great code...
"Philosophy of software based on... communication, feedback, simplicity, courage and respect.
"XP is my attempt to reconcile humanity and productivity in my own practice of software development..."
"How would you do it if you had enough time? — Fussing about the constraints distracts you from your goals. Your clear self does the best work no matter what the constraints are"
Final Summary — What is XP?
Iteration Season 06E09 - Release July 22nd 2019
A weekly podcast about programming, development, and design through the lens of amazing books, chapter-by-chapter.
Roundtable: Getting a Job in Tech
Between books - Discussion about career development in tech
Guest: John Rivera - Link?
John S to lead discussion -
Where do you work now? What do you do?
John S: Run an agency, we are a small team of remote developers, we do mobile apps and web apps.
John R: Just started working on Amazon photos mobile app for the prints feature team, I do cross-platform mobile development primarily using React Native. But I’ve also gotten to do my fair share of project management with ChefSteps, and am seeking to pursue that at Amazon
JP: Opendoor
Where did you start? Where were you before tech?
5mins each on origin story
John S: Dabbled in design + web for ever — I was working in the corporate world a job I didn’t love but I was successful. Stepped back and switched careers at November 2015 - switched career at 25
John R: I worked at uhaul and albertsons as a meat clerk. Started things off by saving up for a bootcamp. Did freelance.
JP: MySpace layouts in 9th grade, 13-14 years ago. Then web design until about 2015
What’s been a key practice or tool in moving your career forward?
John R: Networking, Diving deep, embracing things that aren’t in my domain
John S: Consistency, Keeping up with friendships (networking), Blogging, pushing outside comfort zone.
How do you balance getting work done now vs ongoing learning?
John S: Use new tools and techniques in the day to day
John R:
JP: Being proactive with code review and looking to senior engineers
How do you get a good Job in tech?
John S: Network, publishing, making your work visible, random blog post from 2016
John R:
JP: I got my job from meetups
What would you have told yourself 3 years ago?
John S: Consistency, life is a marathon not a sprint. Keep stretching yourself outside comfort zone. Focus on less, go deeper on less things.
John R:
JP: Take breaks, you won’t forget how to code if you take a day off
CLOSE - no picks
John R - Where can people find you?
A weekly podcast about programming, development, and design through the lens of amazing books, chapter-by-chapter.
Work Stuff
Summary of "Refactoring"
Picks:
Things mentioned
Craftwork design https://craftwork.design/