Kubernetes For Developers

Hands on: AWS, Azure, Google cloud

What is Cloud Computing?

Cloud computing is Internet based computing where virtual shared servers provide software, infrastructure, platform, devices and other resources and hosting to customers on a pay-as-you-use basis.

Atlassian JIRA Basics

The purpose of this workshop is to introduce the students to Atlassian JIRA – the leading project \ issue management tool. The participants will acquire the understanding of JIRA basic principles, entities and learn the skills of using and configuring the tool for maximum productivity and ease of use.

Docker Fundamentals

Docker is an open-source project that automates the deployment of applications inside software containers. Docker provides an integrated technology suite that enables development and IT operations teams to build, ship, and run distributed applications anywhere. Docker lets you run your software components on any platform that supports Docker containers.

In the workshop we will learn the basic patterns of building Docker images, configuring container hosts and running Docker containers for testing and production.

Ansible Basics

The purpose of this workshop is to introduce the students to Ansible – the open – source configuration management and infrastructure orchestration tool.  Ansible makes performing advanced system administration tasks radically simple. The participants will acquire the fundamental skills of installing, configuring and running Ansible. Basic concepts of IAC (Infrastructure -As-code) and system state declaration be explained and experienced. We will learn the concepts of Ansible YAML- based DSL and basic usage patterns.  At the end of the workshop students will be able to use Ansible for system configuration and management in their everyday work. The course includes hands-on exercises involving installation and configuration of industry standard software components on Linux servers.

JIRA Agile Workshop

The purpose of this workshop is to introduce the agile software development methodology support in Atlassian​JIRA ­ the leading project/issue management tool. The participants will acquire the basic understanding of Agile project management with the use of JIRA issue types, workflows and boards.

.NET Performance and Debugging Workshop

The .NET Performance and Debugging Workshop is a practical workshop for experienced .NET developers willing to develop high-performance .NET applications and debug them in the development and production environments. In this eight-day workshop, you will obtain practical knowledge about the performance characteristics of the .NET framework and common language constructs; learn about the relevant internal details of the .NET type system, garbage collector and synchronization mechanisms; and practice debugging scenarios that arise in the development or production environment of .NET applications. This workshop is limited to 8-12 participants to ensure that instructor attention is properly distributed during the practical labs, and to provide an opportunity for specific questions to be brought up after classroom hours.

Angular 2 Workshop

Angular 2 is a brand new web development platform created by the AngularJS team.

During this one day workshop we will explore the Angular platform, gaining solid understanding of how it’s work and how we can work with it, from the development environment stack up to rendering layer.

Learning Go by Writing Microservices

Learn how to code in Google’s new exciting language – Go.

Go is expressive, concise, clean, and efficient. Its concurrency mechanisms make it easy to write programs that get the most out of multicore and networked machines, while its novel type system enables flexible and modular program construction. Go compiles quickly to machine code yet has the convenience of garbage collection and the power of run-time reflection. It’s a fast, statically typed, compiled language that feels like a dynamically typed, interpreted language. (from the website)

In this workshop we’ll write some microservices and learn Go along the way.

Jenkins Workshop

The purpose of this workshop is to introduce the students to Jenkins CI the free opensource continuous integration server application. The participants will acquire the fundamental skills of installing, configuring and administering the tool. In addition we will learn how to build a basic Continuous Delivery pipeline running jobs on distributed build nodes.

Atlassian JIRA Basics

The purpose of this workshop is to introduce the students to Atlassian JIRA the leading project/issue management tool . The participants will acquire the understanding of JIRA basic principles and entities, and learn the skills of using and configuring the tool for maximum productivity and ease of use.

Target Audience:
Software teams interested in using Jira for project/issue management.

Ansible Basics

The purpose of this workshop is to introduce the students to Ansible, the open-source Configuration Management and Infrastructure Orchestration tool. Ansible makes performing advanced system administration tasks radically simple.

The participants will acquire the fundamental skills of installing, configuring and running Ansible. Basic concepts of IAC (InfrastructureAsCode) and system state declaration will be explained and experienced. We will learn the concepts of Ansible YAML-based DSL and basic usage patterns.

This course designed for Software professionals interested in using Ansible for configuration management and infrastructure orchestration. At the end of the workshop participants will be able to use Ansible in their everyday work. The course includes hands-on exercises involving installation and configuration of industry standard software components on Linux servers.

Managing Application Containers using Kubernetes

