Skills All Developers Should Know

Tools

When I talk with developers, it’s amazing how many of them are disappointed with the limited job opportunities available to them. Often, the problem is that they lack many of the common skills required to be an effective programmer in today’s market. These developers have managed to become specialists in a very specific technology stack which isn’t widely used elsewhere. I’ll tell them some things they should learn, and – surprisingly – they’ll often argue that the specific skill I mentioned isn’t that useful. What are those skills?

HTML

First and foremost, every developer today needs to know HTML. In our web-based world, it’s hard to find work that doesn’t require HTML at some point. This is obviously true for web development, but is equally valuable with hybrid mobile technologies such as Cordova or Ionic. Or, maybe you need to create documentation for you application that will be accessed on the web.

JavaScript

While every developer may use a different programming language for backend development, we all use JavaScript for web programming. But JavaScript goes well beyond that. Today, JavaScript can be used for developing backend services with Node or even interfacing with Arduino hardware with the Johnny5 library.

Git

Developers need to be comfortable with Git from the command line. GUIs are nice, but when you need to automate a build script or download code from a command prompt on a remote computer, the Git command line is essential.

BASH

Like it or not, much of the cloud runs on Linux servers. As such, a knowledge of BASH is essential in today’s world. While many developers prefer a Windows only world, it’s just not the case when you have to deal with Google or AWS cloud services.

SQL

It’s amazing to me how many junior developers are unfamiliar with SQL. In today’s marketplace, nearly every application needs to interact with a database somewhere. Whether it’s an enterprise application using Oracle or an Android app using SQLite, SQL is the common way to interact with a database.

Conclusion

It may be noted that – other than JavaScript – no programming languages are on the list. Whether you develop in C, C++, Java, Swift or some other language, the above skills will apply. There are countless toolkits and frameworks, languages and environments. However, nearly all of them will require some mix of knowledge of HTML, JavaScript, Git, Bash, and SQL

Attitude Matters

Bad Attitude

Anybody who has ever looked at job requirements for technical staff has probably noticed the huge number of skills required. This may include programming languages, hardware platforms, frameworks, protocols, or countless other technical specifications. However, what you will see far less often is interpersonal skills or attitude. In reality, these soft skills are typically far more valuable.

This week, I overheard an aspiring programmer discuss how he found it “mentally draining pretending to care about business needs our values”. I immediately jumped in to try to correct his errant thinking. As the discussion continued, he made it abundantly clear that he only cared about money. In fact, the only reason he was going to school for technology was to make money.

While many people chose their profession based on financial factors, money should never be the primary motivation. Why? Because study after study has found that money is a poor motivator of behavior. Instead, people motivated by the intrinsic characteristics of a job are far more successful. For example, as a programmer, I’m motivated by helping business transform their operations through technology and by the challenge of the problem. While a large number of the applications are, in themself, boring; solving complex problems and helping businesses grow is always exciting.

For the individual trying to find a job, learn to be motivated by the job instead of the money. Not only will it help you perform better, it will help you develop a more positive attitude.

In the end, most business owners would rather have a less technically competent individual with a positive attitude than a more skilled individual with a poor attitude. For the business, they can train the desired skills, but fixing a poor attitude is far more difficult.

Backups Are Not Optional

Drives

Recently, I visited a customer site for what seemed like a simple request – to update their Windows computer. However, in the end, the machine had to be reformatted. The customer was very worried that they would lose critical data on their system. That didn’t happen, but I was concerned that the customer wasn’t performing backups on what he considered to be critical operational data.

Today, failure to backup important data is not excusable. With the advent of cloud services as well as cheap data storage, customers have countless options for ensuring their data is always available. Regardless of the operating system or situation, everyone should be performing regular backups of critical information.

Backup Options

For Mac users, Apple’s Time Machine is the way to go. The gold standard for computer backups, Time Machine automatically backups up your entire system whenever a configured hard drive is connected to the computer. Not only is it easy to configure and implement, backups couldn’t be easier. During setup of a new Mac computer, simply plug in the Time Machine drive and the OS will take care of moving everything to a new system. It could not possibly be easier. Additionally, Apple’s iCloud drive is an incredibly cheap cloud-based backup option. The free iCloud storage allows up to 5 gigs while paid solutions start at only .99 cents per month.

