It’s often said that “great minds think alike.” It sounds great, in theory. But is it really true? Just because I’m thinking the same thing someone else is, does that really mean we’re both great minds? I hardly think so. It’s not the employee who thinks the same as everyone else that brings value to the team, it’s the free thinker who has a different perspective. In the boardroom, when everyone thinks the same, we call it groupthink. Psychology Today says “In a groupthink situation, group members refrain from expressing doubts, judgments or disagreement with the consensus and ignore any ethical or moral consequences of any group decision that furthers their cause.” This hardly seems beneficial to the team. When I think of great minds, I think of the men and women who engaged in thought well outside the mainstream – brilliant men like Isaac Newton, Albert Einstein, Stephen Hawking, and Benjamin Franklin. If you want to be a great mind, think for yourself! Don’t let the people around you define your thought. Be willing to take risks and think outside the box. It’s those people who history remembers – not the people who think like everyone else.
Language Popularity
A subject that repeatedly comes up on websites, blogs, and conversations is which language is the most popular and which ones are the best to learn for future job opportunities. I keep an eye on this list myself as it’s important to understand trends within the software industry. However, people seem to ignore the most important aspect of language popularity – the context.
What do I mean by context? I mean we have to look deeper to understand why a language is as popular as it is. We also need to understand the market for a language and how that impacts popularity. For example, JavaScript is always near the top on any language popularity chart. Is it any coincidence that JavaScript is also the only front-end scripting language in use today? Whether or not you like JavaScript is utterly inconsequential. If you want a website with any manner of front-end scripting, you will use JavaScript. Likewise, if you want to interact with a database you use SQL and if you want a web page, it will be HTML. As such, these technologies will always rank more highly than those with a smaller market.
So what about Python? Everywhere you look, you see that Python is at the top of the list. Should we all switch to Python? Not really. What all those rankings fail to point out is the user base for Python. Certainly there are all kinds of production projects out there running Python. But if you look around, you see that Python’s popularity is largely caused by people outside the traditional developer community. AI researchers, academics, data scientists, system administrators, makers, etc. For non-programmers, Python is easy and incredibly powerful. But that hardly makes Python superior to other languages nor does it suggest that professional programmers should start porting their eCommerce sites.
Remember, while rankings of popularity may help you see trends, look to the underlying reasons. Why is it popular? Who is it popular with? Does this language look poised to overtake in other realms? When picking a language for a problem, the most important question is which language solves the problem best – not which language is the most popular.
Killer Robots
During the last year, countless tech leaders have talked about the danger that artificial intelligence could pose in the future. Like most people, I laughed at them. After all, do I really think that The Terminator or The Matrix were prophetic? Hardly. But the more I read and the more I pondered it myself, the more concerned I became. Now, I wonder if there’s any way to prevent it from happening at all.
Is it really reasonable to think AI could take over the world? Do we really think code will be so poorly written and that software testers will be so incompetent as to let AI robots kill humanity? Unfortunately, I do. Not intentionally, of course, but bad code that wasn’t properly tested will make it into the wild on robots. Consider all the system updates that have been performed on your computer or your cell phone. Think about all the app updates that happen every single day. Consider all the one star reviews for apps on the mobile stores. AI will be no different.
Consider all the potential causes of AI issues. Developer errors, inadequate testing, corporate release requirements, poorly defined ethics, unforeseen events, etc. Each one of these issues could cause AI to perform in ways it was not intended with potentially catastrophic consequences. Consider government AI being developed by the lowest bidder – wow, that’s scary.
The more I think about that, the more certain I become that AI will eventually cause huge problems to the world. As such, it’s imperative that we – the tech community – consider the limits of AI – not in regards to technology, but rather in regards to safety and security. Do we want AI police officers or soldiers? That sounds dangerous. Could Russian hackers embed “Order 66” into our own robot army? Do we trust robots with firearms to make the appropriate decision in a life-or-death situation?
My intent is not to sound like an alarmist, but rather to begin thinking about the issues now. If not, we may find it’s too late to do so later.
Change is Good
Yesterday, I took the Myers–Briggs personality test online. I’ve done this many times in the past, and I always come up INTJ – “The Architect”. This is a great personality type to be – listed as being imaginative and strategic, independent and decisive, hard working and determined, and having high self confidence. But as I began my journey into entrepreneurship, I realized that being an introvert wasn’t such a great idea. So, I decided to work to change myself to be more extraverted. After all, if I can’t comfortably talk to people and sell my services to clients, it’s going to be difficult to run my own small business selling software services. To make this change, I started reading books a year ago on small talk, communicating in social settings, and similar skills needed to be an extravert. I also read books on sales and leadership. After all, being an extravert isn’t going to get me far if I can’t sell myself or if I can’t project myself as being a leader in both business and software development. So, when I took the personality test yesterday, I was pleased to see that I have changed to ENFJ. Not only have I become more extraverted, but I have learned to rely more on my feelings instead of just logic. As a software engineer, that’s tough, but the world of people is rarely a world of logic – it’s a world of feelings. If you can’t relate to someone on that level, logic won’t get you very far. Now, instead of being “The Architect” I’m “The Protagonist”.
Are you growing and changing? Is You 2.0 going to be better than you are today? What are you doing to get where you’re going? Are you willing to work to change the most basic elements of your own self to move your life in the direction you want?
Social Networking
On Tuesday, my daughter and I embarked on an epic rail journey from Anaheim, California to Altoona, Pennsylvania. As I write this, I’m sitting in the lounge at the Chicago Amtrak station. Tomorrow, after another two trains, I’ll finally arrive home.
Anybody who knows me knows I love to travel by rail. While air travel is fast, it’s rarely fun. Rail is the opposite – much slower, but generally an enjoyable experience. One of the best parts of the train is the dining car. Not only is the food good, but due to the limited seating, you end up sitting with strangers. This is always a great way for real social networking. Tuesday night, my daughter and I sat with a couple retired from John Deere. He worked in the factory, and she spent years working in HR and in training other divisions. She was also a frequent traveler to Europe. The next day, I shared a meal with an outspoken Trump supporter and handwriting analysis export, a rail advocate and teacher, and a man who inherited land in the deserts of California. This morning, I shared breakfast with a pastor and his wife from Minnesota who work with troubled inner-city kids.
Unlike Facebook, Twitter, and other so-called ‘social network’ sites, riding the rails gives me an opportunity to share a meal with people across the country. People who are from different states, with different political views, different religious views, and every other difference imaginable. And, unlike social networking sites, discussions are typically cordial and enjoyable. I get to interact with people as people – not as a digital persona. I get to see them as a human – not as a highly curated avatar. These experiences are what real social networking should be about – not an anti-social experience behind a computer screen.
Today, instead of interacting with people on a computer, why not invite a friend for coffee, have dinner with your neighbor, or invite a coworker over for a burger. You’ll find the social interaction far more rewarding than Facebook.
Language Overload
As a technology enthusiast, I live in a great time. Computing devices are everywhere, artificial intelligence is advancing by leaps and bounds, and hardware platforms such as Arduino and Raspberry Pi have made it easier for people to tinker with new technologies without spending a lot of money. But with all the great advances in technology, there is one advance I do not enjoy – the endless list of new programming languages released every single year. I’m not opposed to new languages, they are a necessary part of the march of progress. But don’t we have enough already? One example is the proliferation of languages that operate on the Java Virtual Machine. Originally just Java, now we have Scala, Groovy, and Kotlin too. And, each one has their own group of advocates saying their language is the best.
When Apple announced a few years back that they were replacing Objective-C, I was originally optimistic. Objective-C is pretty much unused outside the Mac world. If you wanted to write iOS applications, you had to learn an otherwise useless language. Was Mac going to lower the bar for new developers and allow them to use a language that was already widely used? Nope – they invented another language – Swift. I’ve heard lots of great things about Swift, but I’m not really interested in learning another niche language to develop for a single platform. (Instead, I’ve chosen to use hybrid tools such as Cordova and Ionic).
What’s the harm in all these languages? While different languages do bring different things to the table, there has to come a point where the market is over saturated. With all the languages out there, developers have to pick which ones to learn and which to skip. While every developer should be competent in more than one language, it’s certainly not realistic to expect a developer to be an expert in a dozen different languages. And since every language needs their own libraries of code, scores of developers are wasting their time writing standard functions for another language. Solving a problem that has already been solved a dozen times in the past – with a new language – is not particularly useful.
Where do we go from here? I suspect that we will continue to see the proliferation of languages. Long term, we will see languages transition to legacy code far sooner than previously. This will make it increasingly difficult for companies to maintain their codebase and will mean more frequent rewrites of software applications just to stay current. For companies, I would suggest ensuring that the languages you choose are solid, stable, mature, and likely to be around long term. You can go for the newest language out there, but you’ll struggle to find developers now and you’ll likely end up having an ever more difficult time maintaining the application long-term.
Expertise and Versatility
Successful entrepreneurship hinges largely on maximizing benefit and minimizing risk. While striving to solve some of the world’s most difficult problems, entrepreneurs that rise to the top are those who optimize the process of weighing the risk versus reward of their decisions. The end goal for businesses and communities should not only be to survive but to also thrive. Rather than making strictly safe and comfortable decisions, people ought to encourage taking an appropriate amount of risk for the right reasons. After all, the health of a society cannot adequately be defined by “success” or “failure” in a word.
In a world replete with industries that constantly change and develop, consumers have grown to expect that products and services will become better and cheaper over time. Entrepreneurs and businesses who look beyond the basics tend to find opportunity knocking much more frequently, because they are willing to learn and share their knowledge with others.
With others striving to beat out the competition and have a “better than them” mentality, some of the greatest success stories have started with an individual whose desire is to become better today than yesterday and become better tomorrow than today. This yearning to improve and accomplish more each day ensures that the business will exceed customer and consumer expectations, delivering greater quality and value over the long term.
Over the long term, expertise alone will not suffice to assure sustained business growth. Along with expertise, businesses need to be able to understand how to apply their knowledge and continue addressing the new problems that arise. Versatility paired with expertise can provide the essentials necessary to build a business that is strategically positioned to endure the storms that businesses ultimately face.
Businesses ultimately face many challenges. The task of satisfying and exceeding the expectations of clients, customers, and consumers can seem daunting. However, those who more willingly face adversity tend to more easily overcome adversity. We have woven these principles into our own business model, so that we grow alongside our community by sharing our expertise to help businesses create new value. As you consider applying this information to your own business, think of ways that you might increase expertise and versatility to make awesome happen for our community.
Carpe Diem!
Today, my daughter and I ran the first of three 5K runs this summer. We decided to participate in the Disney Virtual 5K this spring, and have spent the last few months training. Today’s race wasn’t great. We didn’t break any records, but we accomplished our goal for this month. Next month, and again in August, my daughter and I will run another virtual race.
As I was running today, I remembered something I read this spring. “Today I will do what others will not so that tomorrow I can do what others cannot.” This simple idea applies to just about everything in life. Today, I will show my wife that I love her so that tomorrow I have a marriage others look to as an example. Today, I will study Spanish for 30 minutes so that when I travel to Mexico later this year I can get around. Today, I will learn a new technology so that tomorrow I will be more marketable.
To achieve any goal in life, effort must be exerted day after day. I see people everyday who want to own their own business, or write a book, or run a marathon. Yet, rarely do these same people have any plan to get there nor are they exerting any energy toward their goals today. They are hoping that, by some miracle, they will wake up one day and it will have happened. But it never will. My business, my profession, my 5K run today, and everything else I have ever accomplished have taken untold amounts of effort and energy. But never once have I looked back on those efforts and regretted my decisions. Can you say the same about the things you have put effort into?
A leadership conference I attended this spring talked about the importance of self-leadership. About how we can never lead others if we can’t lead ourself. How do we lead ourself? By setting goals and working toward them. The leaders we wish to follow are those who have a record of achievement. They are people we aspire to be like. Are you putting in the effort today to be the leader that others will look to tomorrow? If not, are you willing to put in the effort today so that tomorrow you can do what others can’t?
Sieze the day! Make something awesome happen!
Gaming Addiction Disorder?
I read a recent article indicating that the World Health Organization had recognized gaming addiction as a disorder. Decisions like this should bring fear to all tech organizations. As we strive to create compelling content, we run the risk that someone may become ‘addicted’ to our content in a way that negatively impacts their life. Websites like Facebook, Pinterest, Thingiverse, and others can easily become a time blackhole with an afternoon gone before you even realize it. Isn’t that what we want though? We want to attract users and keep their interest. But what happens when courts rule that the addiction that we caused created a negative financial impact on the user? Will content providers like Netflix be sued in class action lawsuits because people couldn’t stop binge watching the newest TV show? How far will this go? Will we have a future where employees who watch TV all day can’t be fired because they suffer a recognized disorder? Must we, as employers, provide reasonable accommodations for their disorder? How about social programs – will we be required to provide welfare because someone has become so ‘disabled’ that they can’t work?
When I was younger, I played a lot of games too. Hours spent playing The Legend of Zelda, Super Mario Brothers, and other Nintendo games; and even today I enjoy playing classic NES games. But gaming is only one part of my life. I enjoy reading, learning foreign languages, studying astronomy, playing board games, and so many other things. Gaming has never become an all consuming obsession in my life.
I am concerned to see how this will play out and what the ramifications may be, but I do know this – the future will be filled with people suffering from carpal tunnel and vision problems looking back on their life filled with the regret of having sold their dreams for a digital fantasy world that left them empty in the end. And we, as taxpayers and businesses will be left with the financial burden.
The Value of Open Standards
One of the most frustrating aspects of working in the tech world is dealing with proprietary systems, protocols, standards, and languages . Countless technologies do things their own way, even when standards exist for the technology. Some vendors like to avoid open standards simply so they can hold a segment of the tech population hostage. Unfortunately, many of the biggest offenders are also among the largest tech companies out there. Because of their influence, they ignore standards and create their own. These vendors may argue that they created their own way of doing things because the standard isn’t robust enough to do what they want. While this may occasionally be true, it’s often an excuse. A shining example of this problem is the Swift language created by Apple. Did we really need a new language for iOS? Certainly it was time to retire Objective-C (another Apple only language), but did Apple really need to create a new language? Were there no other languages that would have worked to achieve your objective? I doubt Swift was really necessary. Microsoft has done the same thing with their C# language. While I personally like the language, did they really need to create their own clone of Java? How about Microsoft’s Active Directory? If you’ve ever tried to integrate a non-Windows machine, you quickly see how painful it is. These are just a few examples, but I am sure everyone reading this has experienced issues where things weren’t compatible that should have been if the vendors simply followed existing standards.
Why does this really matter? Because incompatibility negatively impacts consumers. When vendors create proprietary protocols, the consumer often loses. Time is wasted trying to connect a Mac to a Windows network. Programmers spend time learning another language that is useless outside of a specific niche. Money is wasted for additional software to convert between file standards. Users waste time fixing an OpenOffice document that doesn’t import nicely into Microsoft Office.
As new technologies continue to come out, this problem is only going to get worse unless we start working today to create open standards and to follow existing standards.