Sleazy LinkedIn Users

Bar

As a small business owner, I am always trying to improve my social network. It’s an essential part of business development and the main point of LinkedIn. During the last decade, I’ve communicated with clients, prospective customers, old colleagues, and people I went to school with via LinkedIn. Unfortunately, now that I’m a business owner, I increasingly find that too many LinkedIn users behave like they’re at a sleazy bar. They connect with me to ‘grow their network’, and within a month I’ve received a half-dozen unsolicited messages to give them my business. I find this utterly annoying. Just because I connected to you doesn’t mean I am looking to outsource to your company, purchase your health care, use your accounting services, or anything else. And your behavior ensures that won’t change.

Previously, I wrote a blog about Social Media Etiquette. In that blog, I mentioned the Like/Know/Trust model. The idea is that you move connections from the outer circle to the inner. I start by getting you to like me, then get you to know me better, and finally get you to trust me with your business. Unfortunately, when you start by spamming me, I don’t like you. If I don’t like you, I will never get to a point where I trust you.

Why are people engaging in this sleazy behavior? I assume, sadly, that it gets results. If you spam enough people, you only need a small percentage of conversions to consider your method a success. But what happens to your reputation among those who didn’t purchase your product? It’s possible that I may have purchased your product at some point, had I ever gotten to know you, but now I never will. You have lost a potential customer who, because of your sleazy business practice, will never be converted to a client.

My advice for social media: slow and steady wins the race. Develop meaningful relationships with people, share meaningful content, engage your network. Through this process you will earn friends. And we all know that given the choice of working with a friend or a stranger, nearly everyone will chose to give their business to someone they know and trust.

To those who spam me on LinkedIn: my new policy is to immediately remove you from my network. You bring nothing of value to me. I get enough spam in my email, I don’t need it on social media too.

Drive & Success

Drive

Most people would say that I’m a successful person. I’ve started my own business, enjoyed 20+ years of a happy marriage, raised a wonderful daughter, earned a third degree black belt, and done so much more. Of course, each of us may view success differently. To some, success may be earning their first million before 30 or to earn their MBA. Success may be marrying the woman of your dreams or buying the car you’ve always wanted. Regardless of how you define success, the formula is pretty much the same.

Drive

The relationship between drive and success is well defined. Tommy Hilfiger said: “The road to success is not easy to navigate, but with hard work, drive and passion, it’s possible to achieve the American dream.” Chuck Norris also recognized the connection: “I’ve always found that anything worth achieving will always have obstacles in the way and you’ve got to have that drive and determination to overcome those obstacles on route to whatever it is that you want to accomplish.”

But what too many people seem to ignore, is that the opposite is also true – without drive, you will have a very difficult time being successful. When I look around, the people I most often see struggling to get by are the same people who have little – if any – drive. They buy their next lottery ticket and hope this is the one. They put their money into fad diets because it’s easier than working on the body they want. They rely on whatever easy method or get rich quick scheme they can find. And where does it leave them? Exactly where they started.

My wife has often says I’m driven by a rubber band. She says that I never stop, and that she believes I could achieve anything if I set my mind to it. I’m thankful to have that drive. It has served me well. But to those of you who have not achieved the success in your life you have wanted, why do you think that is? Are you driven to success, or just driven to the couch to binge watch the next season of your favorite show? Are you as interested in learning Italian as you are sitting on the deck all summer? If you’re not getting where you want in life, what do you intend to do about it?

It’s never too late to change your life to be what you want it to be. However, you need to start by taking charge of your life and focusing on the things that will drive you toward the success you wish to achieve!

Development Environments

Workbench

As a developer, it’s a great time to be alive. We have countless options for development languages and frameworks. But, sadly, many of them leave much to be desired in terms of tools and environments.

The Model Environment

As a veteran Java developer, I’ve been spoiled with excellent tools. We have numerous IDEs including Eclipse, NetBeans, and IntelliJ. Everyone has their preference, but all three are excellent. Likewise, we have numerous build and dependency management packages such as Maven and Gradle. We have test frameworks, automation frameworks, debuggers, profilers, and anything else you could want to engineer even the most complex of application. In short, Java provides the best development environment there is. Seriously. Few languages have IDEs as good as what Java has. Even fewer have tools that can complete with Maven or Gradle.

When Will Other Languages Catch Up?

I continue to see how Python is displacing other languages. But when will it catch up to Java in terms of development environment? Are there any IDEs that complete with Eclipse for Python? (NOTE: Eclipse can actually be used for Python, but it always seemed to me more of a hack than a real Python IDE) How about debuggers? Go ahead and try debugging Python or JavaScript code and you’ll quickly see how far behind Java they are. Not to mention dealing with libraries and environments!

A Call to Action