Unfortunately, Windows users don’t have anything as nice as Time Machine. However, Microsoft’s OneDrive allows free storage of 5 gigs (like iCloud) and up to 1 TB for only $6.99 per month. With automatic syncing to the cloud, OneDrive can quickly – and easily – protect mission critical data.

In addition to the above, countless other options exist. Google Drive, a service similar to OneDrive or iCloud, allows 15 gigs of free storage. For developers, both BitBucket and GitHub provide off-site storage of source code. For your cell phone, Google Photos can backup every selfie you take so you never have to worry about losing the pictures on your phone.

Conclusion

In the end, it doesn’t really matter what service you use or how you do your backups. What matters is that you’re doing them. For me, as a business owner, the loss of my business data would be catastrophic. So, I have implemented various backups to preserve critical files. If my computer blows up today, I’ve got nothing to fear – I’ll be back up and running tomorrow.

If you are concerned about what would happen to your business in the event of a computer crash or catastrophic event, contact someone in your IT department. If you don’t have an IT department feel free to contact Talixa Software for assistance.

Remote Work? It’s Not All Good.

During the last few months, we’ve seen a huge shift by companies to encourage remote work. Indeed, for many organizations, this is they only option they have if they wish to stay in business. Many workers are very pleased with this, and some have even blasted companies who say they’ll end their remote plans when the coronavirus passes. However, as a business owner, I have a variety of issues with remote work.

Lack of Accountability

One of the biggest difficulties with remote work is the lack of accountability. Online, you’ll see all the people who support remote work argue that if you don’t trust someone, why are they working for you? But how can I possibly ever grow to trust someone I don’t have any interaction with? If the person works a remote-only job, and was hired remotely, I have no way to ever know the individual’s work ethic, whether he consistently shows up on time, or whether he plays games at the office all day. I’ve seen many people play Facebook games in their cubicles, I can only imagine what they would do if they were at home!

Difficulty in Mentoring

I currently have several interns (or, as I hear they’re called now, externs) working for me remotely. They need to complete an internship to finish the degree, and I offered to let them work for me. Unfortunately, I can’t watch what they do or easily mentor them. I don’t know when they’re stuck, and I have no way to really tell if they’re having difficulties or if they’re simply unproductive. I feel sorry for anyone working as an extern now, as I do not believe it’s possible to provide the same level of mentorship that’s possible when a team member is onsite.

Inability to Develop Social Connections

While many people may prefer to ignore it, social connections in the workplace are important. Developing relationships with a diverse pool of team members provides an employee the ability to learn from other team members, to share in the success and hardships of a project, and to engage in team-building that grows ever important as someone desires to climb the corporate ladder. Individuals who never work at the office will have a very difficult time developing the skills necessary to become the leaders of tomorrow.

Decreased Visibility

When it comes time to promote someone, do you chose the worker you’ve never met, or the individual who you see showing up early and staying late every day? The remote worker may put in just as many hours, but it will never been seen by management. Likewise, when it comes time to downsize, are you going to fire your friend or the worker three states away?

Minimized Importance of Client Interaction

Developing custom software for clients, I place a great deal of importance on relationships with my customers. I like to visit them whenever possible, see how things are going, and even socialize a bit. I view my customers as more than a source of revenue, but as the people who enable me to have a business. As such, I place a great deal of value on relationship building. With remote workers, the option for real meaningful client interaction is gone.

Why Not Outsource Everything?

If you disagree with all of the above, and you really think that remote-only is the future, then why not outsource everything to India, the Ukraine, or Latin America? If there truly is no value to being onsite, then there’s no value to me paying an American developer when I can outsource the work at a substantially reduced rate. By arguing that all jobs should be remote, you’re actually arguing that you’re way too expensive for the benefit you provide.

Conclusion

While I think remote work can be a great thing, I reject the notion that it is superior to working onsite. I look forward to returning to a normal business world where I can interact with my customers, meet for a burger with a new lead, and mentor my team in person. The remote-only world of today isn’t all it’s cracked up to be!

Master of Your Destiny

Workforce

As the economy begins to rebound from the COVID-19 pandemic, people are starting to go back to work. Unfortunately, it seems some sources are suggesting that companies have engaged in sexist behaviors by only bringing men back to work. Or have they? I asked both my wife and my daughter what they thought the reason for this apparent sexism may be and they both came to the same conclusion – women were likely staying at home to take care of their children. None of the articles I read came to this conclusion.

