Category Archives for Lists

Your Productivity Funnel & The Three Plagues of Programming

Today, I want to talk about the productivity funnel.

That is, your productivity funnel and the three plagues of programming and how to get past those obstacles. The three plagues are: procrastination, perfectionism, and distraction.

Coming right up.

There’s a whole bunch of stuff that can go in. We can observe a ton, right? But, we can only produce so much. The bottom of the filter is what you’re able to produce and the top of the filter are all the things coming in, right? Meetings, phone calls, interruptions, distractions, right? Procrastination, delays, I’m sitting here thinking about other things, I’m not getting to it, perfectionism, I’m over doing it now, the work has been done, I met the requirements from the spec standpoint and I just keep pouring myself onto it because I want it to be better, I want it to look really cool, I want to comment it to death. Perfectionism. All of these things clog the funnel here, right? Think of distractions, procrastination, and perfectionism as things that block your productivity funnel, right?

It’s really, really important to keep it clean and to focus and to weed out the things like distraction and procrastination. Procrastination is obvious, right? I’m delaying, I’m sitting here, I’m on Facebook or Twitter, or maybe I’m just researching unrelated, I’m doing something other than what I’m supposed to be doing which is to move my project forward. Remember, the deal with productivity is the more productive I am, the more successful I’m going to be so it’s so important to weed out procrastination, which is plague number one. Number two, perfectionism. Like I said, sometimes we overdo things. We overthink it, we spend way too much time with it, we know we only needed to spend this much time, somehow we spent this much time so we could make it better, and better, and better. But ultimately, the people that are paying us could care less about our perfectionism.

They just want it to work. They want it to work first time. Remember, when you’re perfecting something over and over again, you’re introducing bugs, challenges, new things that have to be QA’d so weed out the perfectionism and keep your funnel clear. The number one plague of any programmer is distraction. Of course perfectionism and procrastination are themselves distractions, but I mean ringing telephones, meetings, interruptions, lunch times. We need all of those things, but it’s our jobs as software developers to try to push those things out to the minimum that they require, right? Surfing the web, looking at the sports scores, what’s playing at the movies, do I need to bring home a gallon of milk?

All of this stuff, all of these distractions, right? It’s really important that we look at our daily schedule and we say, “From this hour to this hour, I’m not doing anything but sitting here writing code. I’m doing the central part of my job and I’m pushing out distractions.” Push email out for an hour at a time at least so you’re not constantly checking email every time it dings at you, or your phone, man. These are horrible distractions and incredibly limiting factors to your programming productivity. Remember the funnel, the blockages, and there are many, many more. But, this is a good picture, right? You can take in a lot, but you can only produce so much. The more non-productive crap you put in your funnel, the less it’s coming out and the less successful you’re going to be.

Work on eliminating procrastination, perfectionism, and distraction. I’m going to do more video on these topics, but today, that’s an introduction. Think of a funnel as your mind, a lot coming in, a little coming out. The more I limit what goes in actually the more that’s going to come out, in terms of productive programming.

That’s it. I am Scott with Motivated Code Pro.

This is your productivity funnel. Keep coming back. Like, subscribe, and hit the bell so you don’t miss any videos and I’ll see you on the next video.

Getting Started in Programming

What are some things I need to know when I am just starting out as a programmer?

So you wanna be a software developer and the two questions are, what do I have to do and what do I have to know? I’m gonna answer those for you right now, stay with me.

I’m gonna answer two very important questions, what do I have to know and what do I have to do to become a software developer and first, let’s start with what do I have to know. And there is a ton of information on what you need to know but I’m gonna tell you, you need to know about the front-end. When we talk about the front-end of web development in particular, we’re talking about what’s running in the browser.

When we’re talking about the backend or the server-side, we’re talking about what’s running on the serve and so the browser is talking to a server is talking to the browser is talking to the server. And so what’s running in the browser, very simply, is HTML or HTML 5 typically today, CSS for design, and JavaScript is really the programming language that we’re using to manage the logic in the browser or on the front-end.

On the backend, could be almost anything running on the web server. In the company that we have, we use Java primarily but we use other stuff too. PHP, and you know, other people use Python and C Sharp and many other backend languages and there, this is where we’re talking on the backend, there, is where we talk to the database. And the database is an SQL database that’s typically Microsoft SQL server, IBM DB2, Oracle database, you know, My SQL, Postgres and there are a slew of others.

Those are, I think the ones I mentioned, any one of those would be really key to focus on if you’re looking at backend at this point. Understanding what a web server actually is is something to do some Google work on, do some Google searching. There is so many. You know, Apache is a big famous one, it’s a great place to start. So consider that.

So I wanna just read a few things here from my handy dandy notecards and there are a lot of courses, there are a lot of schools and code camps and places and tutorials that are geared to helping people get started and learn what they need to learn, some help find jobs and so on. But, you know, codingdojo.com, community college programs and Udemy or udemy.com offer tutorials, lynda.com, university programs. If you’re already in school, that’s great. Tutorialspoint.com, pluralsite.com, teamtreehouse.com, coursera.com. Audacity.com, hackreactor.com. And that’s a short, small sample.

You can do some research on your own and find a good place to learn. I think tutorials are a great place to start. If you get addicted to programming, you’ll probably find that when you start to work with tutorials and I think being addicted to sitting at your computer and trying to figure things out where the programming language is a great way to indicate to yourself that you are wanting to be a programmer, that you could actually do that.

So the internet is a great place to research and you know, there’s not a lack of information there. It’s a lack of structure. In fact, we have information overload coming at us. I mean, if you go to the browser and type learn to program in JavaScript, you’ll be overwhelmed by the response that Doctor Google gives you back. So you gotta be mindful. And what I’m telling you here is extremely important. I have a thing that I call the 10/90 principle and that is that software development is 10% research, 10. And 90% walking that research out in the form of practice, practice, practice. So 10% research, 90% practice equals results, getting to being a programmer.

And so, that’s a little bit about what you need to learn. And there are many technologies and I mentioned some of them. Some things to think about, some JavaScript frameworks and this is all, you know, anything that’s going on in the browser with regards to JavaScript generally involves a framework. You know, Ext JS from Sencha is a framework, of course we talked HTML and HTML 5 and CSS. Android and java development is a front-end, obviously for Android devices. Vue.js, ember.js, ionic is really cool. Angular from the various flavors it has.

Cordova and Phonegap for taking your JavaScript and making hybrid native apps. React.js, if you’re new and you’re considering a JavaScript framework, I think that’s a great place to start. React native for creating react for mobile devices. On the backend, java, java spring which is a framework for java, same thing applies.

Now, frameworks, by the way, framework is another way of saying, “I’m gonna solve three problems and introduce one.” So if you do the math there, it’s still a really good deal to invest in learning a framework. Everywhere you work, there’s going to be a framework and I wanna say that knowing a framework is especially important and it’s really valuable to your employers and to your work history and to your ability to find your first and next job.

Java Hibernate, CC sharp and C++, Ruby and Ruby [inaudible 00:05:21], Python, PHP, no JS, Express JS and [inaudible 00:05:26] and so many others JavaScript variants on the backend. You know, and then you need to understand source control in the form of get. You can go to gethub.com and get a free account. Some version is still out, fairly widely popular, out in the real world of software development. There’s some IDEs and things that you need to program with. Netbeans, Microsoft VS code, ADOM, Webstorm, Sublime, Eclipse, digital studio and of course, there’s no SQL which is basically saying, I can hit the database but I’m not gonna use SQL to do it, I’m gonna use JSON which are JavaScript object notation.

But my point in all of this flurry with the cards just to make a very important point, there is a lot to learn but I want you to learn one thing at a time or one set of disciplines at a time like if you’re gonna learn about react of if you’re gonna learn about the core language of JavaScript, don’t learn it from 10 different places, don’t try to learn oracle and react all at the same time. Stick with one thing at a time, move on to the next thing.

