software development

The Patterns Emerge

There are a number of patterns that reveal themselves to us daily. The sun rising and setting; the moon exposing itself to the tides below. There is a variance of change depending on the time of the year, month or day. Over time you if you keep track of it; the pattern will emerge. The same truth is applied to software development; over time if you keep track of the changes (success or failure) the pattern will emerge. Continue reading

Development, software development, tips

Self-Testing Development

Testing is a hard part of software development. One of the hardest aspects of development is testing code/features that you have created. It is easy to put the blinders up and write to the spec. Insider knowledge of the system probably plays a role in this difficulty. Seeing a system through user eyes is nearly impossible, but to get close you need to decouple yourself from the code.

Continue reading

code reviews, Git, Pull Request, software development, TFS

TFS, Git, Pull Requests and Code Reviews

“Change is the only constant in life.” – Heraclitus

I have been using Team Foundation Server for a few years now in my day job.  Side jobs have also used TFS from time to time.  Leveraging GIT and the pull requests to control code reviews has definitely improved my code and the code of my fellow developers.

Communication is hard.  Developing software is hard.  Communicating and developing software is harder.

Continue reading


“Requirements rarely lie on the surface.  Normally, they’re buried deep beneath layers of assumptions, misconceptions, and politics.”

The Pragmatic Programmer: From Journeyman to Master
By Andrew Hunt, David Thomas

remote work, software development, tips

The Beauty and Power of Remote Work

I am not a 100% remote worker but all my remote software development consulting is 100% – remote.  Communication is the key to having a good relationship with a client and having great results. If you can only send a message saying that you will look at something it is better than silence.  Communicating with yourself about realistic deadlines will help yourself mange your schedule helping to prevent burn-out.  Remote software development is a combination of the beauty and power of its discipline.

The beauty of remote work is the comfort of remote work: to be able to relax at home (or out-and-about) and get a few hours of work in is a great feeling.  I also like to visit various coffee shops, public libraries, or other places of free WiFi.  Being stuck in an office all the time can become a drag and hurt productivity. It has been in my experience that the developers typically draw the short straw for a nice office space or cube.  Keeping a fresh and interesting environment will help keep a developer happy!

The power of remote work is simple; work when you want to. I can honestly say that a lot of my best ideas usually happen somewhere unexpected.  I feel software development is a form of art and those ideas sometimes hit you when you are driving, taking a shower, sleeping, and not something that is entirely enforceable.  There are times when you have to make quick decisions, but when you can take the time to think and analyze the situation – it will be a far better solution.  There are deadlines to be maintained – there is a balance between those two forces.  It is powerful and stressful to maintain your own work schedule and deadlines, but it is also liberating.

Where are we now?
Where are we going?

I believe in the next 50 years or so the prominence of remote work will only grow. We will look back on this time and have a hard time grasping the concept… so… we drove everywhere and wasted time on commuting when you had the ability to work from home???

It is early in the remote work game… we’ve come a long way and we have a long way to go. It’s adoption has often been met with fear and reluctance unfortunately.

Tips for Remote Software Development

  • Log your time worked in software that will bill your client is great
  • Log your time immediately after working or you will forget see above
  • Track the tasks you are assigned see above
  • Write great comments and keep a change log
  • Clear, concise
  • Link to tasks, if possible, the TFS address, SifterApp, etc
  • Don’t be afraid to say NO don’t over commit
  • Invoice monthly or a frequency and stick to it – Sometimes the client determines this
  • Manage Burn-out be honest with yourself it is a real thing

Sane Database Warehousing

Database warehousing is a critical tool in the skill set of a developer. The ability to take normalized data and store it in a non-normalized dataset can increase loading times, reduce calculations and generate a large ROI. Large datasets will benefit dramatically from a warehouse of commonly/frequently accessed data facts.


Extract, Transform, Load ETL is the process to take normalized (usually) data into a faster data access view or tallied (summated) data view. In the Microsoft world there are a few ways to achieve this goal. T-SQL as a scheduled job can easy handle the simple data tasks. SQL Server Integration Services SSIS is also a great tool for connecting SQL Servers and diverse data systems together. SSIS is great when working with systems that are not SQL Server based. Which one is better? It depends on the need and the application.

Simple T-SQL Warehousing

Using SQL 2005 or later allows the using of the pivot command when querying data. Pivot Tables can simplify a lot of reporting and calculations (which take time). A very simple example of would be the following SQL Statement:

-- Example Table
CREATE TABLE [dbo].[employee_items](
[id] [int] IDENTITY(1,1) NOT NULL,
[employee_id] [int] NOT NULL,
[item] [varchar](10) NOT NULL,
[count] [int] NOT NULL,
[id] ASC

-- Pivoted Data
SELECT Employee_id, [100], [200], [300]
INTO employee_items_warehouse
SELECT employee_id, item, count
FROM Employee_items) AS SourceTable
FOR item IN ([100], [200], [300])
) AS PivotTable

This is not the perfect example but should give you an idea of what you can do to manipulate the data to create a warehouse. You wouldn’t want to simply do an insert every time you run the process; you would want to do updates / inserts to get the best result. The data velocity (how fast the data changes) or the need of the data updating of the pivot table data can be changed would have an effect on the process itself.

SQL Server Integration Services

SSIS is much more than Pivot (though it can pivot data easily) and is great for combining data from multiple system into one data warehouse. The catch with SSIS and SQL Server is the versions of Business Intelligence Development Studio BIDS must match the SQL Server the SSIS Package is running on. A SSIS Package for SQL Server 2005 must be created in BIDS 2005. SQL Server 2008 must be created in BIDS 2008 and so on.

The amount of tasks/data manipulated/script tasks you can do in SSIS is quite staggering. I only wanted to mention SSIS since in today’s data warehousing world it is one of the best tools on the market.

I will dive more deeply into the world of SSIS in a later post.