Author: Thomas Gerlach

Today, social media is increasingly being used as a tool for marketing and advertising. However, if done poorly, you run the risk of tarnishing your brand and being viewed as a spammer. Here are a few simple etiquette rules for social media.

Avoid Follow/Unfollow

Today, I was notified that I had a new follower on Instagram. After seeing that it was a local business, I decided to follow back. Trying to develop relationships with local businesses is an important aspect of my social media efforts. It wasn’t until a few hours later that I had an opportunity to visit their Instagram page. But when I did, I noticed that they had already unfollowed me. They had no actual interest in my content or in developing a relationship – they simply wanted to show me their products. This isn’t much different from spamming and does not present a positive view of your organization.

Create Content Not Advertisements

People are unlikely to follow you on social media to see what you have on sale this week. People want to see your personality, what your business stands for, and who you are. Of course, all businesses will occasionally create content that advertises their goods and services, but if that’s all you do, expect to be unfollowed. Social media is for growing communities – not a new tool to spam me with ads.

Stop Nagging Me About Services

On LinkedIn, in particular, this is common. Someone friends you and – wanting to grow your own circle of connections – you accept. Then, you get a private message about the services they offer. Viewing it for what it is – spam – you ignore the message. A week later, another message. Then a month later, a message asking if you got the previous message. Yes, I got them all. I chose to ignore them because I wasn’t interested in your product at this time. Additionally, I now am distrustful of you as I see you too are a spammer.

Like/Know/Trust

Want to develop your social media the right way? Use the like/know/trust model. First, users like you. They see your posts, enjoy your photos, laugh at your jokes. After a while, users feel that they know you. The’ve seen your stuff, they know what you stand for, and they feel that they understand you and your company. Finally, users trust you. They have seen you in action and know you’re knot a spammer. They recognize that you provide valuable content they want. They know you’re someone they could reach out to if they need your services. That’s the formula for success. You develop community and relationships, and people see you as a valuable asset instead of a spammer.

Do Unto Others

The golden rule applies to social media just as it does anywhere else. When you’re engaging in social media efforts, ask yourself how you would view another business if they used the same tactics. If it’s not favorable, don’t do it.

During the past year, it has become increasingly obvious to me that many people don’t understand Return on Investment (ROI). Looking back, I realize this was not something I learned about until a businessman explained it to me. At its simplest, return on investment is exactly what it sounds like – the amount of return that an organization receives on their investment. However, this will be viewed differently based on the type of organization an individual works for – government, non-profit, or for profit entity.

Government Organizations

Government is the simplest to define as they have no ROI nor are they interested in ROI. This is not intended to be cynical, it’s just true. Regardless of your political affiliation, you can point to government programs that are riddled with waste. Why? Because government entities are not required to prove their programs work. We, the taxpayers, are forced to pay taxes regardless of the success of the programs we are asked to support. Deep inside, this is how we all want to work – we don’t really want management to access the value we bring to an organization, we simply want to be paid more.

Non-Profit Organizations

Non-profit organizations are a little more focused on ROI. However, their definition is far less stringent than a for-profit organization. For the non-profit, ROI is simply the appearance of value. Since non-profit organizations receive donations from individuals and entities, they only need to convince donors that their programs work. Even if they don’t, many will still give money to support the cause even when there is no ROI. Just like broken government programs, we can all point to non-profit organizations that continue to operate even though they are having no positive impact on the mission they support.

For Profit Organizations

Finally, we have for-profit organizations. In these organizations, everything is measured based on cost and benefits. ROI is simply the value something generates beyond the cost. This is absolutely critical for corporations. If money is continually invested in ways that generate less revenue than they cost, the business will quickly go bankrupt. If you want something, present your request based on the return on investment. Feelings and preferences have no place here. Can you directly tie your request to a financial reward? If not, don’t bother asking!

Why should you care?

