All that glitters is not gold

Originally published by Dan Patrascu on: http://danpatrascu.com/all-that-glitters-is-not-gold/

All that glitters is not gold” is a well-known saying, meaning that not everything that looks precious or true turns out to be so. Does this also apply to software development? I’m fairly sure it does, since being attracted by glitters comes natural especially when you are not a very experienced software developer. As I do not considered myself a very experienced developer, I’m not afraid to say that I was attracted by glitters more than once and learned the hard way that all that glitters is not gold. Let me explain!

I was at the beginning stages of my journey to become a .Net developer when I first got in touch with Entity Framework Core. I found it really exciting since it was fairly easy to set up and it abstracted all the SQL part away from me. Let’s be honest, when you’re still learning the basics, having a tool (well, ORM in this case) that makes things easier is more than welcome. And it’s also not wrong in my opinion if one remains aware that SQL is still something that a developer needs to learn. The impression that Entity Framework Core is like a card in the magician’s sleeve that I can always pull out when working with SQL databases did however stick in my mind.

When starting to work on real projects however, even if personal ones, I have found out that, well Entity Framework Core is not really the answer to everything. I found out that in some circumstances, Entity Framework makes one or more transactions to satisfy sometimes even simple requests which, of course, adds a lot of latency. For small application this might not be a big deal, but for larger applications with many requests, this becomes something to be aware of. Also, modeling many-to-many relationships, especially when using a code-first approach is not necessarily very trivial. Sure, you can create model classes for the joining tables (called also bridging tables) and than configure the many-to-many relationship via the Fluent API, but this is not very intuitive and maybe hard to grasp for beginners. Sure, there are a lot of other ways to optimize Entity Framework Core but all database architects that I met were always kind of worry when confronted with the possibility to use Entity Framework Core.

I then discovered other ORMs, like Dapper which allows you to easily work with stored procedures. Generally it is more lightweight than Entity Framework Core, it yields a better performance, but it lacks a lot of features that EF Core provides. Writing SQL is once again a very important skill with Dapper. So one would have to spend far more time to get Dapper working and maintain everything in sync when changes might occur.

The strange thing however comes now: Entity Framework is not bad. Dapper is not bad. NHibernate (of which I have basically no experience) is probably also not bad. Does this contradict everything I’ve said before? In my opinion, no. But they are also not golden. As a software developer one would have to learn all the good parts about all the tools that might be used, as well as all the bad parts. No tool is a card in a magician’s sleeve that you can simply pull out everytime, regardless the exact scenario, application requirements, forcasted load and usage.

A good developer should always be aware of all pros and cons and should have the necessary experience to choose everytime the solution that accommodates a certain and very specific scenario in the best possible way. Sometimes it might be Entity Framework Core, in other occasions it might be Dapper or NHibernate. Sometimes it might be Angular, at some other points it might be React, Razor or anything else. Sometimes it might be Microsoft Azure, other times it might be AWS. Sometimes it might be SQL, other times it might be No-SQL. And when you start realizing that you have less and less such cards down your sleeves, it means that you gain more and more experience as a software developer.

The Joy of Data-Driven Development

Author: Davide Trimarchi — Head of Product & Design @123FormBuilder

  1. How I got started with data-driven development

Data-driven development is an increasingly popular way for technology companies to improve their products and services. All of the big tech giants already do data-driven development, but most smaller companies haven’t mastered it yet—and when smaller companies do turn to data, it’s often to improve their marketing efforts, not the product itself.

123FormBuilder’s leadership in data-driven development impressed me and led me to join the company last year. I was won over by the fact that decisions here are made on the basis of objective data, which encourages experimentation and lets us try many ideas quickly, instead of preparing for months to launch something. I was attracted to the company for these reasons, and my decision to join has paid off.

  1. Why data-driven development matters

