Categories
Business Life Programming

Software As A Career

If you’re not in computers for a living in 2021, you’re nuts. It’s fun. It will improve your life (if you let it). And, it’s pretty dang recession proof. I’ve repeated these words countless times over the years and, in some of those questions, am often asked how to get started. So, I figured I’d sit down and write a quick "how to" page to help the people I care about tap into this world.

Step 1: Use Technology Daily
As generic or corny as it may sound, the world of computers is not something you can simply do or be in. It needs to be a part of your life. Those of us who are any good actually enjoy using technology and naturally make it part of our lives. We don’t need to decide or push ourselves to use technology. It’s just part of us and what we enjoy. Now, while I know there are many people out there who are intimidated by technology. Being intimidated is not the same as not enjoying it. You just need to find that hook… that part you actually do enjoy. Once you realize how common the various concepts are, from one widget to the next, more than likely, technology will become an intimate part of your world as well.

So, why is this first step so important? Simply put, the more you enjoy something the easier it will be… the more naturally you will gravitate to it. For example, as you use different cell phones, from different manufacturers, you will begin to notice similarities. As you move from cell phones to smart devices you will notice how similar those two worlds are. Tablets and laptops expand those device abilities even further. My point is that all of these devices basically work the same way. The more use use different devices, on a regular basis, the more organic your understanding about how they function will become. This is what makes technology "second nature" for many of us.

Computer Parts

Step 2: Build A Computer
Many of us these days just buy the cutest or shiniest laptop and call it a day. However, buying a prebuilt machine prevents you from knowing anything about what’s inside of the box. This is the same as buying a car without knowing how an engine works. And while that ignorance might be fine with your vehicle, you are probably not wanting to earn an income from your vehicle.

PCs for Dummies

Step 3: Read A Book
Let’s face it, there’s a reason book stores don’t exist anymore. Nobody reads. I know I would rather watch a video than spend 10 times as long reading a book on the same topic. However, in this case, there is one book I cannot recommend you read enough… PCs for Dummies! Don’t worry. It has lots of jokes, big fonts, and pictures. More importantly, it also has foundational information that most people skip over when they are first getting started in computers. This foundational knowledge is critical if you want to actually be good at what you are about to undertake.

Celel Center

Step 4: Take A Job in Technical Support
Have you ever called "tech support" and had someone reset your password or help you figure out how to make your printer work? That kid who answered the phone is referred to as "first line" or "first level" and is one step above "clueless"… just like you are at this point. Chances are he helped his mom install her cable modem once or twice before getting this job. Well, this kid need to become your pal… your co-worker. After your brain is overloaded with basics of making your computer work, you will have just enough knowledge to understand the terminology and help other clueless people fumble their way through logging into some company web site somewhere. So, hop onto one of the job boards (Monster, Indeed, Career Builder, etc.) and look for a job in a call center as a "First Level Technical Support Agent" (or similar pee-on title).

But, Fred, I don’t know enough to teach someone! Yes, you do. First-level call center jobs assume you’re clueless and are setup to teach you how to use their in-house software or system. Most of the time they will give you a script so you don’t need to worry about "winging it." The biggest perk is that they are filled with countless pre-pubescent know-it-all teenagers who are all too happy to show you what they know.

Support Level 1

Support Level 2

Support Level 3

Support Manager

Step 5: Start Writing Code … ANY CODE!
There’s no correct time to start building software. You just need to do it. By tackling the steps in the order outlined here, by this point you should be in an office environment, have regular access to a computer, have a few of them at home, and have the foundation you need to get started. You will have also been in the computer world long enough to know what a "language" is and have a inkling of what is being used in your world. For example, you may be in a company that uses Microsoft Excel or Access in their daily workflow. You may have a club or interest that needs a web site. Or, you may want to start a blog. The bottom line is that, by this point, you will probably find a need for something basic that needs to be created. You don’t have to quit your tech support job. Just spend some time after hours, at lunch, or on the weekends creating something from scratch. It may sound a bit generic, but, by the time you get to this step, you absolutely will know the difference between these pieces and have some idea of what you want to create. The key word here: create!

Possible Detour: Network Administrator
One tempting fork in the road, after your put in a year or two at the call center, is working with the actual hardware or networking gear. This is definitely a small detour I encourage to anyone who really wants to pursue any career in computers or software. In the same way that building a computer helped you understand how it works, working directly with many computers, in a network setting, or making them talk to each other, is a great way of learning how they communicate and gaining an understanding of what these beautiful boxes can do when they start communicating with each other. Or, even better, if you’re in a corporate setting, you will probably be able to land a job helping users face-to-face with their hardware. So, after your time in the call center, consider spending a year or two as a Network Administrator. You will gain a certain amount of empathy for end users here and become very familiar with concepts like "single points of failure" or what happens when companies decide to implement policies poorly.