Kubernetes is an open-source platform for automating deployment, scaling, and operations of application containers across clusters of hosts, providing container-centric infrastructure. In this 1-day Kubernetes workshop you will learn key Kubernetes concepts, how to solve containers limitations with Pods, how to create and scale deployments, and more.

Scale-able Web and Cloud Design Patterns

In order to design the right system to meet the web and cloud era, you need to use the right design patterns. In this workshop we’ll discuss and present some best practices: how to avoid single point of failure; how to design your data stores for growth; how to scale your web and application layer based on actual load and avoid downtime during upgrades. We will cover best practices for static content delivery as well as offloading content from your data stores.

The workshop will include theoretical background as well as code samples that can be used in your real life systems. We will cover design patterns for public clouds such as AWS and Azure as well private clouds such as OpenStack.
Some of the topics can be found in one of my latest posts: Scale Out Patterns for OpenStack (and other Cloud) based Systems

Automated testing with Selenium WebDriver

Selenium is composed of multiple software tools. Each has a specific role. In this workshop participants will learn advanced features and tools of the Selenium toolkit and effective techniques in building test automation for web applications.

During this session participants will learn about Selenium WebDriver (Selenium 2), the newest addition to the Selenium toolkit; Selenium RC (Remote Control) and Selenium-Grid, that allows the Selenium RC solution to scale for large test suites and for test suites that must be run in multiple environments.

This is a practical and hands-on workshop for software testers with basic Selenium knowledge who wish to learn effective techniques in building test automation for web applications.

Selenium Fundamentals Workshop

Selenium is a software testing framework for automating tests of Web applications. There are many advantages to test automation. Most are related to the repeatability of the tests and the speed at which the tests can be executed. Selenium is possibly the most widely-used open source solution.

This workshop introduces participants with the Selenium tool for test automation and its features. The workshop assist new Selenium users in building test automation for web applications.

Target Audience:
− Web application developers who would like to write integration tests
− QA engineers who would like to write acceptance tests
− Anyone who would like to automate interaction with a rich (JavaScript based) web application

Prerequisites:
− Participants must have working knowledge of at least one high-level programming language.

Cloud and Web-based Application Security Foundation

As more companies develop their own software on top of cloud services, the importance of embedding security considerations early into the project lifecycle rises. Good security practices can be the difference between a successful projects or grand failures. Integrating good security practices early as possible can result in better software assurance, resilience and users experience while neglecting them can lead to various sad endings.

This security workshop was created to provide useful security information for professional who wish to better understand the challenges facing companies developing their workloads on top of cloud infrastructure. This workshop is for software developers, product managers, architects, operations & DevOps, IT and QA.

Web Application Security Foundation

Security is one of the most important requirements of any application and Web Application developers face some of the largest security risks. The Open Web Application Security Project gives us the OWASP Top 10 to help guide the secure development of online applications and defend against these threats.

This security workshop was created for developers who wish to better understand the risks associated with web application developmentand explore useful tools to protect the organization against them.

Target audience and Prerequisites:
Software developers, product managers, architects, operations & devops, IT and QA

LinkedIn – from Basics to Mastery

LinkedIn connects the world’s professionals to “put them on the global map” and make them more productive and successful. It can be a tremendously powerful tool to grow your business, if you use it correctly and fully take advantage of its features. With a built-in professional network, ad targeting service, publishing platform and other tools – LinkedIn is the perfect place for B2B marketers.

This course will teach you how to create or improve your professional profile, make new connections and grow your network, how to optimize your company page to attract more potentials customers, how to use LinkedIn as an effective lead generation tool, and more.

Hadoop Fundamentals workshop

In the past few years, Hadoop has become a standard, a basis and a model for the new age of database systems. By leveraging the power of distributed computing, modern programming models and a rich toolset that sits on top of it, Hadoop is one of the most used and fast growing technologies in the world today.

In this seminar, we will go over the basic concepts of Hadoop and distributed databases, learn how to write Hadoop jobs using the Map-Reduce model, talk about the various tools that sit on top of Hadoop and make our life easier. Just like any technology, Hadoop can have performance issues too like data skew and massive data movement. We will end the day with ways to overcome those performance issues that commonly occur in Hadoop.

Python Best Practices

Knowing to write code in Python is usually not enough to get a working application.

In this two day workshop, we’ll cover many best practices for developing with Python. From testing to logging to deployment and everything in between. We will write a simple Python project and apply the practices learned on this project – which means we’ll write a lot of code.

This workshop is for developers who are familiar with the Python programming language and would like to be more effective in their work.

Puppet Course