As we continue to shift to newer languages, I’m concerned that the next generation of developers will actually have a more difficult time than we do today. Why, as a development community, are we only focused on creating new languages but not on creating solid environments? How are Go, Python, Rust, and the myriad of other languages ever supposed to achieve the same widespread adoption of Java if we never had the rest of the tools we need to get the job done? I want to enjoy the benefits of some of the newer languages to come along. But, until they can complete with Java, I’m unable to stake the success of my customers on them.

Fit for Sale

Sales

As an app developer, I am often approached by friends and acquaintances with “great” app ideas. They believe their idea is worth millions and that I should drop everything and develop their app. Businesses too fall prey to the idea that “I need an app“. Either way, it’s imperative that adequate market research be performed prior to developing any piece of software. 

A Great Idea

A few years ago, I was approached by an individual who had a “great idea” for a software application that was going to revolutionize the industry. He had some startup money to develop the application, and was in a hurry to get started. He contacted me to write him a mobile application, cloud-based management system, and REST services for integration points. It was an ambitious project for the client, and I was excited to start developing. He provided the requirements to me, and I wrote the software. I provided feedback to improve the application, but it was ultimately the customer’s decision what he wanted to include or not include.

Poor Market Research

Unfortunately, as the project moved forward, I learned that the client had very little money for development. None-the-less, we worked to create a working product which we achieved on his budget. But, as he would learn during the next month, he was creating an application that nobody actually wanted. Not only did his application lack features that would be necessary for adoption, it served only a very small niche market. The customer assumed he knew what people wanted, and had never bothered to reach out to any prospective clients for feedback.

Consequences

Due to the customer’s poor market research, he was unable to find clients interested in his software application. Months went by with very few interested parties, and nobody ultimately purchased the software service. Consequently, the customer blamed me for writing an application that nobody wanted. He even fought me on payment because he was unable to make his money back through sales.

Lessons Learned

There are several important lessons to be learned from this experience. First, if you’re paying someone to write you software or create any other work for you, make sure it’s worth the cost. It’s your job as the customer to know what you are purchasing and to ensure that it will meet your business objectives. As a software consulting firm, I can provide you with information and develop software. However, I can’t tell you wether or not your application will be a success. Second, market research is of paramount importance for any project. If you don’t know the target market, the demographics, the estimated number of consumers, and other key data; you can’t determine financial viability of the project. Before you go into any project, do your part first and ensure that the work you are paying for will take you where you’re trying to go!

Debugging & Maintenance

Debugging

Long after the initial fun of developing an application comes years of debugging and maintenance. Yet, many languages and developers fail to make choices that will ensure that future maintenance will be possible. Then, when problems occur, substantial time and effort is spent trying to resolve the issue.

Current Trends

It seems that right now, a growing number of developers and development teams are transitioning to languages like Python and Javascript. Both of these languages can do great things. Unfortunately, they both suffer from the same problem – they are incredibly hard to debug and maintain. Why is that? Python and Javascript are both weakly typed scripting languages. What does that mean? In short, it means that the programmer can be lazy about how they define things and let the computer do all the work. Unfortunately, it also means an increased risk of runtime errors and greater difficulty in finding problems.

Magic Frameworks

This is exacerbated by magic frameworks. Everyone loves Ruby on Rails and Django. But both become a nightmare to debug very quickly. Need to change something from the framework? Great – your hack will be the source of nightmares when you leave. While these frameworks may simplify our lives in the short term by providing a quicker time-to-market, in the long-term they are more difficult to maintain.

How Can We Fix This?

Unfortunately, I have rarely seen well documented Python or JavaScript code. Typically, users write code and forget about it. Online videos and tutorials rarely stress the importance of comments and documentation. Thus, we end up with fragile code nobody understands. As a developer community, we need to do a better job of passing on our knowledge of code to the next developer. This means comments, readme files, and other documentation. If you write software using weakly-typed scripting languages, you owe it to those who will debug your code later to put in the extra effort!

MacBook Pro?

I’ve been a Mac user for several years now. I have a MacBook Pro (2015) and a MacBook Air. I love them both. They are amazing machines. From battery live to performance and every aspect in between, Mac laptops are awesome. What makes the MacBook Pro so great for me is how well it’s positioned as a development machine. Lots of ram, high-quality graphics, fast, Linux compatible backend (BSD), and ports for everything I need. When I visit a client who wants to see what I’ve been working on, I connect a HDMI cable to my MacBook Pro and walk through the progress. If a customer asks me to add new photos to their website, I insert their SD card into my computer and grab the images. When I want to connect with a peripheral – such as a barcode scanner or a mouse – I use my USB. If I am working with Arduino, MicroBit, or a PyBoard, I connect a standard MicroUSB cable to my machine.

Time To Upgrade!

