Habits

Habits

Backdrop:
I’m writing this post late in the third week of November, 2020. Over the last couple of months, COVID-19 case counts in the US have grown significantly. The experts have been warning that we might be in for a rough winter. Looking at the current case count data, that seems to be the direction we are heading.

Source: Screen capture of the data from the CDC link above as of 11/17/2020.

While the scientific community has some very promising vaccines on the way to help, realistically those are going to take time to arrive and meaningfully start to improve the situation. Until then, the only tools we really have are the behavioral changes we have all heard so much about these last few months (masks, social distancing etc.).

While I remain optimistic that long term we will beat COVID-19, I’m pretty pessimistic about our near term trajectory. For the last couple of weeks, my level of pessimism has been growing. Amid my pessimism, I’ve been thinking about what I could choose to focus my attention on instead. I really don’t want to spend this next season heavily focused on COVID-19. I want to make progress in my life despite COVID-19. So…

I’ve decided to work on improving my own habits.

A year or so ago, I read the book Atomic Habits by James Clear. It’s very well written. My knowledge around habit change certainly increased as a result of reading this book. However, at the time, I did not put what I learned into practice in my own life.

I’ve decided over this next season, I’m going to re-read and carefully study this book. Then, I’m going to work to implement some of the techniques the book explains to establish some better habits in my own life.

Image Source: https://jamesclear.com/atomic-habits

I’ve observed the power habits have in my life and the lives of others. Fortunately, over the years I have accumulated some good habits that have lead to good results in some areas of my life. However, I’ve also accumulated some poor habits in other areas that have lead to poor results over time.

During this next season, I want to develop habits that will help me become:

A better software developer.

Currently, I’m a competent I.T. Infrastructure Engineer, with a strong background in I.T. security. Over the last five years or so, I’ve started to write some infrastructure automation code with PowerShell and Python. I want to create and sustain some new habits that will help me take my current software development skills to the next level.

A physically healthy person.

Perhaps nowhere in my life do bad habits and the lack of good habits show up more than in my physical health. Currently, I’m overweight. I don’t get sufficient exercise and I’m not careful enough about what I eat and when. None of that is new. I’ve made progress in this area before through short term (1-3 months) bursts of highly focused effort. However, over time I’ve always slowly drifted back into poor eating and exercise habits, only to have the weight creep back on slowly over time. I want to turn that around and get my physical health headed back in a better direction.

What does success with habits look like?

Previously, when trying to change, I’ve focused on traditional goals associated with the outcomes I’ve wanted to achieve. Sometimes, that has worked quite well. However, in other cases it might have worked well short term, but it has ultimately failed to produce positive, sustained, long term results.

During this next season, I’m going to be paying more attention to habit changes I can initiate and sustain. If I am successful establishing even just a few new habits in each of the areas I am focusing on, the outcomes I’d like to see and ultimately the person I would like to become will follow.

How about you?

My hope is perhaps reading this might encourage you to also think about what you can do to continue to move your life forward in spite of COVID-19.

Hopefully by the spring of 2021, the worst of COVID-19 will be behind us. What are you doing to try to improve your life and the lives of those around you until then? If you are reading this on social media, I’d love for you to comment and share what you are doing.

P.S.

I realize I’m very privileged to even be in a position to think and write about this. While my career and business have certainly been impacted by COVID-19, the overall impact has been less severe than it has been for so many other people and businesses. I don’t in any way mean to minimize the suffering this horrible virus has caused so many. My goal is simply to share what I am doing to control what I can, and move my life forward as best I know how.

Learning to code: Week 4 – ASP.NET MVC view model basics

This week, I made limited progress learning to code.  I was out of town on a work project Sunday – Wednesday.  Since I got home, I’ve been slammed with catch up tasks.  However, I was able to read a few good resources while in the air or airports on MVC view models.  I wanted to link to them here for reference.

This next week, I hope to put these resources to good use for a potential enhancement to the MVC framework app Mr. Miyagi and I are working on.

More next week…

Learning to code: Week 3 – Scrum / ASP.NET Identity