The purpose of this workshop is to introduce the students to Puppet – the opensource configuration management system. The participants will acquire the fundamental skills of installing, configuring and administering Puppet. Basic concepts of IAC (InfrastructureAsCode) and system state declaration will be explained and experienced. We will learn the Puppet language, classes and modules which will allow the students to use Puppet for system configuration and management in their everyday work.
The course involves hands-on exercises involving installation and configuration of industry standard software components on Linux servers.

Jira Agile Workshop

The purpose of this workshop is to introduce the agile software development methodology support in Atlassian JIRA the leading project/issue management tool. The participants will acquire the basic understanding of Agile project management with the use of JIRA issue types, workflows and boards.

Atlassian Stash Introductory Workshop

The purpose of this workshop is to introduce the students to Git the leading opensource distributed version control system and to Atlassian Stash the git repository management application.
In the first part of the course the participants will learn the basic git concepts and workflows. In the second part they will learn how to work with Stash for effective git collaboration and code management.

Writing Web Services in Go

Come and see why Google’s new language Go is being widely adopted.

Go is expressive, concise, clean, and efficient. Its concurrency mechanisms make it easy to write programs that get the most out of multicore and networked machines, while its novel type system enables flexible and modular program construction. Go compiles quickly to machine code yet has the convenience of garbage collection and the power of run-time reflection. It’s a fast, statically typed, compiled language that feels like a dynamically typed, interpreted language. (from the website)

In this two day workshop we’ll cover the language basics, touch best practices and develop several web services in Go. We are going to write a lot of code and also cover best practices such as debugging & testing. Prior knowledge in Go is not required, however some programming experience is required

Advanced Testing Techniques

What is testing? A common perception of testing is that it only consists of running tests, i.e. executing the software. This is part of testing, but not all of the testing activities. Test activities exist before and after test execution, activities such as planning and control, choosing test conditions, designing test cases and checking results, correctly mixing manual and automatic tests, evaluating completion criteria, reporting on the testing process and system under test, and finalizing or closure (e.g. after a test phase has been completed). Testing also includes reviewing of documents (including source code) and static analysis.

The workshop aims to assist testers in understanding how to improve, perform and manage the test process.  The workshop encompasses both the methodological world and the practical implementation using industry leading test tools

Exploratory Testing Explained

In exploratory testing, testers may interact with the application in whatever way they want and use the information the application provides to react, change course, and generally explore the application’s functionality without restraint. It may seem ad hoc to some, but in the hands of a skilled and experienced exploratory tester, this technique can prove powerful. Advocates argue that exploratory testing allows the full power of the human brain to be  brought to bear on finding bugs and verifying functionality without preconceived restrictions.

This workshop has been designed to assist testers understand better what is exploratory testing, how to plan it, run it, measure it, and improve in doing

Atlassian JIRA Administration and Configuration

The purpose of this workshop is to introduce the students to Atlassian JIRA administration and configuration. The participants will acquire the understanding of JIRA basic concepts and entities, and learn the skills of configuring and customizing the tool to adapt to various best practice use cases.

Target Audience:
Software infrastructure and tools professionals in charge of adopting Jira for project/issue management.

Writing Good Test Requirements

Statistic show that most of the bugs in software applications derive from incomplete or inaccurate functional requirements.  Before new code is designed, it is crucial to finely revised and rewrite the requirements. Ambiguous and even just unclear requirements cause faulty code and expensive software products that do not deliver the intended vision and customer values.

Writing good requirements in general and test requirements in particular is a main element in reducing the cost of software. When the requirements are clear, the   product manager can clarify the needs of the customer and the developers can understand what the need to code. Poorly written requirements directly increase bug numbers and the probability for bugs in production.

Bugs elimination and early discovery is critical for high quality software the writing good test requirements is a key element in achieving it. In the workshop, testers will learn how to write good and even great Test Requirement

Refactoring Legacy Code Workshop

Engineering practices such as Clean Code, OOP, TDD etc. are noble ideas, and it’s not that hard to implement them when the code is new and shiny, but when it comes to an old and tangled legacy code, things are a bit more complicated.

In this workshop we will provide you techniques that will help you tackle the difficulties that pop up when you come to refactor a legacy code.

Is this the right workshop for you? Click here to find out!

Introduction to Agile Engineering Practices

∗ Are you still facing Quality issues?
∗ Do you always have too little time for testing?
∗ Does your team seem to be slowing down after a few sprints?
∗ Having a hard time delivering working software?

If the answer to the questions above is yes, you may want to keep reading.

