Lead front-end developer with big-picture insights I'm a versatile developer with over 20 years of experience creating rich websites, video games and apps for desktop and mobile. I've worked both on the tech and design / product side giving me a holistic view of what makes a project successful. I believe I bring a perspective that is different from the advice you'll get from most other engineers. Open to short- or long- term mentorships. Able to bring a holistic and empathetic approach to mentorship that considers your career goals as well as your next issue to fix. More info at MimsWright.com

My Mentoring Topics

  • Software development
  • Front-end
  • JavaScript
  • React
  • Product Development
  • Career

Mims didn't receive any reviews yet.

INSPIRED - How to Create Tech Products Customers Love
Marty Cagan

Key Insights from "INSPIRED: How to Create Tech Products Customers Love" Emphasizes that product management is a team sport, advocating for a cross-functional team approach. Illuminates the importance of discovering the right product to build before diving into the development. Reveals the role of product managers as the discoverers of the product, not simply project managers. Encourages adopting an outcome-based rather than output-based approach to product development. Highly recommends the application of prototyping and testing techniques to validate ideas before committing to full development. Asserts the necessity of continuous product discovery for sustainable success. Advises on how to establish a customer-centric culture in a tech organization. Reinforces the value of learning from product failures, not just successes. Insists on the importance of strong leadership in product management. Underlines the need for strategic alignment between the product team and the larger organization. Stresses on the significance of a shared product vision within the team. Deeper Analysis of the Book "INSPIRED: How to Create Tech Products Customers Love" by Marty Cagan, a Silicon Valley product management veteran, is a veritable guide for tech entrepreneurs, product managers, and those aspiring to create successful tech products. Starting with the assertion that product management is a team sport, Cagan underscores the necessity of collaboration among cross-functional teams. This aligns with the concept of Collective Ownership in Agile methodologies, where everyone in the team is responsible for the quality and success of the product. The book extensively discusses the role of product managers, distinguishing them from project managers. Cagan positions product managers as the discoverers of the product. This involves understanding customer needs, exploring market opportunities, and working closely with the product team to create a product that aligns with the business objectives and customer expectations. One of the notable principles that Cagan advocates for is an outcome-based approach over an output-based one. This shift in focus from simply delivering features to achieving desired outcomes is a core tenet of modern product management, emphasizing on value creation rather than just activity. In "INSPIRED", Cagan also emphasizes the importance of continuous product discovery. This is about constantly seeking to understand customers, experimenting with solutions, and validating ideas before committing to full-scale development. The principle resonates with the Lean Startup methodology, particularly the Build-Measure-Learn feedback loop. Prototyping and testing are other key aspects that Cagan discusses. He advises product teams to validate their ideas with low-fidelity prototypes, conduct usability tests, and gather feedback to refine the product. This aligns with the principle of Fail Fast, Fail Often in Agile, which encourages learning through quick experiments and iterations. An essential part of creating tech products that customers love, according to Cagan, is establishing a customer-centric culture. This involves prioritizing customer needs and feedback in the product development process, which is a fundamental principle of Human-Centered Design. Cagan also acknowledges that not all product initiatives will succeed. He encourages teams to learn from product failures and to leverage these learnings to improve future products. This resonates with the concept of a Learning Organization, where failure is seen as an opportunity for learning and growth. Underpinning all these principles, Cagan stresses the importance of strong leadership in product management. He insists that leaders should inspire, guide, and empower their teams to do their best work, which aligns with the concept of Servant Leadership in Agile. Lastly, Cagan highlights the need for strategic alignment and a shared product vision. This implies that all efforts of the product team should be directed towards achieving the strategic goals of the organization, and everyone on the team should understand and be committed to the product vision. In conclusion, "INSPIRED: How to Create Tech Products Customers Love" is a comprehensive guide that offers invaluable insights and practical advice on how to create successful tech products. It should be a must-read for anyone involved in product management, as it encapsulates the collective wisdom of one of the most experienced product managers in the tech industry.

View
Make Time - How to focus on what matters every day
Jake Knapp, John Zeratsky