And then the next thing you gotta do is you gotta be able to demonstrate competence and produce a body of work. So if you go to gethub.com, you can open up a free account and as you’re working on things and you’re learning things, you can put them up on gethub.com and this is how you can show people what you’ve learned to do and if you’re looking to get a first job, this is a really hard one, I’ll do a whole video on this. But remember, there are four million programmers in the world today, according to my last Google search. And all four million of us had a first job. So don’t let that first job scare you, it may take some time, it may take some devotion, it may take patience. It will take all of those but you can get a first job.

Anyway, that’s a little bit about what you need to know and what you have to do.
I’m Scott with Motivated Code Pro, please like, subscribe and hit the bells so you don’t miss any videos and keep coming back.

Join the Motivated Code Pro Community

Yes, please sign me up for the MCP community.   I don't want to miss any articles or videos about advancing my software career and achieving work life balance!


Why Do Companies Hire Software Developers?

Today, I have one question. Why do companies hire software developers? I’ll bet my answer’s different than yours. Stay with me. We’ll start right now.

Why do companies hire software developers?
I think the answer usually runs along the lines of, well, we have a project backlog and we have a bunch of things to produce, somebody’s quit and we need to replace him, we have a bunch of new project work coming in and we need to address that, and that’s only half the truth.

Years ago, I was running late for work one day and I was sort of on-call. We had a thing called Programmer On Duty. I was the POD, P-O-D, and I ran into my boss’s office very apologetic, and I said, “Oh, man, I know I’m here to support our customers and the other programmers.” He stops me and he says, “Scott, Scott, you are here to make money for the company,” and he dismissed me more or less.

I left thinking about that and I’ve never forgotten that lesson because he drew a direct line between the work that I do and making money for the company and why they hire us to begin with. I want you to make that connection, too. The work that you do as a software developer is to affect the bottom line, is to make money for the company. It’s not to work in the latest framework, it’s none of that kind of stuff. I mean, those are benefits to you as a software developer and the company’s using those things for profit purposes, not because it’s the coolest, latest, sexiest thing. It’s because this is how they chose to use their technology infrastructure to make money and you are there to operate that infrastructure, so to speak, or to program it to help the company make money on your work.

In case I haven’t been clear, you’re there to make money for the company. We, as software developers, as contractors, consultants, and employees, junior, senior, CIO, and every point in between, our job is to produce and the company is going to take that work and make money for the company. That’s where we fit in and you can really see this with smaller companies. You know your work affects a specific aspect of the web, let’s say, and that’s going to allow the company to sell more, produce more, do it faster, something that affects the bottom line in a positive way, so it’s really, really important to be in touch with the fact that my work affects the bottom line. I am only there to help the company to be profitable. That’s what I want you to take away from today’s video.

I am Scott, with Motivated Code Pro. Thanks for coming. Please like and subscribe and keep coming back.

Join the Motivated Code Pro Community

Yes, please sign me up for the MCP community.   I don't want to miss any articles or videos about advancing my software career and achieving work life balance!


Do you REALLY want to work from home???

Today I want to talk about working at home. That’s the greatest thing ever, right? Stay with me, coming right up.

My name’s Scott with Motivated Code Pro, today I want to talk about the topic of working at home and how great it is, right?

People tend to fall into two categories when it comes to working at home. One is the category of I can never seem to get to my computer to get to work to begin with. I’m distracted by the garage, and the kitchen, and the floorboard that needs to be fixed, just all kinds of stuff around the house, right?

Then, in the other camp, there is the, I can never seem to get away from my computer and there’s just always so much to do, just one more thing and then I’ll get up. You know, early mornings and late nights and it just goes on and on.

So, finding work-life balance at home is tougher than you think. You have this idea that’s it going to be so great, man, I’m going to work in my pajamas or my short pants all day long. I’m going to sit out on the patio, I’m going to take advantage of the fact that I’m home.

What tends to happen is you come to where your computer is … I sit over here and work, you know I sit there and I grind all day long. I mean, I’m like at the office, this is my office, this is where I work. Days tend to be long for work at home, right? The idea of the amount of work that you need to produce tends to be amplified for work at home people, right, because you know you’re not sitting in an office so you’re mindful of the fact that people are gaging your work output in a different way. At least this is what goes through your mind and people are paying attention to you. If you miss a phone call, “Where are they?” You know, “He hasn’t responded to email, did you text him and page him?” All of this stuff that comes from working at home.

I’ve been working at home for 11 years and I’ve worked through a lot of that stuff where I know how to be connected and I know how to let people know when I’m going to be right there every moment to respond to something. You know you learn to work through those things. That’s one aspect of it.

Another really important aspect of work at home is the loneliness factor. If people are honest, after a couple of months, if you’re at home alone, working, it can be a little dry. It can get a little bit lonely. You miss the water cooler talk and the sports discussion, what we saw at the movies over the weekend, who’s doing what, just everything about the water cooler, right, at the office. So, you need to consider that. It’s not something that we think about. You know we tend to look at what we perceive is the positives and we overlook the things that are the positives about working in an office setting. So keep all that in mind as you consider.

Some people don’t have a choice, you sit there, “We have so many people in our office, we’ve had such growth, you have to work at home.” That’s one thing. Or, other people will say, “You know what? We’ve tried work at home with people, it’s been terrible. We’ve had bad luck, you need to come to the office.” So maybe you don’t have a choice in all of that. Those are some of the, I don’t know, some of the things in the work at home kind of environment.

Lots of interruptions when you work at home. You think you’re going to work un-distracted but you won’t. You know people are going to come to the door, the lawn guy or whoever is out there, your kids or your family, the people that are in and out of your house all day long. You will get to a place where you wonder, how it is I ever had a job, right? You take your dog to the vet, the kids to the doctor, you do something with your spouse, somebody’s car needs to be picked up, somebody’s stuck on the other side of town. All of this stuff just tends to be front and center when you work at home. So it’s really important to make sure the benefits of, when I go to the office, I’m there for the duration unless there’s an emergency, right?

That’s a positive aspect and a vote, let’s say, for being in an office setting. Having your freedom and being able to determine when you’re going to work is nice too but like I said, people that gravitate to the, “I can’t seem to get away from my computer” tend to get up super early, tend to work late. You know late nights and early mornings again. So a lot of things to think about.

When you go to office, you go in, you sit down, you work your eight, nine, ten hours, you pack up your computer and you go home. You might do some stuff at home but there is this very definite separation of work and home. Even if you work a little bit at home, it’s just different. I remember feeling like it was more casual. Somehow when you work at home all day long, you never get to that real casual space, I mean you can take your computer to the couch but it’s just different. That’s my experience. Yours might be different, work at home is some to experience for sure and something everybody has to make a decision about on their own.

Okay, so let’s wrap it up. There are a few things that I haven’t mentioned yet. If you work at home, you do not have to sit in traffic. Which is a big, big, big vote for working at home.

Collaborating with your peers is different when you work at home, it’s easier to walk down the hall or to cubicle across the way and talk to somebody. When you’re at home, you have to pick up the phone, or get on the chat, or arrange a phone call, or arrange a meeting, or arrange a screen share and you will spend a lot of time on screen share apps like GoToMeeting, WebEx, Join.me and there’s a host of others but you get the point. Collaboration looks different.

You’re going to miss out on all the office politics, well a lot of it anyway because something about being in the environment makes the politics of the situation come front and center and when you’re at home and you’re at a bit of a distance from that, some people get a lot of relief from that, some people really miss that. So you need to ask yourself where you are in that spectrum of need to be around the office politics and your peers a lot or you’re okay being sort of on the island and communicating through SlackChat and other forms of chat, WebEx, GoToMeeting and those things that I’ve already mentioned.

For me, in case you’re wondering, I vote to stay at home. Despite any negatives that come with being at home, you know not having to sit in traffic and all those things, it’s just way worth it for me to work here.

As a business, we have had office space and our employees came to work at an office but didn’t like doing it because every time I had to get up from my desk and drive across town and unpack my computer and set up, that was an hour of billable time or an hour of productive time.