This week, my learning to code progress was a bit scattered, but I did learn some great stuff.  Here are the highlights.

  1. I did a PluralSight class on Scrum (a widely used development methodology).  I previously had some exposure to Scrum through clients where I do infrastructure work and the developers practice scrum.  While this class did not help me better understand C# / MVC or anything code related, it did help me understand more about the business and process around creating software.  The stats and stories around software projects that go wrong (Google FBI Sentinel Project) were amazing.  I can already see some benefits of learning about Scrum.  More on that in a moment.
  2. I found a great site with connection strings while trying to move from a LocalDB database to SQL Express.
  3. I did a Microsoft Virtual Academy class on ASP.Net Authentication / Identity.  This was a great class.  Many thanks to Adam Tuliper (@AdamTuliper) and Jeremy Foster (@codefoster).  The work Microsoft has done building this is really great.  After all, nearly every app needs a way for users to login / reset passwords / have roles etc.  So, why should each developer re-invent that wheel — right?  Microsoft seems to have provided a lot of value here.Learning on my infrastructure and security background I did some quick research on how well this implementation does with password hashing.  Overall, the current version is reasonably solid, and can even be improved further.
  4. I demoed the app Mr. Miyagi and I have been working on to the client.  Again – mostly Mr. Miyagi (not his real name) working and mostly me watching on amazement.   The client was very pleased overall.  We’ve turned things over to them and they have started significant testing etc.During my demo, a new employee of the client we are building this for asked a great question that made me think back to the Scrum learning I did early in the week.  The application we created tracks some information on packages that come in to this client.During the spec process, we never considered adding an ability for the application to allow multiple similar packages to be received at the same time.  The new employee said something like “Hey -How do I add multiple similar packages at the same time?”.  I said “Uh, you can’t.  We did not think of that during our spec process.”  The client side guy we worked on during the spec process agreed.  The new person said “Man – that is going to take a long time when I get 30 of the same packages.”  He was exactly right.  So, I thought through this and said I did not think it would be hard to add.  I took some quick notes then came back to have a look at it.

    It looked simple enough, so I told the client I was sure it would only take a couple of hours to implement and test.  The client approved us tackling that project as a quick enhancement.

    I’m pleased to say I was able to quickly modify the view to take a quantity of packages integer, get that integer to pass to the controller and get the controller to loop through the package creation process over and over again all on my own.  Along the way I learned a few things.

    This is level 101 stuff here, so for any real developer this would not be anything to be excited about.  However, I was thrilled to have been able to quickly implement a seemingly small but valuable change for the client.  They were happy as well.  Total win – win.

    While doing all of this – I thought back to the scrum class.  If we had been doing this project more like Scrum suggests this small but useful feature might have come up earlier.  While realistically doing scrum on this project would have likely been overkill, this experience made me see the value of Scrum – especially with larger projects.

One more good week in the books!  Until next time…

Learning to code: Week 2 – Entity Framework

This week I spent some time learning more about EF (Entity Framework).   Entity Framework is an ORM (Object Relational Mapping) framework.  Mr. Miyagi has made significant use of this in the project we are working on together (mentioned in my previous posts).  Now I understand why better than I did earlier this week.  Essentially, Entity Framework removes the need to write lots of potentially tedious SQL statements to get data into and out of a relational database system.  EF is essentially a layer between the C# code and the SQL database.

The most helpful resource for learning about Entity Framework that I found this week was a PluralSight video series from Julie Lerman (@julielerman).  Julie is clearly an expert when it comes to Entity Framework.  Her video series got me to where I really understand how the C# code in the project with Mr. Miyagi is getting data into and out of our database.  That was a big help.  As an infrastructure guy, I like to understand exactly how something is working.  Julie’s videos really helped with that quite a bit.  I was able to see how C# using EF was turning requests in code into SQL queries.   So, overall it was a good week learning.

I’ve come to realize a few things this week.

#1 – Currently, the more I learn – the more I realize I need to learn about more things.  For example Entity Framework makes use of Linq Methods and Linq Query Syntax.  While I now have a good basic understanding of how Entity Framework works, I now also realize that in order for that to matter much, I need to become reasonably proficient at Linq as well.  I’m hopeful that soon this will settle down a bit and I can quit learning entirely new things and settle into learning about these things at a deeper level.  For now I am very much still in the “drinking from a fire hose mode”.

#2 – The body of knowledge required to be a productive developer is large.  Its increasingly clear that learning to code C# / MVC Framework (with all of its related parts / pieces) is going to continue to require some substantial work.  This is not something you tinker with for a couple of weeks and suddenly get great at.  I’m ok with this.  If I’m a reasonably productive developer by the end of 2016 – I’ll still be thrilled.

#3 – My existing background in I.T. infrastructure, while seemingly related has not been much help so far.  To an outsider, one might think “Ahh – David is good at infrastructure, I’m sure he will easily be able to pick up this code thing he is working on.”  The uninitiated might think the two are more closely related than they are.  Frankly, so far the large body of infrastructure knowledge I’ve built up through the years has been of very little help.  From what I can see so far, development is mostly a separate body of knowledge.

Previously, in my infrastructure work I’ve easily and quickly picked up what I will call complementary bodies of knowledge (virtualization / security / storage / cloud IaaS / etc).  These built on or complemented my existing infrastructure knowledge.  So, learning them by comparison was easier.  So far learning to write code has been different.  There simply is not nearly as much cross over. Infrastructure folks who want to learn to code – you have now been warned.

My hope is that in the future I will be able to leverage my infrastructure knowledge and my ability to write code in a way that takes advantage of both bodies of knowledge.

