Gx Developer 8.86 17

0 views
Skip to first unread message
Message has been deleted

Beatris Ninh

unread,
Jul 14, 2024, 5:39:17 PM7/14/24
to quistaracle

One of my goals this year was to do a talk at a developer conference. I did a few talks at .NET Oxford last year, and wanted to take my public speaking a little bit further, and the fantastic Developer Developer Developer conferences gave the perfect opportunity! For those that haven't heard of these conferences - there are a number of them throughout the year at different locations. They're always free to attend, and always on a Saturday. This means that most of the attendees are there because they want to be there, not just because they've being sent and paid for by their work. I've been to a few now, and there's always a really great community vibe.

Gx Developer 8.86 17


Download File https://psfmi.com/2yM1Az



Last weekend was the DDD South West version, which is based in Bristol. I wrote a blog post from last years' DDDSW, which can be found here. When the submissions opened for this years DDDSW, I submitted my Developer Productivity talk which I'd done as a lightning talk last year at .NET Oxford. The lightning talk version was just 20 minutes, and there was a lot more I wanted to cover in the talk, so doing a full one-hour talk at DDDSW allowed me to add a lot more content that was missing in the shorter version. I had no idea if people were interested in a talk like this - and was obviously really chuffed when I got an email through saying that my talk had been voted for and accepted!

The talk went really well, and I received some fantastic feedback afterwards. There was also a feedback app for the day where attendees could rate both speaker knowledge and speaker skills, and also provide feedback. I received this feedback via email, and was really blown away by the comments! My speaker knowledge had been rated at 9.21, and my speaker skills at 8.86. The comments people wrote were insanely positive - really chuffed to bits with them! The email made my day!

The rest of this blog post will be about the talk itself - the topics I covered, and the tools I demoed and talked about. Note that some of the sections have been copied from a blog post I wrote last year after doing the much cut-down 20-minute lightning talk version last year at .NET Oxford. I decided to duplicate the content here so that this post includes everything from my full talk at the weekend, rather than the reader having to switch over to the other post and read first.

It always surprises me that if you take a room full of developers, the deviation between each developer's productivity level is huge. And I mean, seriously huge! A task that might take one developer half an hour, might take another developer an entire day - and the quality of the solution will also be wildly different too.

You might have a 20 year developer who has been working for the same company throughout - using the same technologies - hasn't the foggiest about the latest technologies - no idea about design patterns and best practices. No idea about writing maintainable, testable code. Never written a unit test in their life.

And you might have a 2 year developer, who actively studies every day - reads blog posts and books, listens to podcasts, watches Pluralsight, has side projects, dabbles with other technologies and programming languages.

I touched on this in my blog post about National Coding Week (see the 3rd question) "What advice would you give others wanting to get into coding?" So rather than repeating myself, I'm just going to quote my answer from that blog post ...

My biggest piece of advice would be to never stop learning! And also to actually embrace learning, as it's something that as a developer, you'll be ongoing doing a lot of. If you embrace it; actively study daily - read books, watch Pluralsight, listen to podcasts, read blog posts - then you'll very quickly put yourself ahead of the average developer.

I don't know the official term for it, but I think of it as incremental learning, where learning a little bit every day, over a long period of time, becomes huge. You could also think of it as compound learning because in the same way as with compound interest, where you earn interest on your interest, on your interest, on your interest - you also get the same concept with learning. The more you learn, the more underlying knowledge you have to build upon. So basically, the more you learn, the faster you learn, so the more you learn, so the faster you learn! This is a very powerful concept to appreciate and take advantage of.

You also learn and retain more by being motivated - so it's important to make sure you enjoy what you're doing and never get stuck in a rut. There are so many great technologies to play with - even if this is a side project or getting involved in an open source project - make sure you play and have fun with different technologies and programming languages. There's a lot of very cool stuff going on - especially nowadays.

As developers, we repeat ourselves a lot! More than we realise. And I don't mean as an industry - I mean individual developers repeat themselves a lot. How many times have you Googled the same problem multiple times; spent half an hour searching for the same Stackoverflow answer more than once; written code that does the same thing, more than once. It's a tremendous waste of time.