So you can be more productive at home if you’re disciplined. It gets my vote, you have to experience for yourself. It’s not for everybody. We’ve have people come here just couldn’t, and work for us, and it was difficult for them to manage the work at home concept. They just weren’t as productive as they were when they were either here or at our office space.

Anyway, I am Scott with Motivated Code Pro, please subscribe and like and I will see you on the next video. Keep coming back.

Join the Motivated Code Pro Community

Yes, please sign me up for the MCP community.   I don't want to miss any articles or videos about advancing my software career and achieving work life balance!


Part 6 of 6 – 5 Keys To Becoming a Successful Consultant as a Software Developer

Part 6, Key 5.

Welcome to Sales and Marketing

This article was also published at simpleprogrammer.com

If you would like to read the transcript for this video, click here.

This is part 6 of a 6 part series:

This is where the reality of being a self-employed entrepreneur really sinks in. Of the five keys, this will require the most from you and take you the furthest from your comfort zone.

This is the one thing that keeps otherwise capable and talented software professionals from taking the step to becoming an independent consultant. I have spoken to many people over the years who have simply said, “I can’t sell.”

Let’s face it, if you have to risk your home and family life as you know it and everything else you’ve worked hard for up to this point, the very real possibility of being without work for periods of time can be a nonstarter.

Staying with a company you like, doing a job you love, and maintaining a lower risk in your life is not a bad thing. There is nothing wrong with that.

The word entrepreneur carries with it the connotation of glamour and success. While this is true for some, the brutal truth for all is that it is extremely hard work. Late nights, early mornings, financial risks, and abandoned personal life are a few of the better-known, though infrequently discussed, hazards of entrepreneurship.

Let me say it this way: Sometimes it sucks, and for every ounce of success, there is a pound of stress.

Being an entrepreneur is not for everyone. Taking a risk like this with your livelihood takes a close examination of who you really are at this point in your life, your tolerance for risk in general, and a super long look at the reality of your skill set in the marketplace.

Does the “suggestion” that you have at least five years of experience make perfect sense now?

Some software people choose to work for an established consultancy. This is often seen as the perfect middle ground between a traditional 9-to-5 job and being self-employed but with less risk and no requirement to “ask for the sale,” because a sales pro is likely handling that. This is a decent choice, maybe a great way to put your toe in the water. Maybe a great place to spend your career.

If you want to be an entrepreneur and self-employed as an independent software professional, then you will need to sell yourself, your services, and your company.

Like a lot of things, selling is a skill that takes time and patience, and for deeply technical people does not tend to come naturally. It has to be developed. Just like learning to code, it takes practice, practice, practice.

I think the best piece of advice I’ve ever gotten is to just be myself and to talk to prospects the way I would talk to a new friend. Ultimately, they are buying you, not some salesy version of you.

You can’t control the way prospects respond to you; some will be fun and engaging, some will be difficult, but you have total control over yourself and your response. So be yourself. It’s what you know best. It’s what you already have.

Even if you’re a bit klutzy, your sense of authenticity will come through and be easier to warm up to than a super-polished, over-rehearsed Zig Ziglar version of yourself.

With all that said, there is nothing wrong with learning as much about marketing and sales as you can—in the end, though, just be yourself as you apply the techniques and lessons you’ve learned.

Finally, when it comes to selling, at some point in the process you are going to have to ask for the sale, to say it costs x amount of money, it is going to take x long to complete, the payment terms are thus, and that you are the right person to help them. Sign here, please.

Your preparation for this moment could take weeks or months, but you need to be ready.

The most important thing to know at this point in the process is that everything is a negotiation. I mean everything. It might look something like this:

You throw out a fair number, but they say it’s high (and your throat is in your stomach).

They counter with a low number (now you have un-swallowed your throat).

You negotiate to the middle.

Sometimes, you get it just right, but other times you will hear things like, “It’s outside of the financial allocation I have for this project,” or “It’s more than I’m comfortable selling to my boss down the hall.” It could be anything, but it’s always a negotiation and you need to prepare yourself mentally for that process. You need to know what your bottom line is.

This gets to the heart of closing deals and it is something you will have to work on over time. You don’t get to close deals every day, and it is these moments that coin phrases like the closer.

These conversations need to happen in person if possible or over the phone at least. Email is not the medium to handle a serious negotiation. I say this based on real experience and real money. The value of a voice-to-voice, or preferably a face-to-face, conversation cannot be overstated.

To wrap up this section, I want to remind you that selling is a strange bedfellow for software development professionals and it takes practice, practice, and still more practice. You have to really want it.

The well is deep when it comes to marketing and selling. There are infinite resources available on the web and in books. My goal here was to scratch the surface and present the reality of sales and marketing from the perspective of a software professional who has been there, who in fact lives it every day.

Take the Leap Into Successful Consulting

Stepping into your own consultancy is a big step indeed—one to be taken with care and caution. Make sure you are ready and that the timing is right with the rest of your personal priorities.

After years of software work, it’s your skill and experience that got you here. Stay sharp and go even deeper with the software development choices that paved the way for you.

Writing for blogs and posting on social media will help keep you here. Carve out time for this activity so it becomes part of your daily business process.

Staying in touch with your software development friends and keeping your business contacts warm will keep your prospects hot for finding new work.

Good businesses function as a team. Your CPA and business attorney will keep the business end of your venture healthy and accountable.

In the end, your willingness to market and sell will not only keep you in business, but will also allow you to grow your consulting practice and thrive. You have to get paid to succeed, so your ability to ask for the sale will make you a true entrepreneur and a successful consultant as a software developer.

As I inferred at the beginning of this article, each of these five keys is a deep topic, worthy of a lot more ink than I have spilled here.

In closing, I hope you are inspired to dig deep and ask yourself the important questions about becoming a successful consultant as a software developer.

Join the Motivated Code Pro Community

Yes, please sign me up for the MCP community.   I don't want to miss any articles or videos about advancing my software career and achieving work life balance!


Part 5 of 6 – 5 Keys To Becoming a Successful Consultant as a Software Developer

Part 5, Key 4.

A Good CPA and Business Attorney

This article was also published at simpleprogrammer.com

If you would like to read the transcript for this video, click here.

This is part 5 of a 6 part series:

Think of your certified public accountant (CPA) as an integral part of your team, even if you’re a team of one. CPAs are licensed by the state or states they do business in and can help you with your local, state, and federal tax issues.

There are a number of things your CPA does or can do for you.

Your CPA:

  • Will help you select the right corporate designation: limited liability companyLLC, S corporation, C corporation, sole proprietorship—this can change for various reasons over time and your CPA will help if the time comes to change your designation.
  • Is a great source of advice when you get started; when you shrink or grow; if you struggle financially; and when you want to borrow money, purchase equipment, or make other financial decisions. Here are some questions I have asked countless times:
    • Is “x thing” deductible?
    • Should I buy this equipment now or wait until next year?
    • Based on my gross income, how much money should I set aside for taxes?
    • Based on my income, am I in a good position to hire someone at x rate of pay?
    • Should I hire this person as a W2 employee or a 1099 contractor?
  • Can support you in an Internal Revenue Service (IRS) audit or in responding to IRS inquiries (or nasty-grams). This is huge. CPAs know how to deal with the IRS in ways that you do not. Do not try to handle the IRS on your own.
  • CPAs are generally connected to people in your community who can help you with bookkeeping, banking, credit, payroll and direct deposit, 401(k), and even health care. Your CPA may not do these things themselves, but they will generally know who the right people are for a given discipline.

The time to hire a CPA is when you first start your business. Interview a few local CPAs as you’re getting started. Tell them you’re a new business owner and that they should assume you know nothing about accounting for a small business.

Unless you have an accounting degree or an actual background in accounting, do not assume that your exposure to big-company corporate accounting is going to get you through. Remember, you are a software professional, not an accountant. Don’t devote valuable time to someone else’s expertise.

Your CPA can guide you or direct you to helpful resources that will start you on the right footing from a tax and accounting standpoint and can guide you as you grow. Make sure your potential CPA is easy to access; returns phone calls, texts, and emails promptly; and is someone you like. I cannot overemphasize this point. Over time, your CPA is someone you will have a lot of contact with. If you groan every time they show up on your caller ID, you have the wrong CPA.