Key Insights from "Make Time - How to focus on what matters every day" Intentionality: The authors emphasize the importance of focusing on tasks intentionally rather than reacting to external stimuli. Highlight: Each day, select one task to be your main focus, your 'highlight' for that day. Laser Mode: Minimize distractions and enter a state of deep, focused work to accomplish your highlight. Time Blocking: Pre-schedule your day into blocks of time dedicated to specific tasks. Energy Management: Recognize that your energy levels fluctuate throughout the day and schedule tasks accordingly. Technology Control: Use technology intentionally and avoid it becoming a constant distraction. Reflection: At the end of each day, reflect on what worked and what didn’t in order to refine your approach to time management. Experimentation: The authors encourage trying different strategies and techniques to find what works best for you. Personal Prioritization: Prioritize tasks that are personally meaningful over those imposed externally. Breaks: Regular breaks and time for relaxation and leisure are essential for productivity and creativity. Empowerment: The book emphasizes that you have control over your time and can make choices that enhance your productivity and satisfaction. An In-Depth Analysis of "Make Time - How to focus on what matters every day" "Make Time - How to focus on what matters every day" by Jake Knapp and John Zeratsky is a guide that aims to assist individuals in restructuring their day, allowing them to focus on tasks that matter most, and ultimately, to lead a more balanced and fulfilling life. The authors begin by explaining the concept of intentionality. In our increasingly connected world, we are often in a reactive state, responding to emails, notifications, and other external stimuli. Knapp and Zeratsky argue that this reactive mode leaves us with little time to focus on the tasks that truly matter. Their solution is to operate with intentionality, proactively deciding what to focus our time and energy on. This concept aligns well with Cal Newport's philosophy of Deep Work, which also promotes intentional focus over distracted multitasking. The book introduces the idea of the highlight - one task or activity that you deliberately choose to focus on each day. This could be a work task, a personal project, or even a leisure activity. The highlight concept is about prioritizing and giving dedicated time and energy to what matters most to you on any given day. To achieve your highlight, the authors propose a state of deep, focused work or laser mode. This involves minimizing distractions and dedicating a block of time to focus solely on your highlight. The Pomodoro Technique, a time management method developed by Francesco Cirillo, complements this concept well. It involves working for a set amount of time (e.g., 25 minutes), then taking a short break before starting another work period. Time blocking is another technique the authors recommend. It involves pre-scheduling your day into blocks of time each dedicated to a specific task. This technique ensures that each task has a designated time and can help prevent tasks from spilling over into each other. Recognizing that our energy levels fluctuate throughout the day, the authors discuss energy management. They suggest scheduling tasks that require more cognitive effort during your peak energy times and less demanding tasks during your lower energy periods. The authors also address the role of technology and emphasize the importance of technology control. They discourage the constant checking of emails and social media and suggest setting specific times for these activities. At the end of each day, Knapp and Zeratsky recommend a period of reflection. This is a time to review what worked and what didn't and to refine your approach accordingly. This aligns with the concept of deliberate practice, a learning method that involves focused practice, feedback, and continual adjustment. The authors encourage experimentation with different strategies and techniques to find what works best for you. This approach aligns with the agile methodology, which values adaptability and continuous improvement. Personal prioritization is another key theme. The authors argue that tasks that are personally meaningful should be prioritized over those imposed externally. Finally, the authors stress the importance of taking regular breaks and ensuring time for relaxation and leisure. This is grounded in research which shows that breaks can enhance productivity and creativity. In conclusion, "Make Time - How to focus on what matters every day" is a comprehensive guide to intentional time management. It combines practical techniques with a philosophy of personal empowerment, encouraging readers to take control of their time and focus on what truly matters to them.

View
JavaScript: The Good Parts - The Good Parts
Douglas Crockford