In this 1 day training participants will get familiar with the technical skills and expertise that every team needs in order to truly be successful transitioning to Agile. From Build automation via TDD and ATDD all the way to continuous deployment, just changing how we manage our projects is not enough. To consistently deliver working software at high speeds, we need to improve the way we write code.

Advanced Agile Programming

Agile is about working software. And there wouldn’t be software if we stopped coding, so we dedicated this workshop to the coding craftsman, and those who aspire to become one.
This is an opportunity to learn about different ways to code, experience them, and hopefully taste enough so you can take them back to your office and start using them. We’ll explore different techniques: Starting from Kent Beck’s simple design principles, going through a bunch of code smells, identifying and fixing them. We’ll talk about the Mikado method, and use it for refactoring, and we’ll even discuss the Transformation Priority Premise, a new concept that may alter the way we think about Test Driven Development.

Pick any language, as long as your IDE carries it. You can even switch languages to see what works for you better. This is deliberate practice at its best.

In this 1 day training participants will get familiar with the technical skills and expertise that every team needs in order to truly be successful transitioning to Agile. From Build automation via TDD and ATDD all the way to continuous deployment, just changing how we manage our projects is not enough. To consistently deliver working software at high speeds, we need to improve the way we write code.

Personal Agility Workshop

Are you or people in your organization feeling overwhelmed with their workload? Do they feel they are not getting the results they want from the actions they are taking? Does everything seem urgently important?

The workshop is lively, interactive, with lots of variety to maximize learning potential. Gerry Kirk, Jim Benson and Yves Hanoulle originally designed this session using Training From the Back of the Room approach, which uses brain science principles for how adults learn, We at practical Agile are very happy to have trained this workshop with Yves Hanoulle and are now offering it as part of our services, we do this with the blessing of Jim, Gerry and Yves.

If you have been wanting to learn more about personal Kanban, this workshop is for you. Participants will apply Kanban and other techniques to manage their own work, and by extension to teams. Each person will design and learn how to use their own activity board.

Practical Kanban

This course is a 2 day training with a goal to explain the what how and why do we use Kanban. During this course participants will learn the major principles of Kanban practices, through lean software development, its origins and values. In addition to the theoretical know-how that we will cover, a lot of exercises and discussions will take place in order to get a feel of things. During the two days course, participants will gradually simulate a real project using Kanban principles. No coding experience is required.

The course is targeted for anyone who wishes to gain deep understanding of using Kanban and agile in software projects. Attending such a course will provide the necessary tools for you to get started with Kanban in your own organization.

Improve your Retrospectives Workshop

During this workshop participants will gain better and deeper understanding of the retrospective meeting. Participants shall explore different ways to facilitate a retrospective while understanding pro’s and con’s of the different styles and activities. This will be achieved by plenty of exercises, simulations and role plays.
Throughout the workshop participants will be able to understand the power of retrospectives through a rolling exercise that will demonstrate the learning and improvement that can be achieved by having efficient retrospectives. Participants will also reflect on the pitfalls of not having frequent and effective retrospectives.

The Retrospective workshop is a one day training module that can be either added to any series of agile related training or can be conducted as a stand alone training.

Practical Scrum

This course is a 2 day training with a goal to explain the what how and why do we do Scrum. The course will go through all of the major topics related to scrum including: Agile, the Scrum framework, self organizing teams and engineering practices that are common for Scrum teams.
In addition to the theoretical know-how that we will cover, a lot of exercises and discussions will take place in order to get a feel of things. During those two days, the participants will gradually simulate a real Scrum project with all of it’s aspects (except the actual coding).

Is this the right workshop for you? Click here to find out!

Advanced Agile Product Owner Workshop

∗ Does it seem that the team never understands what you mean?
∗ Having a hard time splitting user stories to shippable items?
∗ Struggling with predicting when will we reach the deadline?
∗ Having a hard time with prioritization of requirements?

If the answer to the questions above is yes, you may want to attend this workshop.
The Agile product owner workshop is 1 a day experiential training. This workshop will provide a better and deeper understanding of the Agile Product owner role which will help the PO to improve his efficiency resulting in a better product.

Is this the right workshop for you? Click here to find out!

Note: This is a general syllabus and in case of an in-house training, it is possible to make the necessary adjustments to make it more appropriate for your organization’s specific needs.

Advanced Scrum Master Workshop

The Advanced Scrum master workshop is a 1 day workshop that can be added on top of the Scrum training or done separately, unlike the Practical scrum training which is targeted for all roles in Scrum, this workshop will provide a toolkit for daily work of the new and experienced Scrum masters.