So, what is a data-driven approach to development? It’s all about making decisions based on actual data that come from measuring user behavior, as opposed to decisions made on gut feeling and intuition alone. Perhaps surprisingly, many companies base a lot of their decisions on internal intuition instead of what users’ behavior is telling them. Managers embark on new projects or ideas based on what they think, not what they know, putting those projects at risk of failure. Without a data-driven approach, designers and developers are relegated to pleasing managers instead of users. Making decisions based on user data shifts the focus from what managers want to what users want, opening up a host of related benefits:

  • Giving everyone a voice (including users!)
  • Improving transparency: everyone, not just management, can access data
  • Increasing ownership and autonomy
  • Encouraging experimentation
  • Allowing people to learn from mistakes

Armed with information about how their products and services are performing, companies can make better business decisions and improve internal operations, efficiency and morale.

  1. Our data-driven approach at 123FormBuilder

In the last two years, everyone at 123FormBuilder has started to adopt a data-driven approach in everything we do. Today, we track more than 800 unique metrics and use them for a variety of purposes, including:

  • Understanding behavior of specific user segments: Looking at multiple data points for the same user segment helps you map, understand and improve the user journey. You can make sense of these metrics by looking at them in concert to understand your users’ needs and goals.
  • Creating an early alert system: By continuously tracking the same metrics, you come to learn the normal ranges of variation in each metric. It’s easy to spot unusual highs or lows, and you can identify a problem early on and take action to fix it.
  • Generating ideas for improvement: We use data to identify opportunities to improve a product. Data can tell us if our product is being used in unexpected ways, or if people find it difficult to do common tasks or generate specific workflows. This lets us make updates based on user needs.
  • Setting accurate expectations: Without looking to data, it’s easy to get inflated expectations for a product update or new feature. We can use metrics to specify that we expect an update to increase engagement by a certain percentage within a specific cohort, or improve form completion rates by 10 percent. This allows us to not only set expectations for our product team, but also understand if an update has been successful. (If not, back to the dashboard—not the drawing board—to identify new opportunities based on data!)
  • Budgeting for and prioritizing feature development in the product roadmap: When we know what we expect a feature to achieve, we also know what features are most important. Using clear expectations that are based on data allows us to prioritize the features that are expected to have the greatest impact on the bottom line.
  • Validating updates before roll-out: We do A/B tests with a subset of users for every new feature before rolling it out to a wider audience. We compare the initial A/B test results to the expected impact to figure out whether the update should be released to everyone as-is, or if it still needs more work to achieve our goal.
  1. A closer look at A/B testing

While technology has made A/B testing easier to manage, especially at scale, the practice has actually been around for about 100 years. A/B testing is fairly simple: it shows two different versions of something (like an email subject line, landing page or product menu) to different sets of users to understand which version performs best. Although it sounds fairly simple, it can be difficult to execute well.

The most important part of A/B testing is deciding exactly what you want to test and how you will determine whether the test was successful. Too many companies test wildly different versions of a landing page, for example, with completely different headlines, layout, buttons and images. If one version of the page outperforms the other, you won’t know whether it was the headline, layout, buttons or imagery (or something else entirely) that made it work: you’ll have to do more testing to get actionable results. A better approach is to test one specific component at a time, such as button size (small or large?) or button color (green or red?), and decide what metric will determine which version “won” (typically, that’s the version that gets more clicks). The most effective A/B tests are conducted on a specific element with a specific target metric for success.

While testing is often a good idea, you don’t always have to test everything. If you have a small user base, your results may not be based on enough data to be conclusive. Or, you might not have enough time to conduct a test. In some cases, it’s okay to rely on common design patterns and industry best practices.

At 123FormBuilder, we do plenty of experiments: in the last two years, we’ve conducted 208 unsuccessful tests (indicating a feature needed improvement before wider release) and 66 successful tests (allowing a feature update to be rolled out to all users). In fact, we have 8 tests running right now. Throwing away code sucks, but we can see that under 25% of our experiments have actually succeeded. Imagine if we didn’t collect data and made updates based on gut feeling alone: we might have pushed the other 75% of updates to our users and actually hurt our performance!

To learn a little more about how A/B testing works, let’s look at two recent A/B tests we conducted on the dashboard of our form editor: one successful and one unsuccessful.

