Computer Science…Hey Did You Know it’s a Science?Because Most Developers Don’t

Ugh! Yup, I’m starting with that. Now before I tear into this post, I want to set the record straight and give some context so people don’t mis-interpret things and jump to baseless opinions without knowing all the facts.

People are too quick to jump to conclusions these days and usually end up looking like an idiot because they are unable to have a intelligent conversation based on facts.

Me, well I’m also human, and as such, it’s in my nature to the be imperfect (is anything really perfect anyway?). I think they call this tendency to be imperfect ‘human nature’, which oddly enough makes perfect sense. (I’ll be damned, so there is something ‘perfect’ after all…neato!)

Well as my imperfect self has gone this past year and a half trying to improve my intellect and polish up my programming skills that I barely even had 2 decades ago when I was starting college. I was absolutely positive I was going to be a software developer, at 18 I had already been ‘programming’ in some form for 5 years.

But as life often goes: plans change, opportunities arise and if your lucky enough you’ll meet ‘the one’ in the process.

After having my mid-life crisis of 2017, which I’m calling a crisis because of the magnitude of the events that it took to trigger a life altering change. I made the decision to stop settling. I also completely turned our world up side down, walked away from a business that I was with 15 years (owned 10) and decided to ‘go back to school’ (of hard knocks).

Yup, I was determined that I could make more, and was worth more than the $5/hr I was making as a business owner after taxes. Being an entrepreneur that needed to start putting in 100+ hours a week just to keep equipment working more than sucks. The gear was about a year past the time it should have been replaced but we we’re debt free & my body was starting to show significant signs of wear from 15 years of repetitive potion.

I’m definitely not the best business owner by any means. Not even close, I sucked at it actually. I did know enough though that the risk of investing another $50k in equipment didn’t compute when I didn’t even know how much longer my body was going to ‘allow’ me to work.

So I bailed.

Oh, I just had this perfect mental image of what people must think that entails: Me just throwing my hands in the air. Sating F*ck it. Then walk away.

I guess it’s funny because that’s what actually happened but to think about how people must think that I just lost my mind and ran away never to return.

In some ways I did lose my mind, but somehow or another losing ‘that’ mind triggered a sense of clarity. I really felt like I ‘woke up’. They say stress can do some weird things to your body and they level of stress last year was beyond comprehension. I’m still trying to wrap my head around how I didn’t die from trying to work like that.

So yeah, with my newly acquired ‘clarity’ in tow, I decided to try be a software developer. I often like telling people that I run into that I’m doing software engineering instead of software development because it sounds more prestigious. (Employers also think so because ‘software engineering’ jobs will pay more than ‘software developer’ jobs even though they’re one in the same).

Personally, I like to consider my self a developer. Engineering is just what you do to put together a concept you have developed. I like to think of it in terms of art.

A ‘developer’ plays a more creative role by taking a conceptual concept, drawing it up and visualizing how the software should interact with the user. I like this idea of a developer being more along the lines of an artist.

A ‘engineer’ takes that drawing and breaks it down into little pieces while in figuring out how to break the logic down to it’s most basic form. The goal being to engineer a way to make all those pieces that you drew fit back together.

–left over text of partial thoughts I had when writing last 3 paragraphs: “breaking it down into them up creative and artistic. The engineer side of it is to figure out how the pieces you drew fit. “

I’ve always had a interest in certain artistic forms. I love music, been playing the guitar more off than on the past 22 years(Definitely more on this past year though). I also really dig computer graphics and the ability to have a idea in your head, then be able to tell this machine some instructions to create a working, functioning ‘thing’ is bad ass. Creating something from nothing is always a good feeling.

I guess everything, not just art is created from nothing but the enjoyment and satisfaction of seeing a project come to life never gets old.

So after 800+ words am I ready to start the conversation about my blog post? We’ll no, not quite yet. The reason for the back story is that in my 22 year hiatus, I’ve missed a lot.

It’s common knowledge that the tech industry move lightning quick. I guess any industry needs to be quick to adapt to change and must constantly stay up to date with current trends if they hope to remain relative. While that is a good summarization of how leaders of industry got to be leaders; the level of such rapid adaption to changing trends that’s required in the tech world is nuts.

You take a week of you’ll be dead. (Holy shit, the Megadeth song with that exact lyric came on just after I wrote that line)