Shouldn’t we stomp out sexism whenever we find it? Absolutely. As my daughter enters the workforce with a STEM degree, I want her to have the same opportunities as men. As a business owner, I have a simple rule for the people I work with – they must be the most qualified people I can find. Note my lack of concern for race, gender, religious creed, etc.

Unfortunately, I see a bigger problem with the assumption that everyone is bigoted: it destroys the motivation of those who are the target of those prejudices. For instance, as women see articles about sexism in the workplace, they increasingly believe that everyone is out to get them. Likewise, the constant insistence of racism creates an environment where minorities believe they’re unable to get the job. This causes those individuals to put in less effort or even give up. After all, if the system is rigged against a person, why would they bother to try?

These notions of sexism and racism end up becoming a self-fulfilling prophecy. People give up, we see a less diverse workforce, and then point out the racial/gender makeup of the workforce to prove our conclusion.

What Do I Tell My Daughter?

When I talk to my daughter about sexism, I tell her that she is in control of her own destiny and can accomplish anything she wants to do. I tell her to ignore the reports of widespread bias and instead work hard to achieve her goals. I tell her that when she falls for the narrative that women are at a disadvantage in the workplace, she becomes the victim and is unable to achieve her goals.

Conclusion

While I have witnessed sexism in the workplace, I reject the notion that women are systematically oppressed. I believe that women are just as capable as men, and that when they begin to see themself as the victim they kill their own upward mobility through the paralysis of fear. Most importantly, I reject the politics of division and believe we all end up better when we bring the best people together – regardless of race, gender, or any other meaningless classifier.

Marketing 3.0

Marketing

In the early days of marketing, companies relied on print, and broadcast media. Newspapers, magazines, television, and radio provided advertising solutions for everyone. Then came the internet. During the last decade, we’ve seen marketing rapidly move to things like Google AdWords as well as social media. Today, people make heavy use of Facebook, Twitter, and Instagram to push their brand. Through both paid advertising as well as providing content, social media is now a major player in the marketing realm.

Unfortunately, however, this seems to be changing faster than many would like to admin. Facebook’s user base is dwindling, and Twitter is typically only used by people looking for information within a niche market – such as music or tech. Worse yet, LinkedIn – once a place for professional networks – is becoming the venue of choice for advertising. Initially, I embraced the use of LinkedIn to advertise my services to local businesses. Unfortunately, over the last year, I have been increasingly bombarded with connection requests from people who simply want to sell me products. Now, I am increasingly reluctant to connect with people I don’t know. I look for where the individual is located, and if it’s outside the US, I reject the connection. I’ve removed individuals who acted as spammers. None of this is new, of course, I’ve talked about it before (Social Media Etiquette and Sleazy LinkedIn Users).

Now, I am left to wonder where the next phase in advertising will take us. I assume others are having the same experiences, and are wondering the same thing. Mobile advertising seems to be good, but only if you’re selling games. Advertising on digital audio services such as Pandora or Spotify are great – if you’ve got the budget. I have to assume that other’s are having the same experiences I am, and so these methods are becoming less useful. I think we are on the brink of a massive shift in marketing, but I’m not sure what it will be. But whatever it is, I hope it’s less spammy than what people are doing now.

Developer Development

Growth

Most developers focus their time on learning new technologies or languages. They go to tech conferences and expos, read about new frameworks online, and take the occasional class on Coursera or Udemy. This is great, but I think too many developers are lacking critical skills in other domains.

I taught myself to program. Then, when I finally went to college a little over ten years ago, I decided to get a degree in psychology. Why? Because I wanted to better understand people. Like many developers, my interpersonal skills weren’t the best. I figured that by learning more about how people think, it would benefit me professionally.

Now, I’m getting ready to start my masters degree. Not in computer science, but in business. I already know programming incredibly well, so the next step for me is to better understand business. Not only will this help me as an entrepreneur, but will also help me should I ever transition back into the workforce.

Where do you focus your educational efforts? While learning more about your trade is a great idea, don’t ever forgot to hone those ancillary skills that will improve not only your marketability but also your ability to understand how to use your trade to the benefit of the world you work in.