A business attorney is a bit more remote but still integral to your team—once more, even if the team is just you to begin with.

As a software development consultant, contractor, or freelancer,—call it what you like— you are self-employed, and as a matter of course you will submit proposals and contracts to clients, potential clients, and vendors, as well as to contract or consultative workers.

Sometimes, your clients will insist that they author the contract. The same thing might be true for your 1099 professionals and vendors. All of that is well and good, but you are not a lawyer and therefore you are not qualified to review the legalese of a contract. Your business lawyer can and should do this for you.

A few common agreements consultants need to produce or agree to:

  • NDA – nNondisclosure agreement
  • Contractor agreement
  • Subcontractor agreement
  • Intellectual property rights

In most cases, these agreements will be boilerplate or one-offs from a boilerplate so you don’t have to have these written and rewritten again and again. Having an attorney to quickly review agreements and changes asked for by your clients, vendors, and 1099 professionals is essential to your peace of mind.

To close this section, I want to remind you that you are a software professional. You are not a CPA or an attorney. Spend your time with your customers, your prospects, your software product, your blog, your social media, etc. You have plenty to do already. Leave the accounting and lawyering to the experts while you tend to your own expertise.

Join the Motivated Code Pro Community

Yes, please sign me up for the MCP community.   I don't want to miss any articles or videos about advancing my software career and achieving work life balance!


Part 4 of 6 – 5 Keys To Becoming a Successful Consultant as a Software Developer

Part 4, Key 3.

Being Able to Find Work

This article was also published at simpleprogrammer.com

If you would like to read the transcript for this video, click here.

This is part 4 of a 6 part series:

The biggest way people fail as consultants or contract programmers is in not being able to find work. Specifically, the second and subsequent contracts are harder to obtain. When someone leaves their full-time job to consult, they usually have an arrangement waiting with another company. The difficulty comes when that first contract ends.

One interesting thing about contracts that I want to share is this: I have started multiple contracts over the years that had a stated duration. Ninety days or six months, let’s say. That is not a lot of time and not something I would recommend leaving a full-time position for.

However, I have never been on a contract that lasted only the stated duration. (If you listen carefully, you can hear me knocking on wood.) My point is that contract durations are often contract starting points. There is a never a guarantee, but that is my experience and the experience of many other consultants.

Remember that contract work is designed to end. 

That is perhaps the most important statement in this article. In a sense, you are there to work yourself out of a job. With that in mind, you should have your eye on where work will come from after your current engagement ends.

Let me say it a different way: You need to look for future work and future relationships, and tend to your current relationships, your social media platforms, and yours and other blogs, or you will be out of business. Finished.

Attending user groups is a great way to meet people who work in your space and are doing more or less the same things that you are. This is where you can make friends, potentially help others, and meet people with influence and hiring ability.

Connecting with consultancies around the country that offer the same types of services you do is a great way to build valuable relationships. As you know, it’s not just finding work, it’s being able to staff that work as well. Other consultancies have this challenge, too, and will look for people like you to meet their customer needs. This is a big win-win in that you can conceivably find work and potentially have access to their resources to staff projects you might sell into.

Something to consider when working through other consultancies is that you will not get the same rate you will get from a direct client—this could be seen as a negative. The positive is that you will typically not have to wait an eternity to get paid. You are also benefiting from their sales efforts.

Working with direct customers is more profitable but harder to sell into. Also, billing with direct customers can be painful and adds another task to an already busy work life—Welcome to Accounts Receivable.

Our company has never had a problem getting paid through our consultancy relationships, but I have frequently had to make phone calls, send emails, etc. to remind our direct customers that we have not received payment.

Stay in touch with people you have worked with over the years. People move around, take new jobs, learn new skills, and may need someone like you to help with their projects, their company, and their software products. Keep your contacts warm. Phone calls, emails, lunches, and other friendly gestures are what keep these relationships alive.

You will feel the gravitational pull of your billable work trying to distract you from the road ahead. This is a dangerous trap. Yes, you need to work and bill to get paid today, but time will pass and you need to be ready for that too.

Strive for balance in tending to your present work while tending to your future possibilities as well. Contracts are built to end. Get comfortable with change. Stay connected!

Key 3 on YouTube

Join the Motivated Code Pro Community

Yes, please sign me up for the MCP community.   I don't want to miss any articles or videos about advancing my software career and achieving work life balance!


Part 3 of 6 – 5 Keys To Becoming a Successful Consultant as a Software Developer

Part 3, Key 2.

Writing for Blogs and Posting on Social Media

This article was also published at simpleprogrammer.com

If you would like to read the transcript for this video, click here.

This is part 3 of a 6 part series:

Getting your name out there is important. Writing for blogs and posting on social media are great ways to let prospects and even existing customers know who you are, what you do, and that you really know your stuff.

Taking the initiative to write also gives them a look at your ability to communicate using the written word. Despite living in a world of highly abridged communication styles via text and chat tools, being able to write effectively is incredibly valuable if you’re going to be a consultant—in my humble opinion. IMHO. 

This is good old-fashioned marketing for the modern era.

When I first started as a consultant, I wrote an article for a popular AS/400 magazine—still in paper form in those days—encouraging their audience to try Java and to try the NetBeans IDE. It was a guest post, about 500 words.

After the article was published, a company in Tennessee, not too far from where I live, contacted me with a barrage of questions related to Java. After several phone calls and a site visit, we began a nearly two-year consulting engagement that would not and could not have happened without that article.

Sometimes, writing for a blog, yours or someone else’s, feels like pouring cups of water into the ocean, but I know from experience that those tiny contributions to the sea of digital media can make a big difference to you. You never know who might be watching, who might be readin

All of the social platforms are used for business these days. As for me, I use LinkedIn, and I have a YouTube channel, a personal blog, and a Facebook business page.

I encourage you to start a blog and write for other blogs; write short articles on LinkedIn or other sites in your space; consider creating a YouTube channel where you can be helpful and informative to people who might use your services or work in your space.

Do some homework. What are successful people in your space doing to attract attention and help others?

It’s never too soon or too late to start. This is something that you should give attention to, even if you don’t consider yourself savvy on the various social platforms.

I am guilty of a decade of indifference where social media is concerned and have only recently really, really tried to get traction. And that was way after our business had been established. Don’t wait.

Think of social media and blogging as a step in trusting the process. Your hard work is never wasted. Have faith.

Social media and blogging are an investment in your future, but they are something you have to do today without assurance of a payoff—again, this is an exercise in faith. Immediate return is not the goal; creating an online presence takes time and effort without the immediacy of a paycheck. This is an investment in yourself and your business, and will ultimately help you find work and stay busy.

Join the Motivated Code Pro Community

Yes, please sign me up for the MCP community.   I don't want to miss any articles or videos about advancing my software career and achieving work life balance!


Part 2 of 6 – 5 Keys To Becoming a Successful Consultant as a Software Developer

Part 2, Key 1.

Your Skill and Experience

This article was also published at simpleprogrammer.com

If you would like to read the transcript for this video, click here.

This is part 2 of a 6 part series:

Obvious, right? We present ourselves to potential clients based on the merits of our skill and experience. I want you to have at least five years of work history in your technologies of choice before trying to sell those skills to potential customers. 

Experience is the one thing that can’t be taught or rushed. Time takes time and it is the day-to-day, mile-after-mile, step-by-step work that earns you that experience. There is no substitute for putting in the time. 

Companies that engage your services are counting on you to complete time-sensitive projects with efficiency. I know from years on the buying side of many contracts that people with at least five years of solid experience in their disciplines tend to come with robust knowledge of their chosen languages, frameworks, and technologies. They are able to resolve complex problems, work independently or on a team, and can learn new disciplines quickly.

Companies will hire you based on your experience (and your ability to sell and represent that experience), but they will also expect you to consume and apply new information very quickly.