Now, after years on my current MacBook Pro, it’s time to upgrade. I need more hard drive space for all my projects, and I’d like more memory for using virtual machines. Of course, I want another MacBook Pro. Unfortunately the new machines seem far less developer friendly. Why? Because they ONLY have USB-C ports. No HDMI, no headphone jack, no Thunderbolt, no USB-A, no SD Card reader. If I want any of the above, I need to by a converter to connect to my USB-C port. So, when I go onsite, I will now need a laptop and a bag of spare cables to connect to what I need to use. What a horrible user experience! As a laptop user, my objective is to carry around as little as possible. Apple, why did you do this? Why did you destroy a machine that was excellent for development by removing all the ports that made it so useful?

What to Do?

I’ve been pondering for the last few weeks what to do. Do I buy the MacBook Pro along with all necessary accessories to achieve what I need, or do I buy a Windows laptop (for half the cost) that already contains all the things I want? Unfortunately, I like MacOS (specifically the command prompt and dev tools) too much to go back to Windows. So, I’m stuck paying top dollar for a machine that is severely lacking in its ability to perform many of the very things I buy a laptop to do.

Agile Pricing?

Today, agile software development is the standard project management model. In many ways, it’s an excellent model. It allows for rapid changes to meet business needs, helps ensure quality throughout the process, and ensures that stakeholders have maximum visibility. But there’s one big problem…

How Do You Price Agile Projects?

Since Agile projects requirements are continually refined during the project, how do we know the amount of work to be done? How can we define a timeframe for development if we don’t have a clear picture of requirements? How can I tell you the cost when I don’t even know exactly what you want to do? Certainly I can provide an estimate based on the high-level definition of the project. But agile makes scope creep easy. New requirements can be added or old requirements removed. This means my best estimate may be wildly inaccurate.

How Can Developers Learn to Estimate Projects?

Making things more difficult, developers who have only ever worked in an agile environment will have difficulty estimating project workload. Why? Because they have never had to. Agile is so focused on the now that no attention is ever paid to the larger work of the project.

Future of Agile

The more agile work I do, the more I have mixed feelings about the process. While it allows greater management input throughout development, it suffers from a variety of problems. Sometimes, I even refer to it as (Fr)agile Development. This is just another issue to add to the list. My hope is that the software industry finds a better way to manage development that solves the problems with Agile while still providing all the positive aspects.

Small Business Struggles

Becoming a small business owner is an incredibly rewarding experience. You have complete control over your schedule as well as how much money you can make, you can take time off whenever you choose, and you get to make every decision for your business. However, small business ownership is not without its struggles. Here are some of the things I’ve found out.

Don’t Expect a High Credit Limit

As a technology company, I need to be able to buy hardware such as computers online. And, writing software means that the $500 computer at the local store isn’t going to cut it. I want a high-end laptop. A laptop that will last for several years, run fast, and meet all of my high-tech needs. Of course, along with that comes a high price tag. That’s not a problem with my personal credit card. Years of solid payment history has yielded a good credit score, and a high credit limit. My business credit card, on the other hand, barely has enough to buy the accessories I need for my computer.

Everyone Wants a Job

Now that I own my own business, it seems that everyone wants a job. Somehow, as a small business struggling to find enough work for myself, I am expected to hire other people too and find work for them. Own a tech business? Now you can expect every teenage boy in your social circles to ask to be an intern for you this summer.

Human Resource Problems

Just hired your friend? Have fun with that! There’s nothing quite as awkward as dealing with performance issues or other HR issues when the individual is someone you’ve known for a long time. Now, you get to walk the fine line between running a successful business and protecting a relationship.

Hate Spam? Expect More!

As a business owner, everyone wants to sell me something. Whether it’s email, social media, or written correspondence, expect to receive even more junk mail. My favorite is when people connect on LinkedIn to grow their social network. Then, within minutes of accepting, you receive both a private message and an email to buy their services. Ignore that message? No problem – you’ll get another one tomorrow. Then, a week later, you’ll get a third message asking if you saw the first two.

Time is Valuable

As a business owner, you quickly learn how much it costs to perform tasks that are not billable. Marketing, social media, accounting, human resource management, website updates, and so many other tasks will require your attention – and none of them generate revenue. I’ve quickly learned to cut out the unessential so I can focus on what pays the bills.

Lots of Hats

I’ve learned just how many hats a small business owner must wear. Plan to be successful? You’ll need to know marketing, social media, accounting, human resource management, contract law, negotiations, and so much more. Oh, and that doesn’t even mention being an expert in the service you sell. Get a large hat rack – you’ll need it!

Final Thoughts

The last year of running my own business has been amazing. I’ve had financial freedom like never before and enjoyed the freedom to do what I want when I want. But that freedom hasn’t been without struggles. Business ownership is lots of work, and navigating the struggles has been part of the fun.

Return on Investment

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.

The Value of Communication

Phone

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.