#4 – Higher developer productivity.  Mr. Miyagi said this to me before, but now I am starting to understand it at a different level.  The Microsoft .Net / Visual Studio world is designed with developer productivity as a high priority.  More and more I can see how that really is true.  EF alone removes what would otherwise be an awful lot of repetitive / boring work from the development workload.

Learning to code: Week 1

As I mentioned in my intro post I’ve decided to do a bit of a reset on my learning to code journey and focus on some of the basics.  To that end, early this week I found two great C# resources that have helped me make some real progress this week.

C# Basics

The first resource I used was: The C# Yellow Book written by Rob Miles (@robmiles). Apparently, this book is “used by the Department of Computer Science in the University of Hull as the basis of the First Year programming course.”

yellow-book-cover

This book is exactly what I needed.  I downloaded this on Monday and I have been consuming it all week.  It really helped cement my understanding of some of the important C# basics. Honestly, it also got into a few things that I’m currently still a bit fuzzy on.  I will probably try to get back into those sections again in the days ahead.

If you happen to be following along and you want to learn to code C#, I think this might be a great place for you to start.

MVC Basics

The second resource I found this week is this Intro to ASP.NET MVC video series from Microsoft Virtual Academy.  This series was recorded live by Jon Galloway (@jongalloway) and Christoperher Harrison (@geektrainer).  These guys walk through some of the basics on MVC framework.  I’m only about 50% finished with this, but so far it has been very helpful and taught me some of the MVC framework fundamentals.

So far they have mentioned three additional resources in particular that I’ll certainly be checking into further.

  • http://sidewaffle.com/
    Described by the site as: The SideWaffle extension adds a bunch of useful Snippets, Project- and Item Templates to Visual Studio. The purpose is to make your daily work in Visual Studio a richer and more productive experience.
  • http://vswebessentials.com/
    Described by the site as: Web Essentials extends Visual Studio with a lot of new features that web developers have been missing for many years.  If you ever write CSS, HTML, JavaScript, TypeScript, CoffeeScript or LESS, then you will find many useful features that make your life as a developer easier.
  • https://zencoding.codeplex.com/
    Described by the site as: Zen Coding is a Visual Studio plugin for a fast writing HTML (using CSS-like selector syntax) and CSS (using short versions of CSS properties).
    Web developers Sergey Chikuyonok and Vadim Makeev have built a set of plugins called ‘zen-coding’ that works across a range of IDE’s.

Summary:  This week, I made some good initial progress toward my goal of becoming proficient at C# / MVC framework development using Visual Studio.  I still have an enormously long way to go.  However, I feel like this week I actually started to build a small but sturdy foundation that I can build further on going forward.

Intro: Learning C# / MVC framework / Visual Studio

Each year I like to set some new goals for myself.  One of my goals for 2016 is to learn to code. I’d like to learn to be proficient in C# specifically with MVC framework.  I’ve decided to blog about my progress towards this goal.  My hope is that perhaps some of you will find some value in what I post along the way that might help you if you too are interested in learning to code.

For those of you who know me, you may know that learning to code is something I’ve been tinkering with on and off for a while.  From time to time I do some scripting (.bat files / PowerShell / Azure PowerShell etc) in my role as an I.T. Infrastructure Engineer.  A few years ago I played with Python for a bit…then I lost my mind and took a run at Objective-C for iOS. Last year, I decided I wanted to learn C#.

Initially, I took a look at some of the boot camp style programs that teach C#.  I actually live very near what appears to be a very good one.  However, I’m simply not at a place in life where I can dedicate myself fully to this.  So, the boot camp method is not currently a viable option for me. If it is for you, I’d suggest you strongly consider doing that.  I have no doubt that being immersed fully in learning would be a superior way to learn.  However, for me that just is not currently feasible.  So, my plan is to learn to code primarily through self paced resources such as books, videos etc.

Most recently (Q4 2015) I’ve been working on a C# MVC web app with a good friend of mine. For now, we will refer to him as Mr. Miyagi.  Mr. Miyagi agreed to take on a C# MVC web app project with me in order to help me learn.  I’m doing most of the project management / client communications / specs / qa etc and he is writing nearly all of the code.  He has been kind enough to let me watch and explain what he is doing while he codes.  This has been very helpful. He is a very experienced .Net developer, so just getting the chance to watch him work has taught me some good stuff for sure.  While watching him code much of what he is doing / explaining makes sense.  However, when I try to write code on my own,  I am currently as lost as a ball in tall weeds.  I’ve come to the conclusion that trying to operate at his level at my level of experience is essentially folly.

So, my 2016 goal to learn to code serves also as a bit of a reset for me.  I’m going to start from the ground up.  I’m going to learn the basics well and build on them until I can code proficiently at a higher level.

Currently, my plan is to post a weekly update on what I have learned and the resources I used to learn it.  If you are interested, feel free to follow along.