Wintellect Blogs

10 Rules Every Software Consultant Should Follow

Noel Stieglitz

18 Jun , 2014  

Understand the business

As a software consultant, your sweet spot lies between the business problem and the software implementation (use your imagination for the venn diagram here).  You can be the #1 JavaScript contributor on Github but you won’t succeed as a software consultant unless you also understand the business domain.  Before I ever step foot on a client’s site, I know what they do, who their competitors are, what challenges their industry faces, and how my engagement will propel their business forward.  Early on in a project, I make an effort to take a business stakeholder out to lunch.  She will inevitably prefer to discuss the business rather than the software, which is a prerequisite to understanding the technical requirements.  The next time you have a client in the same industry (or hopefully another project with the same client), the less time it will take to get up to speed.

Adapt to your client’s process and culture

Despite what you may read, there is more than one right way to build software.  Every client you work with will have a different process and a different culture.  Often clients will bring in consultants to improve their software as well as their process, but many already have a process that works (well enough) for them.  What if your client doesn’t use the Agile methodology and there isn’t a critical mass in the company to transition?  Guess what?  It’s not your client’s job to subscribe to your way of getting things done.  You should always promote process improvements, but don’t let your preferences get in the way of solving the discrete problem you were hired to solve.  Remember which problem you are tasked to solve.Read more

,

Wintellect Blogs

SOLID Software in the Enterprise

Noel Stieglitz

7 May , 2014  

Earlier this year I tagged along with one of our sales guys to ask potential clients what was keeping each of them up at night.  I heard two recurring themes:

  1. We investing heavily in Silverlight (or some other legacy tech stack).  How do we modernize (usually to a web stack)?
  2. We have an insanely complex domain (usually sitting behind a set of interdependent web services), with a goal of modularity and maintainability.  How do we turn this spaghetti into ravioli?

 

If you fall into camp #1 – check out this Silverlight Migration Strategies white paper here.  Otherwise, keep reading…

Business/domain complexity is at the root of every enterprise software project.  Mind exploding business and validation rules often result in code with seemingly infinite cyclomatic complexity scores, dependency graphs that make the most stoic architect weep, and code smells so strong you have to work remotely three days per week.  What’s that, stakeholder?  You need to create invoices using ten different calculation algorithms (with varying input), including various fluctuating currencies, distributed over three transports in one of four formats?  And oh, next sprint will have two more calculation algorithms, each with a slightly different output?  These types of rules are hard to document, much less turn into legible, maintainable, and testable code.  There is no silver bullet for complexity, but following some best practices can help prevent a complex code base from turning into a big ball of mud. 

The SOLID principles are a set of five guidelines that help make complex applications more maintainable and extendable over time.  These principles are:

  • SRP – The Single Responsibility Principle states that a class should have a single responsibility, with responsibility being defined as a reason to change.  This is one of the most important of the five rules, and probably the most misunderstood and applied.
Read more

, , , , , ,

Wintellect Blogs

5 Great Features in EcmaScript 6 (ES6 Harmony)

Noel Stieglitz

24 Mar , 2014  

EcmaScript is the standardized scripting language that JavaScript (and some other languages, like ActionScript) implement.  If you think EcmaScript is a terrible name, you’re not alone.  Brendan Eich, the original developer of JavaScript, once wrote that the name EcmaScript sounds like a skin disease.  Naming aside, JavaScript is one of the most important languages in existence today.  Every browser has a JavaScript interpreter, JavaScript on the server is becoming ever more popular, and now it’s possible to use JavaScript for desktop (Chrome Apps), nativish mobile (PhoneGap) and native Windows 8 apps.  A new version of EcmaScript will have a broad impact on web development.

The current version of EcmaScript supported in modern browsers is ES5 (with some ES6 support).  ES5 drives a lot of developers mad.  Folks coming from the backend development space find ES5 lacks some pretty basic language features.  As such, several workarounds have emerged.  TypeScript is very popular in the .NET world (and here at Wintellect) and CoffeeScript is kind of a big deal™ in the Ruby community.  Both TypeScript and CoffeeScript provide syntactic sugar on top of ES5 and then are transcompiled into ES5 compliant JavaScript.  ES6 will tackle many of the core language shortcomings addressed in TypeScript and CoffeeScript.… Read more