Example 1: Landing page alternative – unsuccessful

Hypothesis: We thought that our form editor landing page, a dashboard showing all of a user’s forms, was not encouraging users to interact with their existing forms or create new ones. We decided to test the current dashboard against a new landing page design where users would simply see a list of their forms. We expected that the new design would lead users to create more new forms and engage more with existing ones.

  • Proposed update to test: List of user’s forms as landing page for form editor
  • A: Control version – product as usual
  • B: Variation – new landing page
  • Success metric: Number of new forms the user creates
  • Results: The number of new forms created dropped by 13.12% (statistically significant) in the test design. We didn’t roll out the change.

Example 2: Dashboard update – successful

Hypothesis: We thought that our form editor’s dashboard wasn’t encouraging product navigation enough. The page only contained graphs showing the results of form submissions. We wanted to test a new dashboard that added quick links to recently created forms and forms with recent submissions next to the complete listing of submission data.

  • Proposed update to test: A quick links panel next to form submission data
  • A: Control version – product as usual
  • B: Variation – improved dashboard
  • Success metric: Number of times users viewed form submissions.
  • Results: The number of form submission page views increased by 371.49% (statistically significant). We rolled out this update to our entire user base.

Sometimes, your A/B tests don’t provide conclusive or statistically significant results. That happened to us when we redesigned the paywalls in our platform. At that point, you can choose to throw away the code, which you might do if it adds unnecessary complexity that could become expensive to maintain in the future, or keep the code if it offers another benefit. We decided to keep our new paywalls because they reduced the time it would take to for us add new paywalls and reduced loading time on the website for users. Even though this redesign didn’t result in any significant performance improvements right away, it was still worth implementing.

  1. Conclusion – Key Learnings

What have we learned from two years of data-driven development at 123FormBuilder? Making data-driven decisions really works—as long as you keep these principles in mind:

  • Test one element at a time (small steps)
  • Establish the right goals and choose success metrics carefully
  • Keep the number of metrics reasonably low for each experiment
  • Make sure tracking is correct and metrics are recorded correctly by your system
  • Look for large opportunities: test areas with the most room for improvement in user behavior
  • Run tests for full business cycles: don’t end tests too quickly, or you might not capture the full diversity of users
  • Only consider statistical significance: don’t make conclusions based on raw numbers, even if they “look good.” Test for significance and use that as the basis for your decisions.

Once you choose to move from gut-based decisions towards data-based decisions, you need to embrace the data and trust it above all else. Otherwise, you’re not really making data-driven decisions at all.

Masterclass: Building a dependable Automated Testing Environment which has been running and growing for over 20 Years

Date: 23 November 2018, Cluj
Training fee: €250/participant plus VAT, only 20 seats available

To book your seats, please contact us by email ([email protected]) or phone (+40 741 103 133).

In this training you will be able to learn from Simon’s 38 year history in testing, some of his good ideas and definitely from his bad ones. You will hear about some automated testing successes, share some lessons learned automation and otherwise and explore some options.

Course outline

  • Introduction
  • Quality Management Statement
  • Test strategy and Test Plan
  • The Test Data
  • Connecting the Test Plan to the Test Strategy
  • Connecting the Test Data to the Test Plan
  • Dealing with Errors & Problems – A Recursive V Model Technique
  • A Strategy to DEAL (not “cope”) with aggressive time constraints
  • Built for Automation
  • Routine Procedure
  • Problem Logs
  • Successes Made & Lessons Learned

Lesson 1. Do not Indulge in testing ~ Produce Results which have a benefit

Lesson 2. Do not Indulge in “Automation” ~ When is it the right time to automate?

Lesson 3. Testers must communicate and collaborate

Lesson 4. Automation is a means to an End ~ Get the end “In Focus”

Lesson 5. Testing “Tools” are all around us

Lesson 6. Keep the Testing and Automation practises separate

Lesson 7. Build-in time to review the testing ~ Test the Testing

Lesson 8. Remember that using tools involves “programming” ~ Can you program “properly”?

Lesson 9. Tools are Software, they must be treated like any other software development

