Software startups today use a plethora of project management tools, and not all of them are created equal. Regardless of which one has the most bells and whistles, the shiniest marketing site, or employs the most rabid of sales representatives and evangelists, there is one value that I hold in higher regard than any other: longevity.
In any STEM discipline, a core part of an engineer’s daily work is to run sanity checks. As per that old adage, “A good programmer is one who looks both ways before crossing a one-way street.” Sanity checks are rendered somewhat less sane when a single point of truth can’t be established.
Programming and coding isn’t just for the men in this world, women also have the chance and the right to learn to code as well if they want to. So where can girls learn to code online without having to take the time to visit their local university? This expert guide will give you the sites needed for where you can learn and master coding online and also some offline places in the US. Let’s get started.
AN ARGUMENT FOR DYNAMIC TYPING is that by not enforcing the types of a function’s parameters, the function becomes more generalized, and thus more flexible and reusable. I argue that this flexibility versus automatically-verifiable correctness of the system is not a trade-off we need to make.
This post is in part inspired by Why Dynamic Typing Is Useful by Gary Bernhardt. I’ll concede that his post is published 10 years prior, so I’ve had plenty of time to build a counter-argument.
OK, that’s a provocative title to get your attention. This post is really about how one can move to a more functional programming style and remove the need for much of the apparatus of object-oriented programming, including interfaces and classes. In this post, I’m going to take some typical object-oriented C# code and refactor it in a more functional style. I’ll show that the result is more concise and easier to test.
Over the past couple of years I’ve noticed that my C# coding style has changed drastically under the influence of functional programming. Gone are interfaces and instance classes to be replaced by static methods, higher-order functions and closures. It’s somewhat ironic since I spent many years as a cheerleader for object-oriented programming and I considered static methods a code smell.
I guess if I look at my programming career, it has the following progression:
Procedural –> Object-Oriented –> Functional
The OO phase now looks like something of a detour.
C# has all the essential features you need for functional programming – higher-order functions, closures, lambda expressions – that allow you to entirely ditch the OO programming model. This results in more concise, readable and maintainable code. It also has a huge impact on unit testing, allowing one to do away with complex mocking frameworks, and write far simpler tests.