, , , ,

Wintellect Blogs

Angular.js vs Ember.js Star Rating Component Comparison

Noel Stieglitz

24 Mar , 2014  

UPDATE: I recently published a WintellectNow course – Getting Started with Ember.js.  You should also check out Jeremy Likness’ in depth series on Angular – Mastering AngularJS.  Use promo code NSTIEGLITZ-13 for a free two week trial.

Last week, I published a blog post that shows how to build a reusable Star Rating Component using Ember.js.  For this blog, I will share how to build the same functionality using a custom directive in Angular.js.  I’m not the first person to write a star rating component in Angular.js; this post is more about comparing the bits needed in the respective frameworks.

There are more similarities than differences in the way you build reusable controls, but as you’ll see, there are some key differences.  Below is a screenshot of a demo app which uses the Star Rating component.

movie rating screenshot 

Angular Directives

At the highest level, Angular directives are reusable components used to manipulate the DOM.  Angular comes with several built in directives like ngClick, ngRepeat, etc. It’s also pretty straight forward to write custom directives.  A custom directives looks just like HTML; you can define a directive to be used as an element, attributes, CSS class, or less commonly, as a comment.  For example, here is the ngClick directive (as an attribute):

 <button ng-click="count = count + 1" ng-init="count=0">

Here is a an example of using a custom directive as an element:

<customer-address></customer-address>

Read more about Angular Directives here.… Read more

, , ,

Wintellect Blogs

Ember Components – Build a Star Rating Component

Noel Stieglitz

24 Mar , 2014  

UPDATE: I recently published a WintellectNow course (“Getting Started with Ember.js”).  Use promo code NSTIEGLITZ-13 for a free two week trial.

Ember Components are “custom HTML elements that you can use to clean up repetitive templates or create reusable controls.”  They simplify your templates by encapsulating functionality and introduce reusability that would otherwise not be possible. 

If you’ve been reading about HTML5 Custom Elements, this concept should not be totally unfamiliar.  It should however, sound awesome.  Ember.js components are future-proof future-resistant in that the Ember.js team is working with the W3C standards body to ensure an easy migration path to the HTML5 custom element.

If you’re brand new to Ember.js, check out Getting Started with Ember.js on WintellectNow (shameless plug – use promo code NSTIEGLITZ-13 for a free trial with Credit Card), and read the ever improving guides on Emberjs.com.  Otherwise, read on to learn how to build an Ember Component.

In this blog, I’ll walk through building a star rating component and show you how to consume the component in a simple demo app.  The demo app (source code linked below) allows users to rate movies, but the star rating component is generic enough that it can be used to rate anything (products, beer, etc).  Below is a screenshot of the demo app.  The gold star below each movie title is an instance of the star rating component.… Read more

,

Wintellect Blogs

Advanced Queries with BreezeJS

Noel Stieglitz

24 Mar , 2014  

UPDATE: I recently published a WintellectNow course (Getting Started with Breeze.js) that goes into more depth using Breeze in the context of an AngularJS app.  Use code NSTIEGLITZ-13 for a free 2 week WintellectNow trial.

BreezeJS is a JavaScript library to help manage data in rich client web applications.  It’s especially useful in Enterprise and Line of Business (LOB) applications where users often query, save, and delete large amount of data.  Using the BreezeJS library is a joy to work with and feels like Entity Framework on the client.  BreezeJS provides:

  • Rich “LINQ like” Querying
  • Change Tracking
  • Entity Relationship Navigation
  • Client Caching
  • Validation
  • Offline Saving
  • Tight Integration with Web API and Entity Framework (neither are required)
  • Access to any RESTful API using custom metadata
  • Integration with JavaScript libraries/Frameworks like AnguarJS and KnockoutJS

 

In future posts I will expand on the entire feature set.  In this post, I’ll focus on the Rich “LINQ like” Querying.

LINQ like Querying

Advanced querying is probably the most compelling case for BreezeJS.  If you’re familiar with Entity Framework, querying in BreezeJS will feel quite intuitive.  With Breeze, you can easily write queries that filter, sort, page, project data, and even eager load relationships.… Read more

,