Lesson 10.  So you want resilient and dependable “Automation” ~ prepare for a shock statistic

Lesson 11. Expect to spend a long time building and maintaining the Test Automation Suite

Lesson 12. “Management” do not understand the difference between “Automated” & “Automatic”

Lesson 13. When is the right time to Automate?

The trainer

Has more than thirty-eight years of experience in the field of software quality, having transferred into the world of system testing from a business role.

  • Experienced in testing software in both business, technical and scientific environments
  • From major investment and insurance real-time and batch processing systems to embedded laser control, cryogenic control, and superconducting applications.
  • From Test Design to Test Management, including Risk Based Testing, CAST and guiding UAT.
  • Founder of Ingenuity System Testing Services, the preeminent testing authority in the field of electronically traded insurance in the United Kingdom. A System Testing Practice with automation a central specialism.
  • A pupil of the “Structured School of Testing”, fervently believing that “testing is an evidential and disciplined activity within a focussed Quality Management System”, and long-time devotee of Beizer.
  • Always seeking to fully utilise “Computer Aided Software Testing” techniques.
  • During the mid to late 1990’s, Simon was the chief adviser to a number of large UK financial institutions, assisting in the development and later auditing of their “Year 2000” testing strategies. All of them successfully deployed.

Simon is widely published internationally in conference proceedings, papers, and contributions to books and has presented as an invited speaker in the United States, UK, Scandinavia, at EuroStar, and at the World Congress for Software Quality.

An experienced Expert Witness in the field of Software Quality.

Today, Simon is retired from running “Ingenuity”. When he is not providing consultancy services and making conference appearances, he can often be found in his workshop on the island of Gozo,  repairing and restoring clock mechanisms. All of which are equally as temperamental as any computer system.

Date: 23 November 2018, Cluj

Training fee: €250/participant plus VAT, only 20 seats available
To book your seats, please contact us by email ([email protected]) or phone (+40 741 103 133).

Browse more masterclasses here.

Masterclass: Building a dependable Automated Testing Environment which has been running and growing for over 20 Years

Date: 19 November 2018, Iasi
Training fee: €250/participant plus VAT, only 20 seats available

To book your seats, please contact us by email ([email protected]) or phone (+40 741 103 133).

In this training you will be able to learn from Simon’s 38 year history in testing, some of his good ideas and definitely from his bad ones. You will hear about some automated testing successes, share some lessons learned automation and otherwise and explore some options.

Course outline

  • Introduction
  • Quality Management Statement
  • Test strategy and Test Plan
  • The Test Data
  • Connecting the Test Plan to the Test Strategy
  • Connecting the Test Data to the Test Plan
  • Dealing with Errors & Problems – A Recursive V Model Technique
  • A Strategy to DEAL (not “cope”) with aggressive time constraints
  • Built for Automation
  • Routine Procedure
  • Problem Logs
  • Successes Made & Lessons Learned

Lesson 1. Do not Indulge in testing ~ Produce Results which have a benefit

Lesson 2. Do not Indulge in “Automation” ~ When is it the right time to automate?

Lesson 3. Testers must communicate and collaborate

Lesson 4. Automation is a means to an End ~ Get the end “In Focus”

Lesson 5. Testing “Tools” are all around us

Lesson 6. Keep the Testing and Automation practises separate

Lesson 7. Build-in time to review the testing ~ Test the Testing

Lesson 8. Remember that using tools involves “programming” ~ Can you program “properly”?

Lesson 9. Tools are Software, they must be treated like any other software development

Lesson 10.  So you want resilient and dependable “Automation” ~ prepare for a shock statistic

Lesson 11. Expect to spend a long time building and maintaining the Test Automation Suite

Lesson 12. “Management” do not understand the difference between “Automated” & “Automatic”

Lesson 13. When is the right time to Automate?

The trainer

