Blog posts
Case of Scope Creep - A Simple Introduction to BDD Part 4
Introduction
In the dessert of JBehave, Behaviour-Driven Development, and the calculator (yay), we present the last part of our series.
Read MoreImplementation - A Simple Introduction to BDD Part 3
Introduction
Continuing our journey with JBehave and Behavior-Driven Development (BDD), today we will move on to implementation. We’ll also explore some of the interesting features of this tool.
Read MoreThe First Story - A Simple Introduction to BDD Part 2
Starting the Brain
We are ready to dive into Behavior Driven Development (BDD). Let’s kick off with JBehave and get things rolling.
Read MoreA Simple Introduction to BDD Part 1
A Simple Introduction to BDD Part 1
Today marks the premiere of my screencast, which is essentially my initial foray into video blogging and sharing insights in this format.
Read MoreThe Natural Order of Refactoring Under the Microscope Part 5: Evolution of Architecture
Architectural Evolution
An essential next step, at a much higher level of abstraction, requires a deep understanding of the system. Based on emerging patterns and developing domain objects, over time we realize the need to modify the architecture. Architectural patterns or the introduction of other architectural mechanisms can assist us. Such transformations may include:
Read MoreThe Natural Order of Refactoring Examined Part 4: Refactoring to Patterns
The Natural Order of Refactoring Examined Part 4: Refactoring to Patterns
By following the steps outlined previously, we begin to see a more structured solution, predominantly consisting of methods grouped into classes. It’s now time to apply object-oriented principles, such as those encapsulated by the SOLID principles. We analyze the code for patterns of repetition, the need for flexibility, and code smells, and introduce design patterns where appropriate.
Read MoreThe Natural Order of Refactoring Under the Microscope Part 3: Extract Method
Analyzing Class and Method Responsibilities
In the next step, we examine the responsibilities of individual classes and methods, checking if they align with the intended responsibility of the class. It is best to analyze all methods and group them based on performing similar operations. We look for a place for these in other classes or a new class. Remember: if there is a significant private method in a class (longer than 3-4 lines), it should be moved to another class.
Read MoreHave You Ever Thought About a Career as a Trainer/Consultant?
As our activities at BNS IT (bnsit.pl) continue to expand, we have openings for individuals eager to work with others to share knowledge and experience. We aim to support teams in increasing their work efficiency.
Read MoreNatural Order of Refactoring Explored Part 2: Compose Method
Compose Method
Analyzing methods, such as the one presented in Part 1, often leads us to understand the main points of the algorithm contained in them. This insight paves the way for the next step: try to split a large method into smaller steps by extracting them into separate methods (refactoring using the Extract Method). Thus, the original method will consist of a sequence of calls to these new methods. With the right naming conventions, you can achieve code that reads like a book.
Read MoreThe Natural Order of Refactoring Under the Microscope Part 1
Refactoring is an age-old problem—perhaps not the best word given the relatively short existence of software engineering as a discipline. Everyone knows refactoring should be done, but nobody seems to have the time for it.
Read MoreCategories
- Agile ( 1 )
- Agile Conferences ( 1 )
- Agile Development ( 1 )
- Agile Philosophy ( 1 )
- Agile Practices ( 16 )
- Architecture ( 1 )
- Artificial Intelligence ( 1 )
- BDD ( 3 )
- Behavioral Patterns ( 1 )
- Best Practices ( 4 )
- Books ( 1 )
- Business Strategy ( 2 )
- Career Advice ( 1 )
- Career Development ( 1 )
- Career Opportunities ( 1 )
- Client Collaboration ( 1 )
- Client Relations ( 1 )
- Code Quality ( 3 )
- Code Refactoring ( 1 )
- Communication ( 2 )
- Community Development ( 1 )
- Complexity Theory ( 2 )
- Conferences ( 3 )
- Conflict Management ( 1 )
- Cultural Perspectives ( 1 )
- Design Patterns ( 1 )
- Employment ( 1 )
- Healthcare Experiences ( 1 )
- Java User Group ( 1 )
- Java User Groups ( 1 )
- Knowledge Development ( 1 )
- Leadership ( 17 )
- Leadership Skills ( 1 )
- Management ( 1 )
- Management Practices ( 1 )
- Meeting Facilitation ( 2 )
- Online Tools ( 1 )
- Organizational Culture ( 1 )
- Personal Development ( 5 )
- Personal Growth ( 2 )
- Personal Insights ( 1 )
- Personal Productivity ( 1 )
- Philosophy ( 1 )
- Poetry ( 1 )
- Problem Solving ( 1 )
- Productivity ( 7 )
- Productivity Tips ( 2 )
- Professional Development ( 1 )
- Programming ( 1 )
- Programming Patterns ( 1 )
- Programming Practices ( 2 )
- Programming Techniques ( 1 )
- Project Management ( 16 )
- Refactoring ( 7 )
- Research Techniques ( 1 )
- Scientific Methodology ( 1 )
- Scrum ( 1 )
- Scrum Practices ( 2 )
- Software Architecture ( 2 )
- Software Design ( 1 )
- Software Development ( 33 )
- Software Engineering ( 1 )
- Team Building ( 1 )
- Team Development ( 1 )
- Team Dynamics ( 3 )
- Team Management ( 4 )
- Team Meetings ( 1 )
- Technical Management ( 1 )
- Technology and Culture ( 1 )
- Testing ( 1 )
- Time Management ( 1 )
- Work Strategies ( 1 )
- Workplace Dynamics ( 1 )
- Workshops ( 2 )
Tags
- 20/80 Rule
- 33rd Degree 4charity
- Acceptance Testing
- Agile
- Agile Development
- Agile Mindset
- Agile Practices
- Agile Prague
- Agile Tour Vilnius
- Agility
- AI Agents
- AI Workflows
- Architectonic Mantra
- Architecture
- Architecture Documentation
- Architecture Evolution
- Archive
- Assertiveness
- Awareness
- BDD
- Behavior-Driven Development
- Behaviour-Driven Development
- Best Practices
- Book Release
- Business
- Business Priorities
- Business Relations
- Business Strategy
- C#
- Cambridge
- Career Development
- Career Transition
- Change
- Change Management
- Charisma
- Clean Code
- Client Communication
- Client Relations
- Code Cleanup
- Code Improvement
- Code Practices
- Code Quality
- Code Readability
- Code Samples
- Code Smells
- Code Standards
- Coding Practices
- Coding Standards
- Coding Style
- Collaboration
- Commitment
- Communication
- Complex Systems
- Compose Method
- Conferences
- Conflict Resolution
- Constraints
- Consulting
- Context
- Continuous Integration
- Continuous Refactoring
- Core Domain
- Corporate Culture
- Cracow
- Culture
- Cynefin
- Cynefin Framework
- Data Organization
- DDD
- Deadline
- Deadlines
- Decision Making
- Design Patterns
- Design Retrospective
- Developers
- Development Challenges
- Distraction
- Distributed Teams
- Documentation
- Domain Expert
- Effective Meetings
- Employee Engagement
- Employment
- Encapsulation
- Environment Simplification
- Essentialism
- Estimation
- Evidence
- Evolutionary Architecture
- Evolutionary Paths
- Expert Skills
- Extract Method
- Facilitation
- Focus
- Google Notebook
- GTD
- Habits
- Hacker Culture
- Healthcare
- Heuristics
- Historical Influence
- Human-Side
- Humanity in Business
- Implementation
- Implementation Patterns
- Implementational Patterns
- Incremental Work
- Information Management
- Information Sources
- Innovation
- Intention vs Content
- Interdisciplinary Teams
- Introduction
- IT Leadership
- IT Management
- IT Projects
- Java
- Java Community
- Java Programming
- Javarsovia
- JBehave
- JDD 2015
- Job Market
- Job Satisfaction
- JUG
- Kanban
- Knowledge Management
- Large Language Models
- Leader
- Leader Role
- Leadership
- Leadership Challenges
- Leadership Development
- Leadership Skills
- Leadership Strategies
- Lean
- Learning Strategies
- Legacy Code
- LLM
- Maintainability
- Management
- Master-Slave Mentality
- Mediation
- Meeting Facilitation
- Meetings
- Mentoring
- Method Naming
- Methods
- Mindfulness
- Models
- Motivation
- Multitasking
- MVC
- Naming
- Natural Order of Refactoring
- Negotiation
- NFZ
- NoEstimates
- Non-Violent Communication
- Nonviolent Communication
- Note-Taking
- Object-Oriented Design
- Object-Oriented Programming
- Onboarding
- Online Tools
- Organization
- Organizational Issues
- Pareto Principle
- Parkinson's Law
- Participatory Management
- Performance Appraisals
- Personal Development
- Philosophy
- Planning
- Planning Meetings
- Poetry
- Poland
- Prague
- Pressure
- Preventive Care
- Prioritization
- Proactive Thinking
- Problem-Solving
- Product Owner
- Productivity
- Professional Development
- Professionalism
- Profit Maximization
- Programming
- Programming Practices
- Project Management
- Project Planning
- Prompt Engineering
- Realistic Deadlines
- Refactoring
- Remote Access
- Requirements
- Requirements Gathering
- Research
- Responsibility
- Retrospectives
- Science
- Scope Creep
- Scrum
- Scrum Guide
- Scrum Implementation
- Scrum Master
- Self-Documenting Code
- Self-Improvement
- Self-Organization
- Servant Leadership
- Shared Context
- Soft Skills
- Software Architecture
- Software Development
- Software Engineering
- SOLID Principles
- Source Code
- Source Code Management
- Standups
- Strategy
- Structuring Meetings
- System Design
- System Efficiency
- Task Management
- Task Prioritization
- TDD
- Team
- Team Collaboration
- Team Communication
- Team Development
- Team Dynamics
- Team Efficiency
- Team Leadership
- Team Learning
- Team Management
- Team Meetings
- Teamwork
- Technical Debt
- Technical Leader
- Technical Leadership
- Technology
- Test-Driven Development
- Testing Strategies
- Time Management
- Timeboxing
- Training
- Transformational Leadership
- Trust
- Truth
- Unit Testing
- Up-Front Design
- User Group
- User Interface
- User Stories
- Vision
- Warsjawa
- Web 2.0
- Work Efficiency
- Workflow
- Workplace Culture
- Workshops
- Łódź
- Łódź JUG