I took roughly 22 years off. So I knew I wasn’t just going to get right back into it and start whipping out apps. I knew I’d need at least a year to ‘study’ up and build up a portfolio of material and projects. The goal being able to make myself marketable to those individuals that are in the position to hire me as a software engineer.

Honestly a year was wishful thinking. I have yet to figure out a realistic idea of when I’ll be returning to the ‘work force’ but I sense it’s getting closer. Katie really wishes I had more than a ‘sense’ as to when I’ll be able to contribute again. A fact that isn’t lost on me & this time off to better my self has had some real costs. Both physically, emotionally and financially.

What’s the point of all this yip-yap? I’m getting there I promise.

I just wanted to make it clear that, as far as real world experience in the field. Technically I have none. So opinions I have about the state of things are just that: OPINIONS.

That’s my asterisks: * I have an strong opinion about a industry that I have no ‘real world’ experience in. Anything that I may gripe about may or may not be a valid point. Also, if someone strongly disagrees, I would ask you to stay calm, look at the source. Breathe. Then come at me with a compelling argument of sorts. Me being that human I am, I can change my mind about something provided it makes more sense than my original stance on the subject.

I’m learning something new everyday. Everyone should at least try to do that. If someone disagrees with that, I’m really eager to hear what points you may have in what would be your very logical argument. Sarcasm aside, as I’ve said, people are free to change there minds and often do after they see the whole picture or get all the facts more facts than they had when they took there original position.

People can be too quick to judge a person as being ‘two faced’ or a ‘hypocrite’ because that may changed their stance on a topic. What should be done instead is maybe a little bit of praise and acknowledgement. Why you ask? Because in my mind it shows that the person has grown and took a hard look at their position and admitted to themselves and everyone that, yes, they were wrong at first, but after taking more time to think about the subject they were able to come to develop a stronger reasoning for their decision.

Your free to have an opinion, but if you change your mind at any time…well, you better have a very good reason to explain the change. That’s something that requires more serious thought and self reflection of ones believes because it comes with the added risk of making yourself look bad on both sides of the fence.

Something to keep in mind the next time you hear of someone changing there mind about a subject. Instead of the usual scolding and put downs people tend to give. Give a thumbs up, high-five or just say: ‘hey, good job thinking critically about your stance and realizing after you gathered more facts, you made a mistake in judgement. Congratulations on being a decent open minded individual!’

Now that the truth is out that I’ve got no real-world development experience, what now?

Sure I’ve been working with computers most of my life. I’ve learned more this past year than I’ve learned the previous 20. I can write code in a number of different languages and just this past week I finally saw something through, from concept to completion of a idea I had about hardware virtualization.

I got a server running virtualization software that’s powering 2 virtual work stations for Katie and I, with each one having 3 monitors. Oh, and it’s also running about 5 other servers with in the hypervisor to provide services to the network.

Did I mention all that’s running on one physical server! I’ve been working on that for almost 2 months and I still have a hard time with the shear awesomeness of that. I have a harder time trying to explain the awesomeness to people though.