Maybe they work in a business that is different from where you came from. Trucking instead of health care, for example, so you will need to apply your technology skills in a business setting that is new to you. You need to be mentally limber, eager to learn what is new, and quick to apply what you know.

Not only that, with all of the Java, PHP, Python, and JavaScript frameworks—not to mention the many other languages, design patterns, and the sheer number of people using them—you will definitely encounter techniques and solutions to common problems that are different than what you are used to. Fast assimilation of new things is part of the fun and also part of the challenge.

That said, there is always the temptation to wander way off course and learn something completely new and sexy. You may want to learn it because it’s getting a lot of press, because it’s the hot new thing, the technology du jour.

Pause! Stop!

Don’t do that. Wait until buying customers are engaging with that technology before you burn countless hours of your life to learn something that may not take off and therefore will not get you paid.

Remember, you are in business now. You need to make smart business choices with your talent and time. Be sensible with where you spend it; make choices based on what is going to get you paid. Period.

As for further sharpening your existing tools, it’s wise to spend at least 30 minutes every single workday pushing your skills ahead—learning a new framework, for example (maybe new to you, but tried-and-true in the marketplace), within one of your main languages. This is important and is a good investment.

I am a fan of going deeper with the skill set that is already getting you paid. For example, if you’re working in web development today, learning another popular JavaScript framework is a good idea.

Choose wisely, and if you decide to dig into something totally new, and I know some of you will, just be sure it’s a worthy investment of your time and talent. Remember: You are a business.

Skill and experience will get you paid, but time is your greatest asset. Treat it like money.

Join the Motivated Code Pro Community

Yes, please sign me up for the MCP community.   I don't want to miss any articles or videos about advancing my software career and achieving work life balance!


Part 1 of 6 – 5 Keys To Becoming a Successful Consultant as a Software Developer

Part 1 - Why I Became a Consultant

This article was also published at simpleprogrammer.com

If you would like to read the transcript for this video, click here.

This is part 1 of a 6 part series:

Part 1 – Why I Became a Consultant

Part 2, Key 1 – Your Skill and Experience

Part 3, Key 2 – Writing for Blogs and Posting on Social Media

Part 4, Key 3 – Being Able to Find work

Part 5, Key 4 – A Good CPA and Business Attorney

Part 6, Key 5 – Welcome to Sales and Marketing

When I left my chief information officer (CIO) position in 2007, I wanted to return to the purity of software development. The work of software development—programming—was my first love by a very wide margin, and after a few years as a CIO, I came to hate the day-to-day tediousness of budgeting and more budgeting, and defending that budget; performance evaluations; personnel management; endless meetings to plan and organize, and then scheduling the next round of meetings to ultimately arrange yet another series of meetings. Rinse and repeat.

In my earlier senior management days, I was ecstatic to participate in guiding the steps of the company and our department. I loved being involved in decision-making processes for software and hardware acquisition, high-level business planning, and the subsequent staffing and project development processes to ultimately meet the goals of the business. All of that was fun and exciting. For a while.

After a period of time, though, I realized that I am not the guy who can evolve completely or comfortably out of software development. I know lots of people who have happily hung up their programming duties in favor of a management position. That’s great for them, but I am not that guy.

I found that I could no longer participate in the things that advanced my career in the first place. The things that got me promoted through the ranks and to the roles that I aspired to were the very things I had to relinquish. Being a good software developer got me promoted right out of being a software developer. After a while, it just didn’t make sense to me.

I missed software development more than I liked the status, money, and responsibility that came with my nice big title. I started asking myself what I really wanted to do. I had more or less achieved what I thought was the endgame for software professionals. Heck, I was a CIO. What was left?

That was a hollow thought for quite a while. I was miserable.

By that time, I had been hiring consultants, contract programmers, freelancers—call it what you will—for years. I, too, had been in and out of contract and consulting work at times over the years.

Then it hit me. Why not consult? Why not start my own consulting and contracting business? Wasn’t that the dream in the back of my mind all along?

I got excited! I mused, I plotted, and I daydreamed: I would write code for various customers. I would help companies make good systems decisions and then I would help them create their software. I would bring my experience as a software developer and a senior manager together and help companies achieve their software and technology goals. I would have fun again! I would be great at it! They would love me!

It all made perfect sense. It seemed so simple.

Just one problem: How? And where do I start?

How and Where Do I Start?

As I thought about it, there were endless “hows” to deal with:

  • How do I stay busy enough to survive, to thrive?
  • How do I market and sell?
  • How do I close deals when I find customers?
  • How do I price my offerings?
  • How do I find additional programming resources?
  • How do I manage finance, taxation?
  • How do I handle legal issues?
  • How do I grow my company?
  • How do I manage contracts?
  • How do I stay relevant technologically?

And that is only 10 questions! I could increase this list ad infinitum.

Within each of these “how” questions are a conceivably endless list of more questions.

Gulp …

Back in 2007, when we first started our company, Pinch Hitter Solutions, there was not a ton of information on the web about how to start a software development consultancy.

I had my career as a software developer, and my experience as a senior manager and CIO. I knew what buying assets and services looked like. I was skilled as a Java and JavaScript developer and I had a ton of AS/400 and RPG experience; I knew how to write code, manage teams, and run projects.

Even with all my experience up to that point, considering the list of “how” questions above, the skills I started with were not nearly enough. Not even close.

Nevertheless, I began my journey with what I had to work with, which was really just myself. My wife and family believed in me, and my experience in corporate America was certainly helpful, but ultimately I had a lot to learn. A whole lot. And that is a vast understatement as I look back.

By the end of 2017, I began to reflect on all of the lessons I had learned in my journey as a consultant. And there had been many!

I asked myself how I could be helpful to others. What could I do for those that might be considering a walk down the same path? That would be the path of leaving a relatively stable life in corporate America to live in the wild, Wild West of consulting, contract programming, self-employment, and business ownership. And, oh yeah, marketing and sales.

Earlier this year, after a lot of thought, consideration, and research as to how I might do this, I started a blog and a YouTube channel of the same name (Motivated Code Pro—links below). Both of which were inspired and encouraged in part by the work of John Sonmez—his SimpleProgrammer.com blog and YouTube channel were extremely helpful to me.

In the interest of space and time, I have distilled a lot of experience down to just five keys that will help you become a successful software development consultant.  Stay tuned for the next article in this series.  

Join the Motivated Code Pro Community

Yes, please sign me up for the MCP community.   I don't want to miss any articles or videos about advancing my software career and achieving work life balance!


Top 10 Programming Languages for 2018 – 2019

Top 10 Programming Languages for 2018 – 2019

Top 10 programming language lists are a popular additive to the software development culture.  Each year, various sites add to and influence the collective opinion of software developers everywhere. 

I’m always excited to see what is trending and what is fading.  Since 2010 or thereabouts, JavaScript has grown to new heights both with frontend frameworks and with its addition of backend development and the inclusion of even more frameworks for the server side.

Also, since about 2014, Apple’s Objective C, for example, once extremely popular and highly sought after by employers has slipped down, and off in many cases, of the radar in favor of Swift.

Being up one year and down the next is part of the technology landscape.  Some languages sparkle then fade, some shine for decades. 

As a software lifer and long term consultant, I propose that you focus on the language or languages that are going to get you paid and keep companies seeking your skillset. 

In this article, I will present the Motivated Code Pro Top 10 programing languages for 2018 and 2019.  In addition to my list, I have included a summary of Top 10 lists from 10 other popular software related websites.


It is very interesting to see the similarities in the lists but also the differences.  I’ll leave you in suspense as to what those are and jump into the Motivated Code Pro Top 10.

Motivated Code Pro Top 10!

10 – C

C is still very widely used.  Not essential to web development but there continues to be a lot of work for C developers.   C is used for embedded systems, operating systems, development of new languages, and graphics and games. 

9 – C++

C++ is a super set of C.  A little broader audience in terms of jobs.  C++ is also used in embedded systems, games, graphics, web browsers, medical and engineering applications.

C and C++ have been used for scripting MySQL, one of the most widely used database management systems. C and C++ based software help form the backbone of various database-based enterprises, such as Google, Wikipedia, Yahoo and YouTube – to name a few.