Has more than thirty-eight years of experience in the field of software quality, having transferred into the world of system testing from a business role.

  • Experienced in testing software in both business, technical and scientific environments
  • From major investment and insurance real-time and batch processing systems to embedded laser control, cryogenic control, and superconducting applications.
  • From Test Design to Test Management, including Risk Based Testing, CAST and guiding UAT.
  • Founder of Ingenuity System Testing Services, the preeminent testing authority in the field of electronically traded insurance in the United Kingdom. A System Testing Practice with automation a central specialism.
  • A pupil of the “Structured School of Testing”, fervently believing that “testing is an evidential and disciplined activity within a focussed Quality Management System”, and long-time devotee of Beizer.
  • Always seeking to fully utilise “Computer Aided Software Testing” techniques.
  • During the mid to late 1990’s, Simon was the chief adviser to a number of large UK financial institutions, assisting in the development and later auditing of their “Year 2000” testing strategies. All of them successfully deployed.

Simon is widely published internationally in conference proceedings, papers, and contributions to books and has presented as an invited speaker in the United States, UK, Scandinavia, at EuroStar, and at the World Congress for Software Quality.

An experienced Expert Witness in the field of Software Quality.

Today, Simon is retired from running “Ingenuity”. When he is not providing consultancy services and making conference appearances, he can often be found in his workshop on the island of Gozo,  repairing and restoring clock mechanisms. All of which are equally as temperamental as any computer system.

Date: 19 November 2018, Iasi

Training fee: €250/participant plus VAT, only 20 seats available
To book your seats, please contact us by email ([email protected]) or phone (+40 741 103 133).

Browse more masterclasses here.

Masterclass: Leading Change

Date: 26 October 2018, Iasi
Training fee: €290/participant plus VAT, only 20 seats available

To book your seats, please contact us by email ([email protected]) or phone (+40 741 103 133).

Harness the Power of Change

Leading Change, at its core, explores the necessity of effective leadership in the 21st century.

Globalization, social media and technology have rapidly transformed the playing field and will continue to shape the business landscape. The workforce is more connected, yet more disconnected than ever before. Now, more than ever, a strong foundation of leadership is needed to anticipate the changes on the horizon and successfully drive visions into realities.

Through a combination of instructor-led training, role-playing and skill-building activities, Leading Change is a one-day workshop that provides participants with the tools to successfully manage any situation and strategically navigate the dynamics of change. Throughout the course, participants explore methods for assessing performance levels, building resilience in their teams, avoiding common pitfalls, leveraging key stakeholders and improving organizational communication.

Benefits of Leading Change

  • Develop a custom blueprint to assist efforts in successfully implementing change
  • Identify strategies for unfreezing, changing and refreezing behavior
  • Leverage knowledge of time-tested leadership and influence strategies to accelerate the pace of change
  • Recognize resistance to change and respond appropriately

Date: 26 October 2018, Iasi

Training fee: €290/participant plus VAT, only 20 seats available
To book your seats, please contact us by email ([email protected]) or phone (+40 741 103 133).

Browse more masterclasses here.

Masterclass: Leading Change

Date: 05 October 2018, Timisoara
Training fee: €290/participant plus VAT, only 20 seats available

To book your seats, please contact us by email ([email protected]) or phone (+40 741 103 133).

Harness the Power of Change

Leading Change, at its core, explores the necessity of effective leadership in the 21st century.

Globalization, social media and technology have rapidly transformed the playing field and will continue to shape the business landscape. The workforce is more connected, yet more disconnected than ever before. Now, more than ever, a strong foundation of leadership is needed to anticipate the changes on the horizon and successfully drive visions into realities.

Through a combination of instructor-led training, role-playing and skill-building activities, Leading Change is a one-day workshop that provides participants with the tools to successfully manage any situation and strategically navigate the dynamics of change. Throughout the course, participants explore methods for assessing performance levels, building resilience in their teams, avoiding common pitfalls, leveraging key stakeholders and improving organizational communication.

Benefits of Leading Change

Develop a custom blueprint to assist efforts in successfully implementing change
• Identify strategies for unfreezing, changing and refreezing behavior
• Leverage knowledge of time-tested leadership and influence strategies to accelerate the
pace of change
• Recognize resistance to change and respond appropriately