So, yeah, I can do some shit now. Trouble is how to you show what you know to a potential employer without a degree. (I really believe, that given that lightning quick pace of the industry that a 4 year college can, in some cases as everyone’s different, not be as beneficial as people are led to believe.

As long as you thing very logically about problem solving, you stand a chance. I like to think that is actually one of my few strong points. Thinking that would be enough to get me caught up to the current state of software development across the board exposes one of my weak points: vastly underestimating the time required for certain tasks.

I’ve spent this past year cramming & I feel like I should of had more to show for it by now. So why don’t I? Is it purely just a matter of being more than slightly deficient in time management?

We’ll, there was an ‘X’ factor at play.

I know, your saying “Geez Brandon, I’ve gotta read almost 2,000 words for you to tell me that there’s some mysterious ‘X’ factor. What the Hell man?”

I say to you: ‘Yes you did have to read all that brain dump, but not really, you could of just scrolled to the end or skimmed like most people. I wouldn’t of known.

One last heads up: This post has been relatively neutral and mild mannered up to this point. Probably because I just wanted to give some background and let people know to take what I have to say with a grain of salt if you must.

Now that that’s done, it’s time to unleash my real feelings.

Your probably going to have to move this to your personal blog

Oh yes, the dreaded ‘X’ factor. Well it doesn’t stand for ‘eXcellent’ or ‘eXtraordinary’. Nope, it stands for SuX ‘eXcrement’…you know as in shit.

That’s how I see the current state of the software industry…Wait, why did I decide to switch careers? Oh yeah, I like making things and being creative. Too bad it’s so hard to learn proper methods and best practices when the state of documentation for what seems like every piece of software is often just an after thought.

Whats the big issue with this? Well I leads to the behavior of basing your knowledge on ‘assumptions’ because much of documentation of a given software development tool is often way too ambiguous. Really any level of ambiguity is too much.

This leads me to the title of the post: It’s called COMPUTER SCIENCE people! Can we at least pretend to treat it like a science and have explicit documentation that doesn’t obfuscate and often leave you with definitions that could be taken at least two different ways. In reality only one way is the right way and it’s up to you, the helpless growing engineer to use your decoder ring to figure out which way the author intended you to use a function. This author has only left you with a vague 1 line description that causes more questions than it answers.

Now, me being semi-reasonable understand that there are an infinite number of hardware and software configurations out there and developers aren’t going to document every possible use case.

I’m talking about more fundamental things. Even just simple shit like a mis-spelling, while minor by itself, can cause a definition of a function to take on two meanings if that spelling or grammar error is in just the right spot.

You would think that would be a rare situation and that type of situation has got to be 1 in a million. Yeah, you may think so, but that is not the reality we live in.

My frustration has been boiling over because I’m running into little nuances of ambiguity through out almost everything I read. You throw what can be a very technical, difficult subject of computer science and sprinkle some un-needed complexities into the mix, just because of what really amounts to laziness, that’s enough to drive someone mad.

If you a developer, you have to admit the level of laziness is some areas of development is staggering.

Why else would there be so many posts on StackOverflow with a users offering a solution to a question that is… wait for it….not based on logic but by the number of keystrokes they had to enter. I even found reference in a book I was reading this summer by a well known / respected developer make mention of the amount of key strokes and to do the other method that would result in less typing.

Speaking of hypocrites: I’ve already typed way too much about that whole topic on my personal blog, which you can check out here, but it still leaves me dumbfounded that that’s the first thing that comes to peoples minds over actual functionality.

Literally mind blow. Then everyone wonders why there are constant security breaches and peoples information is constantly falling into the hands of bad actors.

I read a recap and analysis of the events that lead up-to, caused and what transpired after the Gitlab site was brought down by a series of mis-fortunate events. Yes, they got flooded with traffic that started to wreak havoc, but the one line the stood out like a bolt of lightning was the line that referred to some documentation being vague caused confusion about a configuration and a system administrator started to wipe out the main user database because of entering the command in the wrong server!

What?!

Mind you Gitlab is a repository for software projects.

These users lost some of their data because documentation was vuage. Yeah it was a bad situation, but they made it so much worse by doing that. Yeah, I feel bad for the system admin who entered that command and how he quickly relized he wiped out over 300GBs of user’s data. That had to suck. I probably would of thrown up knowing I caused that kind of damage.

So what happens? I mean it sounded like the whole point of the report was to isolate the issues they had and to make sure something of that magnitude never happens again.

But what I saw & read was a brief note about some vague documentation and that was it. I don’t remember reading if that was in there ‘solution’ to make sure there operations are more secure moving forward.

No, it felt like an afterthought. It’s always an afterthought.

I’m to the point where I’m almost starting to think I’m going crazy because it’s like I’m the only one who sees it. I know I’m going a little crazy, but that kind of crazy would be lock Brandon up in a padded room crazy because he’s having delusions.

At least I have Katie to talk to and ask her if I’m way of base of if something is actually written poorly to the point where it could be interpreted 2 different ways.

She usually see’s what I’m talking about, even if she doesn’t understand the subject matter. That’s fine. Because this usually just comes down to a matter of grade school level English that these ‘hipster dipsters’ can’t manage that results in the added confusion to something that’s suppose to achieve the opposite. Because I was pretty sure documentation is suppose to explain usage, and be abundantly clear on how to use something, whether it’s your microwave or a REST API.

Maybe I’m hyper sensitive to it now, because I’ve dealt with so much outdated, mis-information and just flat out wrong information this past year of trying to learn & better my self. It really is frustrating to spend countless hours trying to not just learn material, but learn a subject matter in which you need to decide what information you need to learn is the correct information before knowing about the information.

I think the best analogy I came up with just now is this:

Picture taking a math course, a slightly more difficult one than algebra. Let pick trigonometry. OK, your trying to learn trig.

Now picture your self in a class room at a desk, with no teach and 3 books in front of you.

The first on is filled with a bunch of opinions on the best way to calculate some cosine function. The accepted answer in this text said method ‘A’ is the way to go, but then you realize that that was posted 4 years ago.

Which they way the ‘trig’ industry moves, you know that there may be a more recent answer to the question. You continue reading on. You get 2 posts down as see a user has posted something 6 months ago and already more people have agreed that it’s the correct answer rather than the post that was made 4 years ago. It’s also so new that your unsure if the answer will work with your ‘version of trig’

I know the whole ‘trig’ as a software or service is ridiculous, I’m merely trying to highlight the absurdness of it’s really like.

Continuing on, you realize you have 2 more book, & this one has left you with more questions that you had initially.

The second book is labeled ‘Official Documentation’, you also ask your self why you didn’t open this first.

Upon opening, your present with instructions on how to work with the version of trig you have, great. They start out by saying you must prepend every command with a certain prefix. OK, good enough. You see there are 5 steps. As you read through you see that the first four are indeed preppended with the prefix that was stated should be applied to ‘every’ command, but on the 5th step, they don’t include it. Why?

Is it because one of the following?

  • A simple over sight? But that seems lazy, I mean they even styled the font like all the other examples, how could they miss that?
  • There testing you. They want to make sure you prepend ‘every’ command with the given prefix & if you don’t there will be hell to pay. Not really, you just wont be included in their club because you didn’t pass the test.But would they really be like that? That really does seem like a stretch, but the benefit of the doubt you do give.
  • They know it’s there but they are able to create software, for you to ‘try’ to install but do not have the skills to update/edit what amount to some simple HTML. This means they are either lazy, assholes or both. None of which are very flattering
  • I got nothing else and I’m done trying to make excuses for them.

Now this is a relatively minor offense and most system administrators would catch it in a second. I did. But why didn’t they catch it? At the very least it brings the confidence level down a couple notches for the software or services they may offer.

Also, why is it acceptable to by everyone to just chose to close over it, enter the correct command when installing never mentioning it to the company that they have a syntax error on there ‘official installation’ page.

This ‘one’ instance is no big deal. But it’s not just one. It’s this one, on top of that other vague one.

These little mis-information instances I think show a deeper issue of just being complacent and not caring that this is…a SCIENCE.

I just keep coming back to that because when I was in school way back when, that’s what it was called.

Guess what, it’s still called that. It’s just now no one treats it like such.

And what happens. Well these machines have a funny thing about them in that they’ll only do what you tell them to do.(
although I guess AI is changing that…a topic for another week)

Not telling the computer the right command at the right time can & does result in bugs. These bugs lead to back doors being open. There doors are what all your personal data flies out of everyday into the hands of the people only concerned with making a buck by means of exploiting / black mailing you with your data they now posses.

Hey, I did warn that I was going to get dark.

I’m gonna leave it here. This, like most of my rants when I get going just spews out of me and before I know it I have a novel.

Comment with your take, option or any feedback really. Good or bad, as long as it’s honest I can accept negative feedback.

Oh, I forgot to finish my ‘hypothetical’ situation story…

That third book on your desk for the version of ‘trig’ you have…yeah, it was for a version 6 years ago that doen’t apply to you at all. It’s still there are an option for you to chose though. Just like Google will show results for software installation configurations from 6 years ago over the current accepted method released this year because…my only guess is they’re to busy mining your personal information to figure out when & where to place the next ad in front of your eyeballs. Yup, no time left to clean up what’s turned into a garbage search engine.

 

Misc left over text from brain-dump, proof read later when my eyes are more than 10% open.

Still have a couple edits to make but I wanted to get this posted.

Both side have become complacent.
outage that happened in 2017

because there fingers hurt and they couldn’t type more than what they did.

got a concept I had and saw it through a , I got a server running virtualization software that’s powering a 2 virtual work stations, each with 3 monitors. Oh, and it’s also running about 5 other servers with in hypervisor.

that would eventually make me a prospect for a software engineering position

The small amount of time I worked with computers during that time doesn’t equate to much, but learning how to code at a younger age definitely helped instill critical thinking skills necessary when developing / engineering software.

The 2 roles are played by that schizophrenic you call you.

Leave a Reply

Your email address will not be published. Required fields are marked *