8 – Swift

When it comes to mobile development, Swift is the first thing Apple wants developers to learn.  With Objective C on the way down in terms of popularity, Swift is said to be Objective C with out the C.  No memory management and no pointers.

Some good examples of mobile apps built with Swift: Firefox iOS, WordPress for iOS, Swift Radio – an open source radio station app, PixPic – a photo editing app – to name a few. 

7 – PHP

In existence since 1994, PHP continues to be incredibly widely used.  Big time sites like Facebook, Wikipedia, Tumblr and last but certainly not least, every WordPress site on planet earth was built with PHP.

PHP has lots of popular frameworks including Laravel, Phalcon, Symfony, CodeIgniter, Zend. 

This is a good time to add my theory about frameworks:  for every 3 problems a framework solves, it introduces 1.  Still a very good deal and certainly speeds development and helps build to a standard but not a panacea.

6 – Python

Python is generally easy to learn and incredibly flexible.  Born in 1991, Python has a design philosophy that emphasizes code readability, notably using lots of whitespace, making it easy to look at.

Python is used for web development, GUI development, scientific and numeric programming, good old fashioned business software development, and systems administration.

5 – C#

Micorosoft’s answer to Java.  What’s more though is that the Microsoft stack, including C#, .NET framework, SQL Server, Visual Studio, and Foundation Server are all beautifully integrated. 

There are tons of companies using C# and of course there are tons of jobs for C# developers, not to mention and endless list of applications built with C# and processes that will ultimately be built with C# in the future.

4 – Java

Java is one of my personal favorites and is still, by most counts, the most widely used programming language on the planet. 

Business applications, web applications, application frameworks like Spring and Hibernate, and integrated systems are just a sample of what gets done with Java.  Your refrigerator or car stereo system might be run on Java. 

There will be lots of Java jobs for the foreseeable future.  I certified as a Java Programmer with Sun Microsystems back in May of 2000 and I have never struggled to find work as a Java contractor or consultant.  That was after a fairly long career as an AS/400 RPG programmer. 

3 – JavaScript for the backend

Up until the past few years, JavaScript was thought of as an exclusively frontend language.  However, thanks to the flexibility and speed of JavaScript, it has been widely adopted via node.js as an extremely viable backend language option. 

Popular frameworks have been built for it including Express.js, LoopBack, Meteor.js, and Hapi.js to list just a small sample.  Additionally NoSQL databases like MongoDB and CouchDB  are widely used practical alternatives to traditional enterprise SQL databases. 

2 – JavaScript for the frontend

An entire post and video could be done on JavaScript frameworks both for the frontend and for the backend.  Programming with JavaScript for the frontend is pretty analogous to programming JavaScript through a framework. 

There are a lot of really good frameworks including React, Angular and its various versions, Ext JS (my personal favorite), Vue.js, Ember to list just a few from the groundswell of frontend frameworks.

You can’t go wrong with any of the frameworks listed here.  The momentum of JavaScript is unparalleled and shows no signs of slowing.  If you don’t know a JavaScript framework and you work in web development then it is time to learn one.  Even if you consider yourself more of a backend developer, you need to do this!

This is important and goes a long way toward keeping you paid. 

1 – The language you work in today!

I meant for this to be a bit counterintuitive.  I think most of us peruse these lists looking for what the rest of the world thinks is the next big thing. 

I am no exception. 

No one wants to feel like the choices they’ve made suck, rather we want to feel like the languages we’ve committed to are viable and thriving; that corporations (should be read as “customers” and “employers”) are investing in the things you have expertise in.  

On the other hand, if we determine that the world is moving away from our primary skill then we need to start learning something new immediately. 

Motivated Code Pro is devoted to improving the careers of software development professionals everywhere, with a particular emphasis on consulting and contract programming.  As such, my desire for you is to honor the language(s) you work in today by going deeper with what is getting you paid right now.  This is valuable to you and to your customers and employers. 

Don’t miss an opportunity to sharpen the skills that are already money for you. 

This is important.

At the same time, I think you should spend 30 minutes every work day with what you feel is the next skill to learn.  This is also important.  Choose just one.  Choosing multiple new languages is a fast-track to being overwhelmed.  Working on one new skill for 30 minutes a day may not seem like much but over time it will add up.  You will get better at it and you will be able to apply it successfully.

That wraps up the Motivated Code Pro Top 10. 

In this next section, I provide a brief summary of the op 10 from each of the 10 websites shown above.  I also included a relevant quote from each site that provides some insight into their thought process.

Stack Overflow

Stack Overflow's Top 10 Article

The link above takes you to the most popular technologies section of Stack Overflow’s posting but within the article as a whole there is a ton of valuable information to be consumed.  In the interest of space, time and the focus of my article, I have included just the Top 10 “Programming Scripting and Markup Languages.”  However, Stack Overflow’s list contains 25 entries on their programming, scripting and markup languages list. 

According to Stack Overflow:

For the sixth year in a row, JavaScript is the most commonly used programming language. Python has risen in the ranks, surpassing C# this year, much like it surpassed PHP last year. Python has a solid claim to being the fastest-growing major programming language.

Stack Overflow


Here is a quick look Stack Overflow's Top 10:

  1. JavaScript
  2. HTML
  3. SQL
  4. Java
  5. Bash/Shell
  6. Python
  7. C#
  8. PHP
  9. C++
  10. C

FreeCodeCamp

FreeCodeCamp's Top 10 Article

According to FreeCodeCamp:

This is not a “top hottest languages” post throwing around a bunch of names and buzzwords.


This is an objective and practical review of the current state, tendencies, and safe near-future predictions of the IT industry at the start of 2018.


It’s based on statistical data from various trusted sources and is the result of a two-week period of in-depth research.

FreeCodeCamp


Note that each entry on FreeCodeCamp’s list also provides:

  • The TIOBE Rating
  • GitHub Octoverse rating based on GitHub pull requests
  • US Salary numbers from Indeed.com
  • US and World Salary on StackOverFow

Here is a quick look at FreeCodeCamp’s Top 10.

  1. JavaScript
  2. Swift
  3. Python
  4. Java
  5. C++
  6. Ruby
  7. Rust
  8. Elixir
  9. Scala
  10. R

Hacker Noon

Hacker Noon's Top 10 Article

According to Hacker Noon:

Programming is something vast and rather individual as each developer chooses tools that are most convenient for them. However, certain languages, platforms and frameworks have claimed themselves as one of the easiest and most efficient to use. Thus we have collected for you top-10 programming languages loved by developers nowadays.

Enter your text here...

Hacker Noon


Here is a quick look at Hacker Noon’s Top 10:

  1. Python
  2. C
  3. Java
  4. C++
  5. C#
  6. R
  7. JavaScript
  8. PHP
  9. Go
  10. Swift

TIOBE Index for June 2018

TIOBE's Index's Top 10 Article

According to TIOBE:

The TIOBE Programming Community index is an indicator of the popularity of programming languages. The index is updated once a month. The ratings are based on the number of skilled engineers world-wide, courses and third party vendors. Popular search engines such as Google, Bing, Yahoo!, Wikipedia, Amazon, YouTube and Baidu are used to calculate the ratings. It is important to note that the TIOBE index is not about the best programming language or the language in which most lines of code have been written.

Tiobe



TIOBE is particularly interesting in that it includes a Top 100 programming languages, it reflects changes in popularity from month to month and year to year, additionally it includes a Very Long Term History and a Programing Language Hall of Fame.

Nevertheless, here is a quick look the TIOBE Top 10 for June 2018:

  • Java
  • C
  • C++
  • Python
  • C#
  • Visual Basic .NET
  • PHP
  • JavaScript
  • SQL
  • R

PrepAway

PrepAways' Top 10 Article

According to the PrepAway article:

This article is to make you aware of the current trend in programming languages, which language is in demand and how does know a programming language affect your prospects.

PrepAway



PrepAway also includes a level of difficulty, with 1 being the least difficult and 5 being the most difficult. 