Date: 05 October 2018, Timisoara

Training fee: €290/participant plus VAT, only 20 seats available
To book your seats, please contact us by email ([email protected]) or phone (+40 741 103 133).

Browse more masterclasses here.

Rubik Hub powers this year’s entrepreneurship track at Codecamp Iasi | October 27

Originally published on https://rubikhub.ro.

Join us, on October 27, at Codecamp Iasi. Rubik Hub will be hosting the Entrepreneurship Track, and we plan to make it the best so far. For this year’s edition, we’ve decided to take things to the next level with a new concept focused on a startup’s journey and the steps involved to achieve success; starting from identifying problems and solutions all the way to scaling up and exiting.

We’ll be focusing on the most important aspects from the life of a startup, as well as on what needs to be done to strengthen your idea, chase your mission & vision, improve your team, and more. During the Entrepreneurship Track, well-known founders and successful entrepreneurs will share their take on the main stages one needs to consider in order to go from idea creation to scale-up.

Startup journey – Successful startup development stages

  • Idea generation
  • Problem + Solution
  • Mission, vision & core values
  • Team
  • MVP
  • Validation (it’s time to get out of your comfort zone and put your MVP to the test)
  • Growth
  • Scale-up

 

Reinventing startup funding

Another heavily discussed topic during the Entrepreneurship Track will be startup funding. We will talk about funding methods for startups that go beyond the conventional. How much do you know about acceleration programs? Join us on October 27 to find our more about:

  • Acceleration opportunities
  • Angel investor funding
  • Crowdfunding
  • ICO funding

 

Reinventing startup education

Because we want to make this edition of Codecamp Iasi a memorable one, we’ve prepared a special track that will focus entirely on entrepreneurial education. For your startup to succeed, it needs to be educated. Both you – the founder – and your team must be open to accepting feedback, whether good or bad, in order to improve, move a step further and have realistic chances of climbing up the success ladder in entrepreneurship.

This is where Rubik Hub will enter the scene. Join us for an open talk with the Rubik mentors and startup founders who have dared to take a risk. We’ll engage in the most interactive conversations with aspiring entrepreneurs that have participated in Rubik Hub’s programs, including Square1 Bootcamp, Startup School, and Office Hours.  During the track we’ll introduce our newest program, Startup Spinner Makeathon, a 3-day experience for speeding up your startup; which will take place at Rubik Hub between November 23-25. Stay tuned for more info!

Last but not least, in the same day we will organise Startup Alley, a place where you can exhibit, visit or launch a Startup with an audience of over 2000 participants from Tech & IT sectors. Sign up with your startup here: https://www.facebook.com/events/530270297433363/

Masterclass: Advanced Docker for developers

Date: 05 October 2018, Timisoara
Training fee: €200/participant plus VAT, only 25 seats available

To book your seats, please contact us by email ([email protected]) or phone (+40 741 103 133).

About the training

This workshop features the concepts and practices of containerization of projects written in different programming languages in different versions. You will learn not only how to create an image using Dockerfile best practices, create a Docker container from it, use volumes in the development process and apply concepts of the Docker networking model. You will also learn how to set up local GitLab instance with integrated Docker Registry, configure GitLab Runner and handle your Go/PHP project with configured CI.

Have a chance to test the knowledge you have gained by playing the Docker Quiz covering Docker Certified Associate questions written by the Docker Certification Team.

Keywords: Docker CE, GitLab, Docker Registry, GitLab Docker Registry, Continuous Integration (CI), GitLab Runner, DockerFile, Go, PHP

Timeline: 8h workshop (1x 30min break + 2x 15 min break)

Outline:

  • History and motivation behind Docker
  • Installation and configuration
  • Docker in action
  • Docker images
  • Building Docker images
  • Reducing image size
  • Multi-stage builds
  • Versioning Docker images
  • Publishing images
  • Local image registry
  • Local GitLab with GitLab Runner running in Docker
  • Containerizing GoLang/PHP project in GitLab CI
  • Networking
  • Storage and Volumes
  • Docker-compose
  • Docker Certified Associate