The type of organization you work for will determine the ROI model used. Understanding that model will help you know how to argue for a raise, get a new computer, purchase additional tools, etc. If you work for a for-profit organization, decisions will be guided by how much money the business will get back from what they spent. If you can argue that your suggestion will yield more than it costs, you will be far more likely to see your request granted. However, if you argue based on your preference or feelings, you will likely find that your request is denied. Likewise, arguing that you bring substantially more to the organization than you are paid is the single best way to argue for a raise.

Today, it’s becoming increasingly popular for programers to be ‘opinionated’. In the software world, to be ‘opinionated’ means to believe your way is the right way. Other ways are wrong, and your way is right. There’s nothing wrong with having a preference, but the truth is that there is little room for opinion in software engineering. Software projects need to meet requirements such as budget, programmers available for maintenance, stability, etc. Championing a new language or framework may be fun, but when you leave, are there other developers available to support the project? Even if your preferred framework is better, it’s of no concern to a client when the language dies for lack of users and they have to pay to have the application rewritten.

A computer science student I know is all about Julia. Honestly, I’ve never met a single Julia developer or even seen a line of code in that language. On the list of popular languages, it’s not even a blip on the radar. However, this student insists that Julia is the way of the future. I’m not sure where he’s hoping to find work, but it won’t be in the local area. I remember the same thing when Scala came out. Every video I saw spent half their time attacking Java development. As above, I know absolutely no projects written Scala nor do I know any local companies either using it or planning to.

How should we select frameworks and languages?

The answer is actually pretty simple. Commercial software development has one purpose – to support some business use case. As such, frameworks must be chosen to support commercial business. What things make a language or framework commercially viable? It should be stable, have tools available to support commercial usage, and be widely used such that new developers can easily be found in the future. Additionally, it should have adequate resources available to help when you get stuck.

Commercial application development is no place for experimenting with new frameworks or basing your decision on an opinion about what is better. Find commercially viable frameworks and save yourself the hassle of supporting your new framework that may be dead in a year. A programmer’s purpose it to write commercially viable software – period.

Throughout all my time in the workplace, I’ve heard employees at various levels complain about management. Workers always want to blame management for all the problems that end up derailing a project. Or, as a business owner, I hear other business owners complain about how poorly their projects are going with their clients. This is the status quo. Blame management and stay in your safe space without working to fix the problem. Or, maybe you’re on the other side of the equation… maybe you’re a manager or a business owner complaining about how the resources working on your project aren’t accomplishing the goals you had established for the project.

I don’t think the problem is management, or workers, or other businesses. I think the problem is much simpler… poor communication. I know this is true in my business. Some clients are eager to communicate with me. We have weekly meetings, discuss progress, determine if direction should be changed to better meet organization objectives, and spend a little time developing our professional relationships. Other clients simply can’t be bothered. Their schedules are too busy for even a weekly phone call. Which projects do you think go smoother?

Maybe you disagree. Maybe you think that resources should focus on accomplishing the mission assigned to them. Maybe you don’t want to spend time communicating with them. What impact does that have? When dealing with software projects, lack of communication can be catastrophic. You may tell explain a new feature to me, but I may misinterpret your request. Or, maybe your request wasn’t actually what you needed but I delivered exactly what you asked for. In either instance, both time and money has been wasted to move in the wrong direction.

Fortunately, the solution really is simple. Schedule time to communicate with the people on your team – both internal and external, senior and subordinate. Ensure that everyone understands the objectives of the project and provide frequent feedback as the project moves forward. Listen to questions and concerns and work with them to find a solution that best resolves any issues. If you want to achieve the most from any project, this is a necessity. If not, you’ll still be complaining about the same things next year.