Key Insights from "JavaScript: The Good Parts" JavaScript is a versatile and powerful language: Crockford argues that while JavaScript has many flaws, it has some truly good parts that make it a powerful and versatile language. Functions as first-class objects: One of the good parts of JavaScript is its treatment of functions as first-class objects, which provides a lot of flexibility for developers. Inheritance through prototypical nature: JavaScript implements inheritance through its prototypical nature, which is different from the classical inheritance model. Loose typing: JavaScript is a loosely typed language, which can lead to unexpected results but also provides a lot of flexibility. The importance of understanding 'this': 'this' in JavaScript can be confusing but understanding how it works is crucial for writing effective JavaScript code. Lambda expressions: JavaScript supports lambda expressions, which allow for concise, functional programming. JSON (JavaScript Object Notation): JSON is a lightweight data-interchange format that is easy for humans to read and write and easy for machines to parse and generate. An In-Depth Analysis of "JavaScript: The Good Parts" In his book "JavaScript: The Good Parts", Douglas Crockford delves into the intricacies and eccentricities of JavaScript, a language he presents as fundamentally flawed yet powerful and versatile. His perspective on JavaScript is refreshing and compelling, offering a unique take on a language that has often been dismissed as merely a "toy" language. Crockford's view that JavaScript is powerful and versatile despite its flaws is an important point. Over the years, JavaScript has become one of the most widely used programming languages, especially in web development. Its versatility makes it possible to use JavaScript for both front-end and back-end development, creating full-stack applications. However, this does not mean that the language is without its flaws. Crockford's book does a great job of pointing out these flaws and providing solutions and best practices to mitigate them. One of those good parts is JavaScript's treatment of functions as first-class objects. This allows functions to be passed around like any other value, which can be incredibly powerful. Functions can be assigned to variables, stored in data structures, passed as arguments to other functions, and even returned as values from other functions. This feature gives developers a lot of flexibility and can lead to more concise and readable code. Inheritance in JavaScript is implemented through its prototypical nature, which is a departure from the classical inheritance model found in many other programming languages. This can be confusing for developers coming from a classical OOP background, but once understood, it provides a powerful and flexible way to share behavior across objects. The loose typing in JavaScript can lead to unexpected results, especially for developers coming from a strongly typed language. However, it also provides a lot of flexibility, as variables can hold values of any type and type coercion can be used to convert values from one type to another. Understanding the 'this' keyword in JavaScript is crucial. 'this' can have different values depending on the context in which it is used, and misunderstanding 'this' is a common source of bugs in JavaScript code. Crockford does an excellent job of explaining how 'this' works and how to use it correctly. Lambda expressions, which are supported in JavaScript, allow for concise, functional programming. They can be used to create anonymous functions, which can be particularly useful in callbacks and function arguments. Finally, JSON (JavaScript Object Notation) is a lightweight data-interchange format that is easy for humans to read and write and easy for machines to parse and generate. JSON is a subset of JavaScript and has become a standard data format with diverse uses in the programming world. In conclusion, "JavaScript: The Good Parts" is a must-read for any developer working with JavaScript. Crockford's insights into the good parts of the language, as well as his exploration of its bad parts and how to avoid them, make for an enlightening read. Despite its flaws, JavaScript's versatility and power shine through, and understanding these aspects of the language can significantly improve a developer's JavaScript coding skills.

View
Functional JavaScript - Introducing Functional Programming with Underscore.js
Michael Fogus

Key Facts and Insights from "Functional JavaScript - Introducing Functional Programming with Underscore.js" Functional Programming Fundamentals: The book provides a comprehensive introduction to the principles and concepts of functional programming. Underscore.js Library: The book uses the Underscore.js library to introduce and demonstrate various concepts in functional programming. JavaScript: The book's examples and explanations are all in JavaScript, making it an excellent resource for JavaScript developers seeking to learn functional programming. Higher Order Functions: A significant portion of the book is dedicated to higher order functions, which are functions that take other functions as arguments or return them as results. Data Collections: The book provides a thorough understanding of how to use functional programming techniques to manipulate and manage data collections. Functional Programming Techniques: The book covers various functional programming techniques such as recursion, currying, composition, and point-free style. Real-world Applications: The book also includes practical applications and examples, demonstrating the real-world applicability of functional programming. Advanced Concepts: The book covers advanced concepts such as monads, promises, and functors. Testing: The book emphasizes the importance of testing in functional programming, providing strategies on how to write testable code. Performance: The book discusses the performance implications of functional programming and provides techniques to optimize functional code. Comparison with Object-Oriented Programming: The book also compares functional programming with object-oriented programming, highlighting the strengths and weaknesses of both paradigms. An In-Depth Analysis of the Book Starting with an introduction to the functional programming paradigm, "Functional JavaScript - Introducing Functional Programming with Underscore.js" by Michael Fogus provides a systematic and comprehensive journey through the principles, concepts, and techniques of functional programming. The book utilizes JavaScript, a popular and widely-used programming language, as the medium of instruction, making it a valuable resource for JavaScript developers. The use of the Underscore.js library, a utility library that provides helpful functional programming helpers, further enhances the book's relevancy and practicality. Through this library, the author is able to seamlessly integrate and demonstrate various functional programming concepts. A significant portion of the book focuses on higher order functions. This focus is quite appropriate considering that higher order functions are a defining characteristic of functional programming. These functions, which can take other functions as arguments or return them as results, enable the creation of more abstract and generalizable code. The book also delves deeply into data collections, demonstrating how functional programming techniques can be used to manipulate and manage these collections. This is particularly useful, as managing data collections is a common task in many programming applications. Various functional programming techniques are covered in the book, including recursion, currying, composition, and point-free style. These techniques are fundamental to writing efficient, clear, and concise functional code. Practical applications and real-world examples are given prominence in the book, reinforcing the concepts and techniques discussed. This practical approach ensures that readers understand not just the theory behind functional programming, but also its applicability in real-world scenarios. Advanced concepts such as monads, promises, and functors are also covered in the book. While these concepts can be complex and challenging, they are explained in a clear and understandable manner, allowing readers to grasp these advanced topics. The importance of testing in functional programming is emphasized in the book. The author provides strategies and techniques on how to write testable code, which is crucial in maintaining the reliability and integrity of functional programs. Performance implications of functional programming are also discussed in the book. This is an essential topic, as performance is often a concern when using functional programming techniques. The book thus provides valuable insights into optimizing functional code for performance. Finally, the book makes a comparison between functional programming and object-oriented programming. This comparison helps readers understand the strengths and weaknesses of both paradigms, enabling them to make informed decisions on which paradigm to use in different situations. In conclusion, "Functional JavaScript - Introducing Functional Programming with Underscore.js" by Michael Fogus is a comprehensive resource for anyone looking to learn functional programming, particularly those with a background in JavaScript. The book covers the fundamentals, various techniques, practical applications, advanced concepts, and even performance implications of functional programming, making it a valuable addition to any developer's library.