Here is a quick look at the PrepAway Top 10:

  • Python (Difficulty 1)
  • PHP (Difficulty 2)
  • Ruby (Difficulty 2)
  • JavaScript (Difficulty 2)
  • C (Difficulty 3)
  • C# (Difficulty 3)
  • Java (Difficulty 3)
  • Objective-C (Difficulty 3)
  • SQL (Difficulty 3)
  • C++ (Difficulty 5)

TechRepublic

TechRepublic's Top 10 Article

TechRepublic’s list is interesting in that it rates not just the Top 10 programming languages, rather it rates the Top 10 programming languages and in demand skills. 

With that in mind, according to TechRepublic:

Open source has become the industry model for practical software development, and its commercial success has been driven in part by adoption from large tech companies such as IBM and Oracle. Walmart and Verizon also rely on open source programs, and host their own open source projects.

TechRepublic



Here is a quick look at TechRebublic’s Top 10 programming languages and in demand skills:

  1. Java
  2. Python
  3. Git
  4. JavaScript
  5. Node.js
  6. Docker
  7. AngularJS
  8. Jenkins
  9. Amazon Web Services (AWS)
  10. Agile

Note that only Java, Python an JavaScript are actual programming languages.   The remainder are frameworks or in demand technologies according to TechRepublic. 

gitconnected

gitconnected's Top 10 Article

According to gitconnected:

Investing your time into a language is always a risky. Of course we do it because we love it, but what makes it even better is finding real-life opportunities to use what we learned. We all wish we could learn everything, but if you focus on the languages in this list, it will ensure that you are adding tools to your skill set that will be used for years to come.

gitconnected



Here is a quick look at gitconnected’s top programming languages to learn in 2018:

  1. TypeScript
  2. Go
  3. Python
  4. Kotlin + Swift
  5. SQL
  6. Rust
  7. Elixir

InformationWeek

InformationWeek's Top 10 Article

According to InformationWeek:

While programming language popularity is fleeting, knowing how to solve algorithms will always remain one of the most important programming skills. "This is why we put such strong emphasis in learning algorithms at Coding Dojo," Misirlakis said. The languages may come and go, but the ability to problem-solve will always be in demand, he explained. "Aspiring and existing developers must learn coding’s common building blocks and ultimately become fluent in multiple languages to have the adaptability and flexibility for a successful career."

InformationWeek


Here is a quick look at InformationWeek’s 10 most in-demand programming languages of 2018:

  1. Java
  2. Python
  3. JavaScript
  4. C++
  5. C#
  6. PHP
  7. Perl
  8. Swift
  9. R
  10. Rust

Simple Programmer

Simple Programmer's Top 10 Article

According to Simple Programmer:

The market will tell you what the trending programming languages are for the future. We must be aware of the trends and watching the news and the rise of new technology so we can adjust the sails on which programming languages to learn, especially in 2018 with a lot of new things coming up.

Simple Programmer



Here is a quick look at Simple Programmer’s Top 10:

  1. JavaScript
  2. Python
  3. C#
  4. Java
  5. PHP
  6. Go
  7. Swift
  8. Rust
  9. Kotlin
  10. C & C++

Coding DoJo

Coding Dojo Top Languages Article

According to Coding Dojo:

Software development is a dynamic field. New and in-demand programming languages, frameworks and technologies can emerge, rise to fame, and then fade away in the course of a few years. Developers need to constantly be learning new skills to stay relevant.

Coding DoJo



It’s worth noting that Coding Dojo’s list is based on job postings. 

A quick look at Coding Dojo’s 7 Most In-Demand Programming Languages of 2018:

  1. Java
  2. Python
  3. JavaScript
  4. C++
  5. C#
  6. PHP
  7. Perl

**** Top 10 Matrix at a Glance

Website      

10

9

8

7

6

5

4

3

2

1

Motivated Code Pro

C

C++

Swift

PHP

Python

C#

Java

Frontend JavaScript

Backend JavaScript

Your Current Language

Stack Overflow

C

C++

PHP

C#

Python

Bash/Shell

Java

SQL

HTML

JavaScript

FreeCodeCamp

R

Scala

Elixir

Rust

Ruby

C++

Java

Python

Swift

JavaScript

Hacker Noon

Swift

Go

PHP

JavaScript

R

C#

C++

Java

C

Python

TIOBE

R

SQL

JavaScript

PHP

VB.net

C#

Python

C++

C

Java

PrepAway

C++

SQL

Objective-C

Java

C#

C

JavaScript

Ruby

PHP

Python

TechRepublic

Agile

AWS

Jenkins

Angular JS

Docker

Node.js

JavaScript

Git

Python

Java

gitconnected




Elixir

Rust

SQL

Kotlin+

Swift

Python

Go

TypeScript

InformationWeek

Rust

R

Swift

Perl

PHP

C#

C++

JavaScript

Python

Java

Simple Programmer

C & C++

Kotlin

Rust

Swift

Go

PHP

Java

C#

Python

JavaScript

Coding Dojo

 

 


Perl

PHP

C#

C++

JavaScript

Python

Java

Join the Motivated Code Pro Community

Yes, please sign me up for the MCP community.   I don't want to miss any articles or videos about advancing my software career and achieving work life balance!


Working in Crappy Code

Writing code. Most of the time, finding a reason to stay motivated with good attitude is fairly easy – or at least doable.

Crappy Code Image

There are certain times when a good attitude is challenged in a big way. This post is about one of those challenges…working in crappy code.

Here’s how it happens: You start a new job or contract and you are starting to feel a little less like the ‘New Programmer’.  You’re in a team meeting. Then it happens.  You hear a whispered voice in your ear saying, “You better hope you don’t have to work on XYZ project! That code is crap! It’s had so many hands in it, it’s impossible to maintain.” You know you’ve been told this for a reason – you’re the new person. You end up in that code base.

Today, I will talk about three topics having to do with crappy code:

  • How code becomes crappy code.
  • Looking at crappy code from a different perspective.
  • Tech tips for working in crappy code.

How Code Becomes Crappy Code

In the interest of full disclosure, I’m going to make a confession here. I had to work in code that was developed by my own team.  I was reviewing the codebase for an app designed by my company. I needed to write up a quote for a feature enhancement. As I scanned more of the classes and methods, I wanted to scream “What were we thinking??” I was in the middle of crappy code and the buck for that stopped with me. How could I have let this happen. The shame of it all.

Then it hit me. I remembered the events that occurred during the development of this particular app, which I will share as part of my confession.

We’d written a significant enterprise mobile app for a manufacturing company. The design incorporated their specific manufacturing system as the data source in the back end.  We built the server using Java and developed the iPad client using Sencha Touch.

All of the pieces of the app had fit together extremely well. We were nearly done with development and were expecting a ‘go live’ date in the near future. Instead of a ‘go live’ date, the company went through a significant change and brought in a different manufacturing system as the backbone of their data infrastructure.

The look & feel remained the same, but everything having to with data was different.You’ve seen the pit crew at work during the Indy 500, right?  Well, they had nothing on us as we re-plumbed the entire application.

 

We became app dev speed demons. We bent existing code into pretzels to work with this new database setup. We had a long way to go and a short time to get there (yes, I know that’s from Smokey and the Bandit). Code readability devolved into nothingness with each retrofitting.

Software Developer Super HeroThen we were done. We were heros! The app worked. The UX was the same. Users would never see the massive reconstruction that had taken place.  We had also accomplished something else… we created crappy code.

This true story is a perfect example of how crappy code is born. The customer thought we were heros for retrofitting their new system into the enterprise app and we sorta thought the same thing. Yet, a year later I looked at the work of heros and thought ‘What were we thinking?!’

Business decisions are seldom based on whether or not the codebase of an application will be forever stigmatized with it’s new status of crappy code. Honestly, the business side doesn’t care what the code looks like as long as the application does what they want it to do and it is done before they finish writing up the requirements, at least it can feel like that.

The CIO, dev manager and programmers care about creating crappy code, but they placate themselves by saying ‘We will come back to that when we have some down time.’  We all know that there is never a down time in software development shops. Hence, crappy code.