Anybody who’s ever worked for any business knows that Windows PCs are the norm. Sure, there are always a few Macs to be found in the marketing department or with people who work with graphics, but the bulk of business computers are PCs. It’s easy to point out reasons why that’s the case. For instance, PCs are substantially cheaper than Macs (although many Mac users would be quick to point out that you get what you pay for). But one of the bigger problems I see is how incredibly business hostile Macs are. Let me give you a some examples of problems I have with one of my clients. Like most organizations, they are predominately Windows. However, they have a few Macs that are used exclusively for multimedia. And they work great – until it’s time to upgrade the OS. You can’t upgrade a Mac without an AppleID. Of course, the customer has no real reason to setup an account with an AppleID, but you have no choice. As several different people use the computer, nobody is going to use their AppleID for the machine and since all users need to share documents, settings, etc, multiple accounts are out of the question. Now, that leaves only one option – creating a bogus AppleID just to upgrade the computer. And, as Apple demands a phone number to setup for Two Step Authentication, some user will need to be the primary point-of-contact for any issues that require authenticating by that AppleID. Not to mention that information must be fabricated for the imaginary user and logged somewhere – including answers to security questions that make no sense in that instance. This is all easy compared to the fun of trying to create a developer account for a business. Not only do you have to go through all the above hassle, you also need to setup an Apple device for Two Factor Authentication. Sending a message to a phone number isn’t enough, you must have an apple device connected to the account. None of this was a big deal until recently – when Apple said that the person responsible for an apps content must have their own AppleID. Previously, someone else – with an AppleID took care of everything. Now, we have to find another Apple device to setup for their 2FA. For a client who is already Mac-shy, this does nothing but confirm their PC bias.

My message to Apple: Find a better way. You may do a great job with individuals, but your policies are a disaster in the business world.

My first job as a computer programmer was for a small software company. Our tech department consisted of only a handful of people. I functioned as developer, QA, tech support, and network administrator. When I left, we had three programmers. As the person with the most time in the organization, I had the title ‘Senior Developer’. At the time, it sounded great. However, it would be more than a decade before I would have another title suggesting my status as a more senior level engineer.

During the last few months, it has become apparent to me that title inflation has really gotten out of hand. I read an article last week that Javascript Developers want to be called UX Engineers instead. The bulk of programmers are not great at interface design – developers use logic, interface designers use feeling. It’s a left brain/right brain thing, and few people are actually great at both.

Likewise, everyone wants to be a Full Stack Engineer today. Sure, plenty of people can do all parts of a project – from the HTML frontend to the backend and the database. However, very few are actually experts at all of the above. Most Full Stack Engineers are really just jack-of-all-trade sorts who have not mastered any particular part of the process.

I see even more title inflation when I look at small business owners. Everyone is a Founder or CEO – yet few, if any, of them have employees or revenue to command such a lofty title. Or better yet, people claiming the title Director of some department or another yet having nobody underneath them. You’re only fooling yourself.

What have I learned from all this? Titles are meaningless. What really matters is what a person has accomplished. If you had to prove to someone that your title was appropriate, could you do so? On your resume, can you provide several bullet points to validate your title? If you cannot, you will be disappointed when the next organization you work for gives you a title inline with your actual skills.

Most people with any type of investment account are concerned with the kind of growth their investment will achieve. News sources provide up-to-the-minute stock updates. Talking heads on cable news talk about the likelihood of a recession. All around us, people are concerned with investments. But what most people ignore is investments in themselves. Beyond college, few people pursue any further education or training to advance themself. People want to achieve more, but few will put in the effort to make it happen.

Businesses are often the same. Recently, I spoke with a potential customer about an app for their business. The customer indicated that they were very concerned about losing business to a big-name competitor. They wanted to be able to more effectively compete with the giant in the industry. When I asked what their budget was, they indicated that they had $250. I could tell similar stories about other businesses too.

Are you making investments in your future? Today we have more options than ever to better ourselves. Innumerable websites offer online training, books on any topic can be found to hone your skills, and online groups and forums abound for connecting with others. Are you exploiting those opportunities?

In the end, whether it is our personal life or our business, we must be willing to invest time and money if we wish to see growth. Otherwise, we will constantly be at the bottom of the totem pole wondering why we can never get ahead.

In December, I participated in the MLH Local Hack Day. Hack Day is an opportunity for tech nerds of various disciplines to get together and collaborate on projects or to simply attend lectures presented by various people and organizations.

During Hack Day, I was invited to speak to the students of our local tech school – South Hills School of Business and Technology – about my experiences as a programmer and an entrepreneur. One of the topics of my presentation was advice for aspiring developers. Below is some of the advice I gave.

