Navigating Your Software Development Career

When I started my career as a developer I soon found that no one around me was going to cause me to grow.
I had to take ownership of my career and growth.

Navigating Your Software Development Career is an e-mail newsletter where I'll answer subscriber questions and offer advice around topics like...

  • What are the general stages of a software developer?
  • How do I know which stage I'm at? How do I get to the next stage?
  • What is a tech leader and how do I become one?

Blog Posts

James Hickey's 2018 In Review And Beyond

Taking note of your past year’s achievements is very helpful in motivating yourself and also having a clearer picture of whether certain activities you did or tried actually had the outcome you hoped for. For example:

  • Did the SEO tactics you made to your blog increase your blog’s traffic?
  • Did your resume overhaul cause any improvements to how often you get asked to interview?

Stuff like that.

I want to go over some of this past year and let you know what changes I made that really helped me out personally and professionally.

[Read More]

What Is .NET Core? (What Makes It So Special?)

With all the buzz around .NET Core I figured that I should tackle some of the fundamental issues that make .NET Core a gamechanger.

.NET Core really is the next generation of .NET development and I believe that it’s time for .NET developers everywhere to migrate!

[Read More]

What I've Learned So Far Building Coravel (Open Source .NET Core Tooling) - Part 1

One night, about 4 months ago, I had a couple hours of free-time. I was really enjoying the benefits of building apps with .NET Core. But I felt it was still missing all the “built-in” features that makes Laravel (PHP Framework) such a breeze to work with.

After all, I just want to build awesome apps and not tinker with the same old boilerplate stuff.

What if I just want to schedule my code to run once a week? I don’t want to configure Windows Task Scheduler. Or Cron. I just want to tell my code to schedule itself. Shouldn’t that be easy to do (like with Laravel)?

[Read More]

Keeping Your ADO Sql Connections Safe

What happens when you don’t close your .NET SqlConnections? Bad stuff. Bad stuff that will inevitably bring your IIS website crumbling down to ashes. Well… something like that. We all know that we should take extra care to always close our DB connections. Right?

But what happens when developers try to get fancy with their DB connections and focus more on being able to re-use open DB connections rather than being safe? Well, the consequences were bestowed upon me a few weeks ago.

Let me explain (briefly) what happened, what could happen to you, and a way to fix it - while maintaining the flexibility of re-using open DB connections and being able to safely use DB transactions from your C# code (using ADO).

[Read More]

C# Pattern Matching: Are The Official Docs Lying?

During my day job, I had a case where I needed to use some pattern matching to do some type checking. If you don’t know, pattern matching in C# allows you to test the type of an object and perform some additional “magic” at the same time. While having the chance to play around with this feature some questions arose from my usage.

[Read More]

Refactoring Legacy Monoliths – Part 4: Refactoring Tools

As a software developer it’s important to know what tools are available to you. Tedious and repetitive tasks or large “one-off” time-consuming tasks can often be automated by third-party tooling. And yes - sometimes it’s even worth purchasing some of these tools with your own money. Specifically, when refactoring, we should have some knowledge of what refactoring tools are available to us.

Continuing my “Refactoring Legacy Monoliths” series - I want to go over a few tools that I’ve found super helpful and worth investing in.

To make this blog post more useful than a list of products, I’ll go through some high-level steps that represent a way to tackle a refactoring project.

[Read More]

How I Made LINQ 6X Faster Using A Functional Optimization!

I really did make LINQ 6X faster! Even though the title is “click-bait-ish”… This was a little experiment to see if I could speed up LINQ queries by using the functional pipe technique. By “piping” LINQ queries, we can avoid the inherent issue with LINQ whereby each query will issue a whole iteration over the collection. This optimization allows us to issue the equivalent of one iteration and pass each element through the entire method chain.

[Read More]