Network Admin Level 1

Network Admin Level 2

Network Admin Level 3

Network Admin Level 4

Network Admin Level 5

Possible Direction: Network Engineer
There are two basic "forks in the road" when it comes to more senior paths in computers. For now, just think of them as "hardware vs software". Hardware geeks can make a ton of money working with the actual devices that make computers and networks talk to each other. This is a natural path if you find yourself enjoying the "Network Administrator" role we talked about in the last section. It can be a great living for someone who enjoys problem solving or working closely with the hardware itself. I spent time in this world and worked for some really cool companies… Sprint, Nextel, AT&T, several banks, a semiconductor company, etc… and am grateful for the time I spent "under the hood." Having a solid understanding of this end of the spectrum has really helped me over the years. Many software developers just know how to make the graphics on this computer screen do something without really understanding what’s happening behind the scenes. If you have both, then you’re golden.

Network Engineer Level 1

Network Engineer Level 2

Network Engineer Level 3

Network Engineer Level 4

Network Engineer Level 5

Step 6: Boot Camp
At this point you either want to stay in networking, making computers work together, or you want to come hang out with us cool kids actually creating something. Neither choice is correct. At this point we need to start building on your foundational knowledge and get you some education! Countless online and physical companies exist that will take you though a "boot camp" level course and teach you the basics of programming. These generally take a few months to complete and will give you a massive amount of knowledge in a very short amount of time. These are good for folks that have the ability to work and attend semi formal training sessions. Another avenue are online companies (Pluralsight, Cloud Guru, etc.) which offer self paced video tutorials that you follow along with and get your feet wet in developing software. Regardless of which you choose, these courses will teach you how to use the tools of the trade. The best part is that you will end up creating a few applications and, along the way, gain an understanding of how they work internally.

Step 7: Support Developer
Remember that tech support position you had a year or so ago? Well, it’s time to get another one. However, this time, you’ll be looking for bugs in software that some team of software developers created. Since software developers generally love creating new apps, and since fixing bugs in their older apps would not nearly be as fun or exciting, they need someone like you to dig through lines of software code (known as "syntax") and find the cause of their bugs. Basically, you’ll get paid to break things or figure out why they are broken. And, while this is technically another "first line" job, just like the tech support gig, it’s several steps up from that other role. Plus, now you’re actually part of a team helping create software!

Support Developer

Step 8 & Beyond: Software Developer
By this point you’ve gone from tinkering to actually becoming part of a team responsible for creating software. After spending some time in a Support Developer role, you will eventually be asked to create something knew. You’ve clearly seen what screw ups were made to cause problems. And, so, you know what not to do as you create new applications. The bottom line is that you will continue to progress from the Support role as your skills develop. As time goes on, people will consider you the more "senior" person with a certain skill or technology. You’ll be on autopilot by now.

Developer Level 1

Developer Level 2

Developer Level 3

Developer Level 4

Developer Level 5

Developer Level 6

Categories
Business Hobbies Life

FAQ – Development

Why do I write code? That question, and many others, answered here …

How long have you been programming?
Can’t believe I’m about to say this, but going on 39 years (38 professionally). This all started back in 1981 because of a pompous jerk who insulted my dad. One of my older sisters visited with her boyfriend. While getting to know our dad, he mentioned how my father "would not understand" how great it was that he sat in an air-conditioned office all day "programming." That Christmas, my parents gave me a Heathkit "kit" computer and I was on my way. I learned how to solder, build the computer, and started learning how to program. Admittedly, at first I wasn’t actually competing with the guy. However, a year or so later, he ended up buying a simple video game from me so he could resell it. The lil’ shopping spree which followed had me hooked. The thought of someone giving me money for something I actually enjoyed doing was a high. The fact that this egotistical oaf paid for it was simply icing on the cake.

So, why are you still writing code?
That "high" I mentioned above has never gone away. The act of breathing life into an idea, and seeing someone actually enjoy using it, will never get old. Some guys come home from work and turn a wrench as a hobby. Fortunately, I found a way to make a living with my hobby. There’s also something thrilling about brainstorming and building something with a team. In keeping with the "turning wrenches" analogy, it’s like working with a team to build a race car. Everyone has ideas and visions. There’s no real "winning" or "losing" within the team. You may be changing a tire one day or working on aerodynamics the next. That collaborate effort… the occasional pressures and accomplishments… it’s an amazing feeling almost every day.