Looking at Crappy Code From a Different Perspective

Even crappy code was someone’s Great Idea. Every piece of code has a long history that stems from changing business requirements, changing infrastructure, user requests and bug fixes. Of course, when you first lay eyes on your assigned project that includes some crappy code, spaghetti code or whatever you want to call it, you don’t know it’s history.  You won’t know that you may be looking at the work of heros!

Of course not all crappy code has such a glorious history. Over time a codebase is affected by changing business requirements, changes in laws, sales ideas that were good (and some that went rogue), user requirements, new features and the list goes on and on. The thing to remember is the crappy code you are looking at could be the result of heros at work!

There’s opportunity in crappy code.

I’ve contracted and consulted for a long time. Many times i’ve landed feet first in crap code that was built 20 years ago by 20 different people across 20 different sets of changing requirements. I have learned to volunteer for crappy code duty for the following reasons:

  1. I’m going to learn a lot about the system. I may learn enough to quickly become a SME.
  2. I earn street cred with the project managers and other people running the business.
  3. A smile while volunteering, makes me the go to guy and that is good for my business.

I think becoming a crappy code slayer is good for your career. It increases your value and your level of expertise, both of which result in larger income numbers for you.

A word of caution:

Don’t even whisper ‘This is total crap code!’ anywhere in the shop. Never insult the code because you don’t know what it’s been through. Oh, and your project full of crappy code just might have been written by heros and one of those heros might be sitting at the desk next to yours.

Tech tips For Working in Crappy Code

Crappy Code Slayer BadgeMy advice is to:

  • Include concise comments as you are making your modifications or even when you discover the purpose of a mystery method.
  • Do your research and find out what was expected of the code and a complete picture of what will be expected of the code when you are done.
  • Find the elusive standards document, if one exists, and follow it.
  • Follow best practices so your code doesn’t become just another section of crappy code.
  • Leave lots of white space in the code, making it easier to read and work in.
  • Write your code with the thought that you may have to come back to it in a year. You don’t want to find yourself saying ‘What was I thinking!?’

People that work in crap code get better projects, along with more money as time goes on.  That’s a promise.

Your Hard Work in Software is Never Wasted

 

The year was 1989.  I was a young software developer working for a pharmaceutical distributor.  I programmed in RPGII and RPGIII at the time on an IBM AS/400 computer system.  Some of you historians will know of the AS/400 and the RPG programing language.  At the time I felt like the luckiest guy on the planet.  The AS/400 was hot stuff and would only get hotter through the 1990s.

In those earliest of AS/400 days, IBM had yet to build a decent search function into their basic database file utility.

I decided to see if I could build it myself – which, by the way, was way, way beyond my programming ability at the time.

After lots of trial and error in the form of blood, sweat and swearing, practice-practice-practice, and literally banging my head on the desk a few times, I showed the basic concept to my co-workers and they thought it was a great idea.  I felt super smart to have thought of it and to have gotten it as far as I had at that point.   I decided I would cash in on this amazing concept and soon-to-be software product.   I would start a company, sell software to the masses and ride off into the sunset.  (spoiler alert – it didn’t quite happen like that)

I spent every night and weekend on this project for about 5 months – that was on top of my day job and young family, including two very small children.

When it was finally done enough to share with the world, I placed an ad for my new software product in a trade magazine called “Data Network News.”  The software tool was called “HotKey400.”

I got a PO box and a business checking account for my freshly minted start-up so I could receive the many checks I would soon be cashing.   I had this fantasy that after the ad hit, I would open up the PO box and it would be stuffed with checks.  STUFFED with checks… can you imagine?

Well…after the ad hit, I waited about a week and when I finally walked into the post office, my heart pounding with excitement, exhilaration, stress and anticipation…

I put the key in, I opened the door and… NOTHING.  Nothing, nothing, nothing!  But two pieces of advertisement from the magazine my ad was placed with.   NOOOO!!

I was devastated.  All that hard work and no checks.  I was pretty green at the time and did not appreciate that people don’t just see an ad for software and pull out their credit cards and checkbooks.  No, they want to talk to you first – at least they did in those days, but that’s a whole other thought for a future post.

I had committed to the ad for a number of months and ultimately it did generate some interest.   Still, almost zero money made.

My first lesson in the software business was that while I might know a little about writing software, I knew absolutely nothing about marketing and selling software.

Fast forward to May of 1990 –

I got a call from a recruiter and after some discussion (coercion you might say) I decided to at least consider going on an interview with a fairly well known company in our town.  I wasn’t the least bit excited about it and I frankly did not want to go meet these people.  I had a decent job and plus I was still stinging from my recent entrepreneurial failure.

I got some pretty good advice from a coworker-become-friend who said, “hey, if you go on this interview you might find out you have a pretty good deal right here.  You have nothing to lose and besides, you never know what they might have for you.”

Ok, so I went on the interview.

I sat with two ladies who grilled me rigorously for at least a solid hour.   Midway through the interview it occurred to me that had it not been for the software I had recently built, there was simply no way I could have answered most of these questions.

Toward the end of the interview I shared my story about the software product, the hard work, the long hours, the ad in the magazine.  I wasn’t sure I should share such a thing, especially since it seemed like such a failure, but they seemed impressed.  That was the first time it occurred to me that maybe this software thing wasn’t the failure I had come to judge it as.

The women left the room and returned pretty quick with an on-the-spot job offer.  I was shocked.  They asked what it would take?  I threw out a number.  They agreed.  Done!  Wow.  I’m still amazed at that, even now.  This was not a fly-by-the-seat-of-your-pants company so I felt pretty special.

After sleeping on it, I accepted the position and for the next 3 years, they presented me with technical challenges and complexities that I never would have had the opportunity to work with in those early days of my career had it not been for this “failed” software product.

In 1993 my family and I left the state in hopes of stretching our dollars a bit further but it was a hard, hard decision to leave that company after what had happened there for me.

Looking back at my corporate career since then, this was easily the most impactful stop along the way, up to and including my CIO job which I held for 4 years between 2003 and early 2007.  Each stop along the way bringing more and different challenges, each of which had, in some small way, their roots in that piece of software, which I no longer thought of as “failed software.”

Fast forward to May of 2012 –

It had been 19 years since I left that company and 5 years since we started our own business as a software company and consultancy (another story for a different blog post) where we eventually consulted and did contract programming work for companies around the country.  See phs4j.com for more info.

In 2012 our salesman was actively prospecting for new customers and came to see me one day with an interesting lead.  He said, “I was talking to a company called x (the company I worked for in 1990-1993, which was half way across the country from where we are) and they have need for a mobile app…”

I said, “wow, no kidding!?!? I used to work there…”

After several months and the usual series of phone calls, proposals, negotiations and a visit to their site, we started what became a very long term contract that kept 4-5 people from our team busy for 4 years.   That was a big win for our company and ultimately all of it was possible because:

a) I had worked there in the early 1990s and there were people there that still remembered me.

And b) most importantly, this customer engagement had its roots in that failed piece of software from all those years ago!

Moral of the story – Your Hard Work in Software is Never Wasted.

There are always exceptions to stories like this and I have a few of my own but in the end, hard work is never wasted, if only for the lessons we learn that we can pass along to someone else.  That’s what its all about for me so when I get discouraged, overworked, tired and stressed out – too many late nights and early mornings – I think of this story and others like it for a boost and I try to remember my hard work is never in vane.  It is taking me someplace and probably to a better place than I had initially planned and hoped for.  And so it was with HotKey400 – that failed piece of software.

Scott Salisbury, Motivated Code Pro

Scott Salisbury is the creator of motivationalcodepro.com and the Managing Partner of Pinch Hitter Solutions, Inc – a software development consultancy focused on Java and Sencha ExtJS.  
See Pinch Hitter Solutions at phs4j.com.  
See my youtube channel at Motivated Code Pro.

 

5 Common Misconceptions About Becoming a Software Developer

 

5 Common Misconceptions About Becoming a Software Developer

Continue reading