Take a moment to think of your preferred way to learn a new language, framework, or skill. Most likely, there is a certain amount of value that you only get when learning by doing.
I had an interesting transition into development. I already knew a bit about how to code, but I had never had a programming job. At the time, I was working for a company where the dev department was willing to give me a chance, so they sent me an assignment. It was essentially a small file upload application, which I knew I could do.
The problem was that it had to be done in C#, and I had never used C# or .NET before. I had a few nights to finish, but that had to be juggled around my current job. I tried on my own, failed, looked up docs, tried again, and shortly got to the point where I was writing code and trying to figure out the actual problem. I spent time searching for the right way to structure a class, run a build, and package up a functional project. …
When was the last time that an insignificant detail sparked a movement in your brain? As a software engineer, I have a habit of focusing on the one tiny detail I have never seen before in a new block of code. At that point, the gears in my brain begin turning. I love these moments. The ones where the tiniest piece of trivia sends me down a rabbit-hole of discovery.
What did that look like the last time it came to you?
It recently happened to me as I was browsing Twitter. I came upon this exchange between David Fowler and Damian Edwards, discussing the .NET
Span<T> API. …
From within Visual Studio Go to View -> Task List. This will display the Task List window and show you any area of your open Solution that has existing comments that start with
// TODO. You can filter down to your Current Project, Current Document, or Open Documents. It even will allow you to search the list.
C# is a fantastic language because it constantly evolves in a way that simplifies syntax and makes the your code more expressive. Expression-bodied members were released in C# 6 and further enhanced in C# 7. At the time I was still a junior developer and had not yet decided that C# and .NET were going to be my long-term focus.
I am not going to say that this feature “sealed the deal” for me and .NET, but it’s definitely the feature I miss most when using any other language.
The simplest form is just to take any existing read-only property and condense it down. …
I love programming, but programming is hard and existing paradigms that inflexibly insist upon perfection do not make it easier. This is not to say that paradigms and patterns produce bad code, but certain statements from peers, thought leaders, and friends permeate the space in my head when attempting to solve problems.
I took these statements to heart. I over-analyzed, I created problems to solve where none had previously existed, I anticipated issues rather than solving the ones at hand. I think the goal I had was controlling complexity, but many times the complexity created just by by adhering to “best practices” grew out of control. We have a tendency to think of our classes as little gardens. We sprinkle design patterns throughout our code as if words like Decorator, Factory, and Flyweight because we want the satisfaction of seeing those words the next time we open the editor and not because they actually solved a problem. …