Is this the right workshop for you? Click here to find out!

Note: This is a general syllabus and in case of an in-house training, it is possible to make the necessary adjustments to make it more appropriate for your organization’s specific needs.

Introduction to Agile

This is a one day training targeted to any number of people. It provides an entry level introduction to Agile software development.

During this day the participants gain a good understanding of Agile, it’s roots and history & the motivation to become an agile organization. Beyond understanding “the why of Agile”, when the day is over the participants will have knowledge about several agile methodologies and several agile engineering and project management practices.

Getting Started with Python Analytics

In this two day workshop, we’ll go over the tools the Python offers in the realm of scientific computing, machine learning and analytics. We’ll use the same tools Google, Yahoo!, Netflix and others use to gain insights on data.

We’ll build a complete pipeline of data processing from collection to cleaning to learning and visualization. Some of the tools we’ll cover are pandas, matplotlib, jupyter and scikit-learn.

This workshop is for people who’d like to analyze data and Excel is not enough anymore. Basic knowledge of Python is required. We’ll be using the Anaconda scientific Python distribution and will write a lot of code.

Scientific Python Workshop

Come and see why Python is becoming big in scientific computing. See why companies such as Google, Yahoo!, Netflix and others use the Python scientific stack to gain insight from data.

In this workshop, we’ll go over the tools the Python offers in the realm of scientific computing. We’ll cover subjects such as signal processing, image processing, machine learning and analytics.

This hands-on workshop is for scientists who’d like to use Python as their main language. Basic Prior knowledge of Python is not required however some programming knowledge (including MatLab) is. We’ll be using the Anaconda scientific Python distribution and the Spyder IDE to solve many problems.

Effective Unit Testing Workshop

When we start looking into unit testing, we get the simple examples that work in an ideal world. When we start working on actual code, we bump into reality. While unit testing is not easy, it can be easier. Although we think about unit testing as a “tool” thing, it is really a set of skills that we can continue to develop over years. In this workshop we will learn how we can identify and improve those skills.

This is an advanced hands-on workshop. It is intended for developers who already have basic unit testing experience. After this workshop you’ll be able to:
– Prepare your existing legacy code for unit testing
– Refactor for better design with the aid of tests
– Understand and use TDD effectively

Secrets of Effective Unit Testing

When we start looking into unit testing, we get the simple examples that work in an ideal world. When we start working on actual code, we bump into reality. While unit testing is not easy, it can be easier.

In this course, we’ll try our hands in different techniques of unit testing. We’ll discuss naming methods, practice refactoring and techniques of Test Driven Development that work in the real world. Although we think about unit testing as a “tool” thing, it is really a set of skills that we can continue to develop over years. In this workshop we will learn how we can identify and improve those skills.

This is an advanced hands-on workshop. It is intended for developers who already have basic unit testing experience.

Refactoring in Legacy Code

Refactoring is a set of skills. We use refactoring on code and tests, to make sure we will be able to maintain our code and change it quickly the next time we need to change it. While it is easy to do with tests, it is harder (but even more essential) to do with legacy code.

In this 1/2-day workshop, we’ll try our hands in different techniques of refactoring. We’ll discuss naming methods, code extraction, practice refactoring before and after tests, and understand how to refactor legacy code to make it more testable. The objective is to learn the principles of simple design and apply them through refactoring for better code.

This is a medium level hands-on workshop. It is intended for developers with basic unit testing experience.

Chef Intermediate Workshop

Chef Intermediate Workshop is a two day comprehensive instructor-led training course that will take you beyond the fundamentals and give you some experience with where to go with Chef after you’ve mastered the basics.

Management Workshop by Case Study

** Are you born to be a software development manager, or is it something you can learn?
** What they forgot to teach us when we’ve finished university?
** Why is everyone talking about SCRUM and why it doesn’t fit them all?

This workshop presents the tips, tricks and secrets that every software development manager needs! How to build a strategy? How to bridge strategy and the day to day work? Should we focus on rapid development or efficiently using our budget? and how it’s related to the organization that we are in?
What can we learn from Google’s and Facebook management methods? How methodologies like SCRUM, Agile, Continuous Deployment and classic project management fit into each other, and what of those suits you if any? How do we make a project to be managed on its own? How to avoid Micro Management and how to deal with crises?

During the workshop we’ll discuss those issues, and learn together how to become better development managers. The workshop includes theoretical parts along with use-case  practices in which each team will be required to select the appropriate management method that suites the business challenges.