What types of applications do you create?
Although they’re not as glamorous as an "Angry Birds" game, I prefer creating line-of-business ("LOB") solutions. In short, these are the culmination of creating multiple "apps," services, and databases to provide a much more significant "system" or "solution". This type of effort also involves the creation of many utilities and processes (both manual and automated). I find these most enjoyable because they are directly responsible for allowing a company or organization to either overcome a hurdle or improve their business overall. They’re also chock full of countless opportunities for accomplishments. For example, delivering an improved user interface often means actually improving the way a group of people perform their job. Seeing the happiness in an end user’s face is incredibly rewarding. Even the unseen widgets one must create along the way are rewarding. Every time you implement a piece you are able to improve a process, increase reliability, decrease operating costs, or in some other way make the overall solution better. In short, this type of solution is almost a never-ending path of challenges and accomplishments. And, above all, the amount you learn about the company or industry, along the way, is invigorating. It’s almost like you’re watching a glowing "power meter" increase above your head.

Do you prefer back-end or front-end?
Both. While I realize there are people who mainly want to write pretty UI’s and others who prefer never looking at anything but text, I don’t think I would truly be happy in a position where I must always do one or the other. Even if my initial responsibility on a team is one end or the other, there are countless leaning opportunities when you jump into whatever that other area may be. For example, digging into the data helps you understand the "bigger picture" and business needs. This translates to being able ensure the middle layers work more intelligently and that usually allows you to trim out what the front end needs to worry about. Likewise, working with the front-end, and listening to feedback from users, allows you to optimize the user experience and build an app that people will actually enjoy using.

What is your favorite role in a team?
There’s an old saying, "Lead, follow, or get out of the way." Let’s face it, I’ve been writing code longer than many of my teammates have been alive. I’ve run teams, architected products, built and sold companies, invented patented technologies, etc., etc., etc. However, none of those past experiences mean I am all-knowing or that I’m the greatest whatever. Every team is different. Every person is different. And, let’s face it, the technologies we used when I started are long gone. Heck, the technologies we used five years ago are virtually dead. What my 40’ish years have given me are experiences in a wide breadth of technologies, concepts, tools, and lessons learned. It’s also given me a solid belief that the best role for any person is one where they are both capable and needed. If the team needs me to act as a BA, work with the business, and write documents, then be it. If we need someone to analyze CPU and memory footprints to squeeze the last drop of performance out of a process or database query, then I will happily be there. Like I said, just having a seat at the table with your team, and participating in breathing life into that overall solution, is such a rewarding experience that the role or title itself if irrelevant.

How do you remain current?
After being asked this one a few times, I started using it when I interview people… mainly to determine what type of worker a person will be. Are they a "9 to 5’er"? Are they a geek? Or, are they just chasing a six-figure paycheck? While there are some useful "go to" sites or blogs that you may find out about when asking this question, however what I am generally looking for is how wide-reaching their resource list may be. There’s not a "correct" answer to this question. If people are genuinely in this field because they enjoy the technology, then there’s a almost a permanent "feed" of knowledge. It’s almost as natural as breathing.

Do you prefer technology X vs Y?
This is another one of those loaded questions. Granted, it’s a valid question, but it is one which cannot be answered correctly without knowing the context. Not every tool fits every scenario. And it’s not all about comfort either. What you are comfortable with today is not necessarily what you were comfortable with, or proficient in, two years ago. Now, there are reasons why I may choose one technology over another. For example, if I am working with an established team, then we need to think of their strengths and the amount of time required to "ramp up" with a certain technology or pattern. Finances are also a concern in most cases. Everything from the cost of licensing software, to purchasing or maintaining hardware, to the cost of finding or keeping qualified developers is a variable. Software develop is not free nor is it instantaneous. Bottom line is that there is not one "correct" technology.


Have a question I didn’t cover here? Shoot me a note at: fred.lackey@gmail.com

Categories
Life

Tell Them You’re Grateful

Every once in a while I end up sending a message to someone that probably makes them feel a bit uncomfortable. Someone noticed a message I sent to a friend this past week and said, "You really sent that? Isn’t that a bit gay?" (It was to a guy.) It wasn’t anything special… just a message letting them know how much I appreciate them and that I’m glad our paths crossed.

The way I look at it, life is simply too short, and people are often far too self-conscious, that they never end up admitting to anyone else when they really do feel good about them. And I don’t mean some cliché "copy n paste" chain mail. I’m talking about genuinely telling them how you feel. At most, people talk about the person in a eulogy after they’ve passed.

If you stop and think about it, there are several people in our lives who have made a positive impact. It may be your wife, a friend, a relative, a co-worker. Heck, it may even be some waitress in some late-night diner. Regardless, stop and pause for just 30 seconds to genuinely reflect on how they have positively impacted your life. Then, muster the courage and actually TELL them. If you need to, then even admit you feel awkward with what you’re about to say. The important part is that you actually tell them.

Don’t wait until it’s too late. If someone has positively impacted your life, take a moment to let them know. It may be the one thing that brings a smile to their day. Personally, if they have improved your life, I feel they deserve to know.