Languages vs Algorithms

Programming

I was recently discussing a project with a potential client. His project was using a language I haven’t used heavily in quite some time. He was disappointed because he was struggling to find developers to work on his project. I indicated that I would not have trouble getting back up to speed on the language and being able to move his project forward.

This really highlighted in my mind what really matters in development – it’s not languages, it’s algorithms and software design. All programming languages are, at their core, pretty similar. For example, all languages include:

  1. Syntax for creating variables,
  2. Selectively executing a block of code based on one or more conditions
  3. Repeating a portion of code multiple times
  4. Encapsulating code into functions

These basic structures are responsible for all the software you will ever use. Whether it’s a complex operating system like Windows or MacOS, a cell phone application on iOS or Android, or an application on the cloud, they all rely on the basic elements above.

Once you understand the basic syntax of a language, you move into the more important stuff – algorithms. Algorithms are a set of instructions to perform a given task. Regardless of the language, the algorithm will be largely the same. Next up on the hierarchy is software design. Knowing syntax and algorithms is great, but to really develop quality software you need to be able to design the interactions between components. None of these things vary substantially between languages. Languages are merely the syntactic rules you must follow to define your algorithms and implement your design.

I think people need to worry less about what language a developer uses and look for higher-order skills including algorithms and design. That’s what really defines the skill of a programmer!

Apple vs Android

Cell Phones

I’ve been an Android user for the last decade. This was driven by two main factors. First, Android devices come in a variety of sizes, colors, and configurations. Second, I find the Android developer environment to be far superior to iOS development. I’ve previously shared posts about iOS development horrors as well as the difficulty of automating iOS builds. So, when it comes time to buy a new phone, I don’t hesitate to purchase an Android device. Whether it’s Google or Samsung, or if I’m looking for a cheaper ZTE device, I love Android phones.

Recently, I was asked by a client to download any iPhone-only application needed for our project. Since I already have an account with Google Fi, I decided to purchase an iPhone and use my Google Fi sim card . I decided I would carry both phones around for a few weeks and see how the iPhone compared.

The most striking thing I found about the iPhone was how well it integrates into Apple’s product line. As a MacBook Pro user, I make frequent use of the Notes application. These notes automatically appeared on my phone. I have countless WiFi access points on my laptop, and they too were immediately available. Calendar, reminders, Safari passwords, iCloud data, everything I checked was immediately there for my use. My Android phone can access Google Drive as well as contacts, but the integration is nothing like Apple. Of course, Google isn’t working with either Microsoft or Apple to integrate their tools into the OS, so this isn’t surprising.

Now, as I’ve found the iPhone integration so valuable for my business, I see myself continuing to use both. While I have never been a huge iOS fan, their integration with their OS is truly amazing. Who knows – maybe I’ll eventually use an iPhone as my primary phone!

Microsoft Account Mayhem

Mayhem

Recently, I purchased a laptop for a non-profit organization. The user was not a super tech-savvy individual, so I decided to get everything setup as much as possible for her. Since the laptop was running Windows 10 in S mode, I would need to first upgrade to the standard Windows 10 version. During the initial laptop startup, I avoided using a Microsoft account. However when started the upgrade process, the first thing Windows did was ask me to sign into my Microsoft account. No problem, I enter my credentials and wait for the upgrade to complete. As I continue, however, I notice that Microsoft added my OneDrive account and had started downloading my data. Then, I see that Microsoft Office is registered to me. Obviously, I didn’t want any of this. So, now I go through everything piece by piece and remove my account information.

A few days later, I’m at a client site setting up Office. I enter the credentials for the user, and am provided with an error that another Microsoft user is already signed into the machine. Search as I may, I could not find out what Microsoft was complaining about. Fortunately, after a reboot I managed to get it working again.

I really like how Microsoft has integrated their services into Windows. OneDrive is an amazing tool to easily share between machines, and using a single sign-on to enable all the Microsoft services can be convenient. Or, it can be a nightmare. Microsoft, how about you stop forcing someone to login to get a Windows update. Or, better yet, ask if we want to use that same sign for other services. While you’re at it, change Office registration to be more friendly for business users. I think we’d all rather have a product key than to worry about registering Microsoft accounts for every member of our team.