Database System Concepts: Relational Model

These are my notes from Chapter 2 of Database System Concepts, which is about database systems.

The first chapter of this book gave a high-level overview of database systems. The rest of the book is divided into parts, where part 1 is about relational databases. It begins by defining what the relational model is, and how relational algebra allows us to interact with a database. These topics are the subjects of this post.

Continue reading “Database System Concepts: Relational Model”

SpecFlow Testing Framework

SpecFlow is an extremely powerful testing framework, but if you don’t know how to use it, it can end up being more of a liability than an asset.

When SpecFlow was first introduced on my team over a year ago, we used it exclusively for unit testing. A few months ago we started using it for feature testing in one of our microservices, and I am now finally starting to refactor our automation framework to use it.

My point with all this is that I’ve experienced trying SpecFlow out in a variety of situations, and I think I’ve come up with a pretty good idea of when and how to use it. I haven’t found many other blog posts where people talk about how they write their SpecFlow frameworks, so I figured I’d share mine.

Continue reading “SpecFlow Testing Framework”

Properly Documenting Your Application

We’ve all worked with technologies where the documentation is poorly written, outdated, or completely nonexistant. This always sucks, and it’s a huge time and energy drain.

Imagine trying to learn Java or C# without any documentation or textbooks. Alternatively, imagine trying to learn Angular or Bootstrap without documentation. Unless you have direct access to the people who created these languages and frameworks, you’re going to have an impossible time.

The reality is that software is often only as good as its documentation. The technologies mentioned above are all very powerful, but only because they have strong documentation that allows people to use them effectively.

Yet most of us overlook the importance of documentation in our own work. This ends up causing a lot of inefficiency and wasted time. But as the savvy engineer might recognize, it also offers an opportunity for him to differentiate himself from his peers.

Here I will discuss some effective techniques to help write solid, quality documentation.

Continue reading “Properly Documenting Your Application”

11 Traits of High Quality Software Engineers

While it is difficult to quantify productivity differences between engineers, it’s very easy to observe a significant difference between the best engineers and even the average one. Attempts have been made to quantify the potential productivity difference between good and great engineers, and claims have been made that the great ones can be 10 to 30 times more productive than their average counterparts. An interesting discussion on some of these studies can be read here. There will certainly be continual contention and debate about these numbers. Regardless of the statistics of the subject, the question of interest here is what, exactly, are the distinguishing factors? In this post I’ll talk about some of the things I’ve observed from my own experience and discussions with other engineers.

Continue reading “11 Traits of High Quality Software Engineers”

New Features in Visual Studio 2017

Microsoft has recently released Visual Studio 2017, adding a significant number of features on top of what’s been available in prior versions. This release has a particular emphasis on Visual Studio’s performance and its ability to make developers more productive. Since the best developers always suggest to stay up to date on new tools and technologies, it is worth spending some time to gain an understanding of these new features. Doing so helps developers who use Visual Studio assess whether an upgrade to this newest version is worth their time. Note that this post does not cover all of the new features that have been or will be added.

Following are the new features which will be discussed in this post:

  • Lightweight Solution Load
  • Live Unit Testing
  • Navigation and Debugging Updates
  • Javascript Debugging
  • Structure Visualizer
  • Window Layouts
Continue reading “New Features in Visual Studio 2017”