Moving On: Some Thoughts On Employment and Contracting In The Software Industry

move technology to invisibilityRecently I had the good fortune to be employed by a company that has services that I believe are worthwhile. At this point, I haven't started and don't know the employee guidelines and whether it would be a good idea to mention them here or not - this is still my space on the web, and my opinions and those of my employer may vary. So I'm not mentioning who I will be working for, at least for now. It's not a big secret. Someone who really wants to know will find out - but I retain this space as my own and want to honor any policies that the company has.

That said, it has taken some time for me to get used to the idea of not having to look for contracts or work. The morning after I accepted the job, I stared at my email and all the stuff from CareerBuilder, Ladders, LinkedIn, etc. For months at a time, that seemed to be my life. Even when a short contract popped up on the radar, you have to look for the next thing.

How I Landed The Job

There was no magic to this - it was pretty brute force. It was reading a lot of useless emails from CareerBuilder, The Ladders, LinkedIn, and other sites that have no idea what I was looking for because of what I call the HR filters. These sites are biased toward what the HR departments of employers want, and that distinction is important: What the HR departments post about is almost never what they need. Factor in an economy where some say it's rebounding but where job statistics are as easily gamed as any other statistics, I imagine that there are at least a few thousand people trying to get work in the software industry here in the United States. Factor in the global aspects and the cost of living here in the U.S. being higher than in other parts of the world (but not all), there's some stiff competition out there for telecommuting work.

So what I did was just... brute force. Finding things that keep you going until opportunity strikes - something that is a good life lesson, I suppose, and something that those of us in the middle-aged category might call, "building character".

For the actual job itself, I applied to a company that had an open position. The position itself was not necessarily a good match for my skills and experience, but I wanted to work for this company and so I applied with a short cover email that basically said, "I'm not necessarily a good match for what you say you're looking for, but I want to work for your company."

As it happened, I ended up a good fit. Some might call it luck. I call it, "about time". In a world where we revel in success of others, it's easy to forget how much work went into it.

Trying To Get In? Some Advice

I've been around a few decades, and I think that I've earned the right to dispense some free and not necessarily great advice. It's not original, but it can serve as a reinforcement.

First, since I taught at The University of the West Indies School of Continuing Studies, I have actively discouraged people from entering the industry because it's not the same as when their parents were growing up. Back in the 1980s and 1990s, being a software developer or in IT in general was booming. It's not as much anymore, and there are a variety of reasons for that. I wrote code before the Internet. I remember playing games that were designed, written and produced by one person. The Industry has changed from that of the period of your parents, and if they're pushing you into it, you better love it or find something else to do.

If you're still reading, I won't discourage you further.

A lot of employers or potential clients will seem to be jerks - even as individuals you deal with aren't jerks, you're at the tail of the whip. Suck it up, cupcake. Life is an obstacle course, and so is your career. Whining will get you nowhere - no one hires based on pity. When my father took ill and I moved to Trinidad and Tobago, there weren't jobs for me. For a few years, I supported myself and my father by writing and teaching. It was good for my personal growth, but it did irk me. I stayed on top of technology and wrote code on my own.

I have a friend who actually lost a position he applied for because he wanted to get his substitute teacher certification and the hiring company didn't see the value of him starting later to do so. That was 2 months ago. 2 months later, he has his certification and they're still looking... and I recommended the headhunting agency throw him in the mix as I told them that I wanted my hat out of that ring. I hope he gets it because he's perfect for them.

Your coworkers can be platinum. Treat everyone as well as you can. Don't be a jerk. The people who you seem to barely interact with at work may notice you from afar and be your greatest asset.

General Notes