Never stop learning. The people who get ahead in life are those who are educated. They read daily. They are always learning the skills needed for tomorrow’s workplace. Those who are left behind – particularly in tech – are those who have antiquated skills.

Shut the TV off. At the end of your life, you will never look back and say “I wish I had watched more television”. TV can provide entertainment, but it will never help us achieve our goals. In fact, TV will derail our goals and dreams by preventing us from acting to achieve them.

Learn Linux. It’s sad the number of techies out there that don’t know their way around a Linux server. Given the number of things that run Linux such as Android, Docker, AWS, and Google Cloud; knowledge of Linux is crucial to your tech career. If you’re stuck in a Windows-only world, it’s time to diversify!

Master JavaScript. Like it or not, JavaScript is becoming the dominant language of development. Not only is JavaScript the defacto language of the web, it is increasingly being used for server side development (Node), build automation (Grunt), robotics (Johnny5), and has become the standard language for passing data between systems (JSON).

Master Web Development. Along with the growth of JavaScript, web technologies are exploding too. Cordova and Ionic allow web technologies to be used to create mobile applications and Electron allows JavaScript to be used for cross-platform desktop applications.

Write Code Daily. A weight lifter gets stronger by lifting weights. A runner gets faster by running. A coder gets better by coding. Reading books is great, watching videos is cool too. But if you want to write better code, get in the habit of writing code every day.

This is just a short list of the advice I provided. Nonetheless, it’s a pretty solid checklist to start down the path to becoming an expert software engineer.

Throughout my life, I have observed that there are two types of people out there – those who aspire to excellence and those who are content to get by. This extends to businesses as well. For example, consider Chick-fil-a. Just like McDonald’s or Burger King, Chick-fil-a is a fast food joint. But unlike their competitors, it’s apparent that Chick-fil-a aspires to be something more. You see it in the quality of their staff and the quality of their food. As far as fast food goes, Chick-fil-a is the gold standard of excellence in all that they do.

Unfortunately, there are too few businesses out there striving for excellence. Companies try to cut corners, find the cheapest bidder, outsource their call centers to people who struggle to speak English, or engage in other practices that show anything but excellence. These companies try to gain our confidence but they never will. We may use their products and services, but only when we’re looking for a cheap solution. Indeed, these companies have turned their products and services into commodities differentiated by nothing but cost.

When people look at the goods and services your company offers, what do they see? Are you an organization demonstrating excellence in all you do, or a another in a long list of organizations content to push the mediocre?

We all want to make money. While we know that “money can’t buy happiness”, it’s a whole lot harder to be happy when you are struggling to get by. So, how do we make money? As a business owner, I have been forced to think about how money is earned – not only by me but by those in my organization. I concluded these are current three ways that money is generated within my small business.

Perform Billable Work. The first and simplest way to make money is simply to perform work that will be paid for by someone else. In the software industry, this means writing code. In other businesses, it means performing the work that defines the function of the organization. This is the most visible way to generate revenue. These are also the easiest to consider hiring as their efforts directly generate revenue.

Bring In New Customers. Organizations can only grow and thrive if new customers are coming onboard. The best software staff in the world can’t work if there’s no work to be done. While bringing in new customers doesn’t necessarily generate revenue, it fills the pipeline of billable work that is needed to keep a business moving forward. As these staff members don’t directly generate revenue, they are more appropriate to hire based on commission.

Free Up Time of Others. The third way to generate revenue within an organization is to enable others to accomplish their mission unimpeded. Secretaries, assistants, human resources, accounting, are examples of this. They perform work that frees others do to billable work. This is even more apparent in a small business. My personal assistant does all the little things that need done so I can focus on billable work. These staff members are the hardest to hire as they must be paid from the money generated by other staff. However, the time they free for billable staff can make them easily worth well beyond the salary they receive.

As an employee, where do you fit in within your organization? How much revenue do you generate for your organization? Is it directly or indirectly generated? If you know the answers to those questions, you can better understand your value within an organization.