View
The Lean Startup - How Constant Innovation Creates Radically Successful Businesses
Eric Ries

Key Facts and Insights Emphasis on Experimentation over Elaborate Planning: The Lean Startup methodology promotes experimentation over detailed planning, which allows businesses to adapt and innovate continuously. Customer Feedback over Intuition: Ries emphasizes the importance of customer feedback in shaping products and services rather than relying solely on intuition. Iterative Design: The methodology encourages iterative design, which involves making small changes in products based on customer feedback and observing the results. Minimum Viable Product (MVP): This concept is central to the Lean Startup approach, focusing on creating a basic version of a product to test market hypotheses. Validated Learning: Ries introduces the concept of validated learning, where startups learn from each iteration through rigorous testing and adjustment. Innovation Accounting: This is a method to measure progress, set up milestones, and prioritize work in a startup environment. Build-Measure-Learn Feedback Loop: This is the core component of the Lean Startup methodology, which emphasizes the iterative process of building, measuring, and learning. Pivot or Persevere: Ries introduces a decision-making process in which a startup decides whether to pivot (make a fundamental change to the product) or persevere (keep improving the current product). Continuous Deployment: The Lean Startup methodology encourages continuous deployment of updates to the product, based on the Build-Measure-Learn feedback loop. Lean Management: The Lean Startup approach also extends to management, with streamlined processes and decision-making strategies. In-depth Analysis of "The Lean Startup" "The Lean Startup" by Eric Ries is a game-changing book that has reshaped the way businesses think about innovation and growth. Drawing upon his own experiences, Ries presents a new approach for startups to achieve their goals by focusing on continuous innovation and customer feedback. One of the key points in the book is the emphasis on experimentation over elaborate planning. Traditionally, businesses have relied on detailed and lengthy business plans. However, Ries argues that in the rapidly changing business landscape, these plans can quickly become obsolete. Instead, he advocates for a culture of experimentation, where ideas are tested, and changes are made based on the outcomes. This approach allows businesses to adapt to changes and seize new opportunities more effectively. A second key insight from the book is the importance of customer feedback. Ries suggests that businesses should not merely rely on intuition or assumptions about what customers want. Instead, they should engage with customers, seek their feedback, and use this information to shape their products and services. This is an integral part of the iterative design process advocated by Ries. The concept of the Minimum Viable Product (MVP) is central to the Lean Startup methodology. Rather than spending extensive resources developing a perfect product right from the start, Ries suggests starting with a basic version of the product, testing it in the market, learning from customer feedback, and making modifications accordingly. The MVP helps businesses to test their market hypotheses with minimal resources. Ries introduces the concept of validated learning, which is a process of learning from each iteration of the product. Through rigorous testing and adjustment based on customer feedback, startups can learn valuable insights about their product and the market. A significant concept in the book is innovation accounting, a method to measure progress, set up milestones, and prioritize work in a startup environment. This accounting system is designed to provide startups with a clear measure of their progress and inform decision-making processes. The Build-Measure-Learn feedback loop is another core concept in the Lean Startup methodology. Startups are encouraged to build a product, measure how it performs in the market, learn from the outcomes, and then build again. This iterative process fosters continuous improvement and innovation. Ries also introduces a decision-making process in which a startup decides whether to pivot or persevere. If a product is not meeting its objectives or gaining traction in the market, the startup may decide to pivot, i.e., make a fundamental change to the product. If the product is showing promise, the startup may decide to persevere and keep improving the product. Continuous deployment of updates to the product is another strategy advocated by Ries. Based on the Build-Measure-Learn feedback loop, updates are made to the product and deployed continuously. This approach ensures that the product is always improving and adapting to customer needs and market changes. Finally, the Lean Startup approach extends to lean management, with streamlined processes and decision-making strategies. The goal is to create an organization that is adaptable, efficient, and focused on continuous innovation. In conclusion, "The Lean Startup" presents a new approach to business, emphasizing agility, customer feedback, and continuous innovation. It provides a roadmap for startups looking to achieve success in a rapidly changing business landscape.

View