A few things I've learned from experience:

  • When the hiring manager/client goes on vacation before getting back to you, it tells you that their hiring is not a priority. Their vacation is the priority. You're not. Suck it up, cupcake. Keep looking. I've been on the end of that line as have many other people, and what I have learned is that if they have enough time to go on vacation before they hire you, you need to keep moving.
  • Headhunters can be your friends, and they deserve their own blog entry (it's coming). I have developed solid relationships with headhunters and while few of them have produced, it's not their fault. Stay the course. You never know.
  • No matter how much you want to work for a company or need the work to pay the errant internet bill, never pretend to be what you're not. Reputation is king.
  • When things go sour, don't go sour with them. Over the course of 25 years or so, I've had 3 contracts go sour. It happens, particularly when a company takes a high risk bet and tries to micromanage beyond the contract. If you can't be amicable, or if you're back is against the wall and there's nothing you can do or say to make things better, say nothing. The odds are good that they've done it before with people and will do it again. They'll earn their reputation. You'll earn yours.
  • Be a human being. You'd be surprised how not talking about your work or lack of it sometimes pays off. Go to the coffee shop, the beach, interact with people. Be real. One of the least known things in the industry is that the people who are the most important are the ones that have lives. If you don't have a life, get one.
  • A lot of people say that you should be interesting. Bullshit. You need to be interested. You need to listen more than you talk, and when you talk you need to make sense. Practice.
  • Do what you have to. Sometimes this means working outside of the industry or working in it in different ways. It may mean learning a new technology, it may be refreshing yourself on an old one, it may mean flipping burgers. Approach it all and give your best to everything you do.

Mindfulness and the Creation of Websites and Social Media Presences

Time WarpMindfulness. It's the ability to be aware of things - like not being the person who blocks the aisle at the local supermarket, or not being the person who stands in line to only make the long-winded decisions of what they want when they get to the front. In the context I'm writing of, it's about understanding how your actions affect others - along the lines of empathy - and also understanding how your actions affect things in the long term.

I've been spending time over at Hottie Coffee lately and enjoying the conversations there. Most of the conversations, thankfully, have not been about websites, social media and social networking. Those conversations that were typically were about disappointments - not with the way their site looked or was built.

Most disappointment seems to be about great expectations that have failed to be met, much like what I posted related to unicorns and rainbows and social mediaAnd it's not just an issue of small businesses, but it's the demographic I've been speaking a lot with recently in New Smyrna Beach, Florida.

In fact, I seem to have been explaining a lot of why people are disappointed with their websites and social media presences. It's nice to be seen as an expert, but the pay doesn't exist (well, some coffee now and then - and I was even offered a stuffed frog). I'd dare say that, having been dealing with small businesses in different parts of the world and United States for the last 14 years or so as I've tried to establish a tech business I could be proud of, that the greatest issues can be summed up here:

  • Lack of management of expectations.
  • Lack of follow through on training.

The reality is that a lot of less experienced web developers- technologically proficient for the most part, but less experienced - create the problem. It's not that they lack good intentions or are planning what happens, it's that they don't understand the business itself and don't have plans for what happens. They are not mindful in what they do.

Small Businesses - but really, people - pay for websites because they expect certain things of them. They expect a business that they can manage. They sometimes expect the ability to blog without understanding blogging itself. They sometimes expect social media interactions but they don't understand that social media interactions need to be followed up on, and even moderated.

There are a lot of reasons for this, and it's easy to shift the blame to the clients - too easy. In a world that's filled with all manner of advice for people starting off their businesses, the Internet is a place where many professionals (and those parading as such) weave a web of expectations. "If you build a Facebook group, they will come!", sort of stuff. It's not too far from the 'get rich quick' schemes that are sometimes still featured in the back of magazines.

In a world where installing a content management system like Drupal or Wordpress can be done within - literally - minutes, the technical requirements of 'having a blog' are something that web design and development folks everywhere can check off the list. It's not that simple. Applying mindfulness, one has to make sure that the customer understands what having a blog requires of them in the context of their business. This apparently does not happen enough.

Recently, I spoke with someone who was interested in wholesaling products for their website, but they hadn't hashed out getting the product to their customers. I explained having a website without the ability to fulfill orders was counterproductive, that the website itself shouldn't be their priority and that they should first get the fulfillment in place for a variety of reasons. This, some might say, was not good business on my part - but it was honest and mindful. A year later, if they still had no fulfillment and their website was up, I could probably show it in a portfolio - but the success of my client is tied to my own success. Having a successful client in my portfolio is something I'd like. I want my customers to be successful, and that seems to be something that a lot of people in the web design/web development businesses do not seem to understand. A pretty website means nothing unless it enhances the business. A pretty website that does nothing for the business effectively detracts from the business. I am mindful of this.

If I throw a metaphorical rock on Twitter (and I have), I'll find some 'social media expert' repeating the same ideas that have been around for decades (even before social media was a 'thing'!) and which, for the majority of people, do not work. Sometimes they'll even take the time to regurgitate what they are saying so that they seem to be the author of the idea when instead they're the author of an article of someone else's idea. This is not to say that there are good people out there when it comes to social media, it is to say that the signal to noise ratio is low. 

The harsh reality of the situation is that the market pushes young web designers and developers to build up a portfolio of websites that they can show to either get hired by web design firms or to get more business to sustain themselves. The harsh reality is that most of their clients are disappointed in their websites, not because of any technical issues but because they didn't actually understand what they were buying - and those selling didn't take the time to assure that they did. The client should understand up front what will be required of them to have their website be a successful part of a successful business. 

Being technically proficient at web design and social media is not hard. Being mindful of web design and social media is where most fail, and that failure affects businesses that might otherwise be successful. 

If you're starting off and paying to create a web and social media presence, be mindful.

If you're building a website and/or social media presence for a business or non-profit, be mindful.

Code is Ethics: Part II

Digital FootprintEthical guidelines for software developers exist. Code is effectively a regulatory construct (Lessig). The ethics that build the code define the ethics in an ever increasing technological world. This was covered in Part I.

In today's world, code is increasingly re-used. This reduces the amount of time it takes to develop software. Production environments have morphed from, "Press Play On Tape" to complex interdependent systems. A bug in any part of the interdependent system can bring down the entire server.

A developer who writes a piece of code doesn't really know how it will be used. All that developer can do is trust that the code is used for the right reasons.


From the Headlines: Wordpress Compromised.

Hundreds of thousands of Wordpress sites that weren't updated were compromised in December of 2014. Now consider this quote:

...Now it seems that websites running a third-party plug-in called Slider Revolution are being hacked, and malicious code is being installed that will in turn infect those who visit the website. The developers of the plug-in, ThemePunch, have admitted that they knew about the vulnerability in February this year but kept quiet about it...

Horrid, right? Not really. Themepunch did know about it and patched it within hours (emphasis mine):

In september 2014 the internet security company “Sucuri” released an article about a critical vulnerability in our “Slider Revolution Responsive WordPress Plugin”.

As our plugin is widely used on millions of wordpress sites throughout the web, the problem needed to be tackled as soon as possible.

Our decision to keep the update relatively “silent” (only a “security fix” text was put into our update list) was based on our fear that an instant public announcement would spark a mass exploitation of the issue.

We had the hope that in time (29 updates between february version 4.2 to september version 4.6) most users of Revolution Slider would update their plugin installations to close the security hole. Sadly that was not the case...

ThemePunch had acknowledged and fixed the error, and quietly put a fix out. From an ethical standpoint, they did everything that they could and with 29 updates since, it's easy to see where the fault lies - with those that didn't update their sites.

So, while good code ethics were practiced, the end result was not pleasant. The harsh reality is that we software developers have to be careful to know how the software will be used, and yes, this includes updates. For the record, Wordpress has made it possible to update automatically - but as Brian Lewis's blog entry and comments point out (in the context of asking about auto updates for Drupal), new problems can arise because of automatic updates, particularly in customized complex environments.

And the phrase 'customized complex environments' covers just about every website out there. So now we're beyond just writing the code, we're into supporting the code through it's software life cycle -  a life cycle that typically ends when the software is no longer supported. Software is no longer supported either because it has become antiquated by competing software, upgrades in hardware or when the business model can no longer bear the cost of the software. Since I picked on Wordpress above, I should note that Drupal major versions are no longer supported when the new version competes with the old one because... oh, I don't know that there is a good excuse.

So now we're into the ethics related to code, but more related to the configuration - partly software configuration management, but also server administration - making sure that all the things that a piece of code depends on simply don't break.

In fact, if you really consider all the issues, it's a wonder that the Internet hasn't fallen apart yet.

The Internet hasn't fallen apart

The reason that our beloved world wide web hasn't fallen apart is because of the ethics of those involved. Professionalism. Reputation. Trust. There are a lot of great people who keep things working right, cogs in a digital machine that some consider to be mankind's masterpiece.

From the folks at the server farms that host the code to the person making sure that the software is up to date, there's a constant buzz of things happening. Sure, code is a de facto regulatory framework for how we communicate and store information, but that code is built and maintained on the professionalism of the people involved - it's built on ethics. 

That's why code is ethics. Code is a living, breathing creation that is written based on the implicit ethics of anyone involved and supported in the same way. It embodies what we are willing to do and it denies what we are unwilling to do.

Code defines what we are capable of based on who we are.

It's a wonderful and horrible thing to consider.