Visual Studio Code

Anyone who knows me knows well that I am not a huge Microsoft fan. I’ve been a Unix user for over 20 years, I’ve been using Linux for nearly as long, and my current laptop is a Mac. I prefer Google Docs to Microsoft office, I never run Internet Explorer (Or Edge), I don’t like IIS, and I would never run SQL Server. So, it comes as a shock to most of my tech friends that I am a huge fan of Visual Studio Code. In fact, I would have to say that it’s probably one of the best general purpose development environments ever created. What makes it so great that I, a Unix user would endorse it? I think there are two main factors that made me fall in love with Visual Studio Code. First, it’s cross platform – Visual Studio Code runs on Windows, Mac, and Linux. This is a big deal for me. I prefer tools that I can run on a variety of platforms. While I typically work on a Mac, I do have a Windows machine too. Having an environment that runs on both means that I can easily transition from one machine to another without having to adopt different tools. Second, and probably even more important, is the wide variety of plugins available. Whether you need to create or edit HTML, C# .NET applications, JavaScript, Python, XML, there’s a plugin available for you. There are also plugins for Docker, git, and a REST client. Furthermore, the IDE is pretty simple and easy to work with. Where I used to use text editors such as UltraEdit or TextWrangler, I have now come to rely on Visual Studio Code as my default choice for editing code when I don’t have a more specific IDE installed. Kudos to Microsoft for a creating such an amazing cross-platform code editor!

Why Custom Software Development?

Development

At a recent chamber of commerce meeting, a fellow member asked me what my company does. I replied that I create custom software solutions for businesses. He was incredulous that people actually paid for custom software. Sadly, this wasn’t a small business that might struggle to see the benefit of custom software — this was a large, well-established local business. Exactly the kind of customer that has much to gain from custom software development. But what do businesses stand to gain from custom software development? First and foremost, custom software allows the organization to have tailor-made solutions to their problems. Software is not a one-size-fits-all solution. The application that works great for a small business may not be flexible enough for a large business. Conversely, an application that works great for a large business may be needlessly complex for a smaller business. Even more importantly, off-the-shelf solutions don’t take into account the things that make a business unique. After all, doesn’t every business have something that makes them special? Maybe your organization makes custom products — how do you quote the product? Maybe your organization is an innovator in your market space — how do you implement process to aid in that innovation? Whatever it may be, your company is like no other — and custom software solutions can aid you in exploiting the things that set you apart from the competition. Second, off-the-shelf software may be updated or changed in the future in ways that break functionality you depend on. Remember the last time you updated Windows? Did everything go smoothly? Off-the-shelf software is the same thing — maybe it works great, maybe not. But as a business, is that a risk you’re willing to take? Custom software can mitigate that risk since you — the customer — are in control of any new features in the application. Furthermore, you can have the software modified to ensure compliance with new laws, new processes, or new requirements of any kind. Try having off-the-shelf software updated to meet your new requirements. Third, custom software can be written to integrate with your other systems. Integration of systems can ensure that data is not required to be entered multiple times, it can enable faster processing of information, and it can greatly improve operational efficiency. Custom software can be written to read inventory from your existing inventory control system, update employee data in your employee management systems, integrate with your customer management systems, or interface with any other systems your company depends on. Off-the-shelf software simply can’t compete with that. Fourth, custom software can be supported by the developers who wrote it — developers you have interfaced with, developers who understand your business and what makes it unique. Off-the-shelf support may or (more likely) may not meet your needs as an organization. Late on a Friday night, do you want to call a foreign call center for your software and hope someone can help or would you rather call the local software company and have them stop by tonight to diagnose and solve the problem?

As a software engineer for nearly 20 years, I can site countless samples of work I’ve done that has improved an organizations revenue, improved workflows, aided in reporting data to senior management, and ultimately aided the organization in increasing market share. And isn’t that exactly what businesses want? To increase market share? Why a company would not want custom software is a better question!

Developer Certification

The IT world is full of certifications. When I started in the tech world, CompTIA’s A+ certification was the standard for computer techs and the Microsoft’s MCSE certification showed you were a master of the Windows system admin world. Today, the IT world has numerous certifications available to indicate proficiency in networking, system administration, hardware, security, application proficiency, and so forth. The world also has numerous programming certifications now too. Two of the more well known certifications include Microsoft’s MCSD and Oracle’s Java certifications. But are they as useful A+, MCSE, CEH, or other certifications? I personally don’t think so. In all my days as a software engineer I have never once interviewed a single developer who had any programming certification. I have never had a fellow developer tell me about passing the newest version of a developer certification. I have never been asked by anyone if I’m certified in a programming language. It has literally never once mattered. In the past, I had considered seeking certification as a Java developer. Then I saw the sample test questions. My first thought? If I ever saw this kind of code in real life I would do everything in my power to ensure that the author was immediately fired. The questions test your ability to remember esoteric language rules — not things I want to ever see used in production systems. Many of the questions ask “what is the output of the below code” and provide a code snippet. If you have to ask what the output of a complex code fragment is, you probably wrote it poorly. If I really needed to know, I’d copy the code and run it. None of this is really of any value. So, your brain is a human code compiler — that’s great. But the real questions remain unanswered — do you understand design patterns? Can you decompose complex problems in to proper object models? Can you write maintainable code? Do you have good coding style? Do you document your code? Do you understand networks and databases? When I interview a developer, these are the questions I need answered — not what the output of a horribly convoluted nested loop is.

Social Media?

Friends

This past week, I vacationed with my family in Disney World. It’s a favorite vacation spot for my family. While I was there, I constantly saw people looking at Facebook, Instagram, and other social media forums. The problem? They were completely ignoring the very people they were vacationing with. I assume most people go on vacation with their family or friends because they enjoy spending time with them. Sadly, that was not demonstrated by the people I saw. In one example, I saw a couple both looking at Facebook while their young children pleaded to be lifted up so they could ring the bell that was just overhead. Their parents never heard them. The children tried lifting each other up to no avail. Then, the line moved forward and the opportunity was lost. Over and over again, while at dinner or in line for a ride, I saw entire families too interested in what people they barely know were doing to pay attention to the people they love. I once heard it said that social media should be renamed anti-social media. Sadly, I agree. All to often our social media habits actually prevent us from engaging in real social behavior and instead we focus on a virtual world – a highly curated reality where everyone’s life is picture perfect and utterly fake. We take selfies to show everyone our life is awesome too. Yet, the reality is, it’s all hollow and meaningless. While we’re trying to impress someone we knew in high school, the people we actually love are sitting on the sidelines of our life. Shut off the phone — spend actual time with the people that matter instead of wasting your watching what everyone else is doing.