I personally use Workflowy for this. You can read a blog post I wrote about this here. But the tool you use isn't the point. The point is that you have a centralised place you can quickly store snippets and notes. It could be Workflowy, Evernote, OneNote, GitHub, even text files in Dropbox. It's the concept that matters, not the tooling.

I want to expand on the final "private / personal" bullet point. Your snippets / notes should be personal. Now, one might argue that you should share it, let others contribute. The problem with this is that everyone's minds work differently. One person will write and structure their notes completely differently than the next. So if multiple people are contributing, then you need to have some form of moderation and standards as it gets bigger. It also raises the barrier to entry. One of the hardest things about this is consistently contributing. Everything you do, ask yourself if it could be of use to your future self. If so, spend a couple of minutes adding it to your snippet repository. If multiple people are contributing, then you're even less likely to contribute as frequently.

Now, after saying that - please bear in mind that I'm talking about non-project specific snippets and notes. It's not company or project specific. However, if you work in a team, then it's very important to have internal development documentation. Ideally a wiki of some form. I've worked with quite a few teams that don't take time to document properly, and it's not good. Documentation is very important. If a key developer gets knocked down by a bus - the company shouldn't be screwed! I've recently written a full blog post about the importance of this. However, this is not what I'm talking about in this talk. I'm talking about your own personal snippets and notes which you can take with you from company to company, as well as side projects.

Obviously, the true benefit to this is when you start using your snippets and notes. I've had tasks before which have taken me an entire day to do the first time I've done it. And once in my snippet repository - I've done the same task next time in a fraction of the time. It's a massive time saving.

The next section of my talk, discussed tools and automation. As developers, everything we do revolves around tooling. From small tools like the clipboard, to massive tools like Visual Studio. We've all heard of both the clipboard, and Visual Studio. But there are plenty of other tools that can help us be more productive that are less common. Also, there is plenty of functionality even in those tools we already use that we probably don't use or even know exist. Think of all the functionality in Visual Studio that you don't use.

One example of a tool that I find a lot of .NET developers don't use, which every .NET developer should be using - is LINQPad. I've written quite a few blog posts on this, and also did a 20 minute lightning talk at .NET Oxford dedicated to this.

This is a fantastic tool with so many different use-cases. Rather than me detailing what it does in this post - I'd recommend checking out both their website, and my list of tips and tricks blog posts about it.

Resharper is a Visual Studio extension which literally saves me hours each week. I should point out that Jetbrains are a prize-draw sponsor of .NET Oxford - but my reason for talking about and praising Resharper are completely unrelated. I genuinely find it that useful.

I used my blog sourcecode project to demo Resharper. I created a new class and wrote a short bit of code. The main point I wanted to get across was how little typing I was doing, and how much I was leveraging Resharper to do a lot of the typing and scaffolding for me.

I then briefly pointed out a few other bits of Resharper's functionality, focusing on areas where I think developers who already use R#, perhaps don't know about. Some examples which spring to mind are Incoming Calls, the Stack Trace Explorer, pulling members up and down into base/derived classes, changing signatures, etc.

I'm a big fan of the CLI, and it always surprises me when I ask an audience who uses the CLI, how few hands go up. This talk was no exception - pretty much zero hands went up! This really took me by surprise at an event like this!

I mentioned earlier about the power of tools. Well, if you're not a command line user, then you're missing a large percentage of tooling that can make you more productive. I'm not saying the CLI is better than a GUI - what I'm saying is that there are GUI tools and there are CLI tools. If you don't use the CLI, you're missing out on a large percentage of tooling available to make you more productive. The right tool for the job and all that - well the CLI is the right tool for a surprising amount of jobs!

Unfortunately the stock Windows CLI is a bit rubbish. If you're a Windows user, I'd highly recommend taking a look at a tool called ConEmu. In this talk I demoed some of ConEmu's functionality - eg. tabs, split screen, saved layouts, etc. I also demoed how I take advantage of the split-screen saved layouts when developing locally with a .NET Core project I'm working on which has an API, Identity Server, and a web frontend. Having a console window in one monitor which has multiple split screens, tailing output logs for each service is really useful.

7fc3f7cf58
Reply all
Reply to author
Forward
0 new messages