The trainer

 

Software Architect at GOG.com, passionate and happy every-day Docker user, Docker Certified Associate and Docker Community Leader organizing meet-ups in Warsaw (Poland). Once a week he lectures at the University of Warsaw, on topics related to high-performance web solutions and teaches students how to base their work on Docker and Docker Swarm. Speaker at DockerCon 2018 in San Francisco.

Training fee: €200/participant plus VAT, only 25 seats available
To book your seats, please contact us by email ([email protected]) or phone (+40 741 103 133).

Lunch and Coffee Breaks included in the price of the Masterclass.

Browse more masterclasses here.

Masterclass: Building Software in 2018. Mapping abstract buzzwords to the architecture of the real-world

You know what? Buzzwords don’t compile and won’t deploy any code on behalf of your team. At the same time, buzzwords are fashionable at a particular time, or in a particular context, for a reason. Buzzwords address the need to impress the audience selling sparse working solutions for one-size-fits-all general solutions when not for true silver bullets.

Date: 22 – 23 November 2018, Cluj-Napoca
Training fee: €600/participant plus VAT, only 25 seats available

To book your seats, please contact us by email ([email protected]) or phone (+40 741 103 133).

About the training

The 2-day workshop aims at pinpointing the challenges of building software systems in 2018. The vision presented is articulated in five points.

  • Abstraction and Synthesis
  • Cross-platform Implementation
  • Distributed Architecture
  • Inherent Scalability
  • Replaceability

Each of these points will receive a treatment in the first day of the workshop. It’s mostly an open discussion, driven by a bunch of slides, diagrams and direct experience. More in detail, here’s a drill-down of actual arguments.

Abstraction and Synthesis Collecting requirements. Exploding features into UX. Process of UX design. UX-to-DEV communication. Tools and actual deliverables. How the structure of the team can flourish or vanish agility. Brass-band communication of efforts and deliverables.
Cross-platform Implementation .NET Core and Java. Hosting factors and costs. Highlights of ASP.NET Core. Web API: REST, RPC, security, design.
Distributed Architecture Protocols: HTTP, gRPC, custom. Data transfer: JSON, MessagePack. Bus and queues. Bounded context and mapping. Anti-corruption patterns.
Inherent Scalability Microsystems and microservices. Grass-roots microsystems (distinct systems connected together). Dealing with legacy applications. Principles of microservice design and the Gateway pattern. Data consistency and shared data. Testability.
Replaceability Deployment and DevOps. Orchestration and fine-tuning. Role of Kubernetes.

Microservices help to decompose the application in small autonomous services that can be developed and deployed independently. Sure, but this is only the tip of the iceberg. A microservices architecture also brings challenges in terms of orchestration, communication, scalability and, more than everything else, size. There are two ways to reach the level of microservices–from the bottom of independent solutions that altogether form a full system or from the top of a business domain broken into smaller and independent pieces, some of which are actually microsystems, namely graphs of microservices to a large extent invisible to the outside world.

In the second day of the workshop we’ll zoom into the implementation of a microservice and how it could be implementing a message-based business logic. In particular, we’ll look into an open-source framework—the MementoFX framework—that serves a double purpose. First, it can be a quick-and-easy replacement for CRUD systems bringing in a rather transparent way the benefits of CQRS and Event Sourcing. Second, it serves as a concrete demo of how to arrange a distributed application that implements features and functions delivering messages to a distinct and rather independent components.

The trainer

Since 2003, Dino has been the voice of Microsoft Press to Web developers and the author of many popular books on ASP.NET and software architecture. Dino wrote “Architecting Applications for the Enterprise” with fellow MVP Andrea Saltarello and “Modern Web Development” and has “Programming ASP.NET Core” in the works for 2018. When not training, Dino serves as the Digital Strategist of BaxEnergy, a software firm in the energy market.

Training fee: €600/participant plus VAT, only 25 seats available
To book your seats, please contact us by email ([email protected]) or phone (+40 741 103 133).

Lunch and Coffee Breaks included in the price of the Masterclass.

Browse more masterclasses here.