I'll probably never be the best in the field...

I don't know how to start this but here goes.

I've been "using" Linux for over 10 years, possibly more and I still feel like I'm nowhere

where I should be. I'll be fair most of my time was spent either figuring out how

to run games on *nix at the time but as I got older and "wiser" I started learning
more about it. I do credit my dad for opening up the world of *nix to me as
he was more of a networks type of guy.

Long story short, I was blessed with a job working with Unix systems; Solaris & IBM i series.
I'm able to get tasks from my senior fairly done without much questioning from him I still feel
I'm light years behind, I don't know why but it seems that's so much more than #echo "hello world".

I guess I'm just venting, this is my first sysadmin job ever and, it was a huge jump from
being in tech support for a year and half. A few times I surprised my senior but, I don't know...
feels like I'm missing something.

Hello samthewildone,

I am getting strong feeling from your post that you are looking for *NIX learning, if yes, then:
IMHO, we all should follow famous quote:

You are on right place, this is one of the GREAT forum which I have come across. We have different forums(shell scripting, languages etc etc). Please go to HOME PAGE and you will see all sub forums there, go inside them 1 by 1 and you could learn real time prblems there. OR if you are a lover of Documentations then we have man page sections too where you can go through all command's manual entry and then you could go to forums and read already existing posts and could learn from them.

Trust me when I joined here I didn't know even ls command, today also I am learning but now at least I know few things and it is all because of UNIX.com.

Do and start reading here. And if you have timings issues(like most of the time I have, office, personal things etc) then also try to grab time in between and do something, make AIM of learning a new command daily(at least 1 command) and evaluate yourself after a month or so and keep doing this until you becoe expert 1 day. I am pretty sure anyone in this world who does HARD WORK it will always be a success.

Our best wishes are with you.

Thanks,
R. Singh

Well, I don't fully understand your background from your post, but I call tell you my views on mastering technology and I have been applying UNIX/Linux technology in real-world applications since the mid 1980s until now. I coded this morning over a coffee.

First, it is important to understand there are two basic approaches, top down and bottom up and a lot of people get stuck in one or the other approach, but the key to success is to combine both together.

Top Down:

This is basically learning and understanding theory, high level concepts, overall system architectures (and standards), and all the "less than hands" knowledge. This could also include a number of classes and tutorials in "theory".

Bottoms Up:

This is the realm of the hands-on approach where we actually build working systems and applications. This is also taught in universities and in the educational system in general in "lab work"and other assignments where you apply your knowledge to solve a real-world problem your teacher gave you.

So having said that, I can tell you that while both are very important, I consider the "bottoms up" approach to be the most valuable (by a long shot) in terms of really accelerating your knowledge and skills. I mean really, think about; you can watch 100 YouTube videos on downhill skiing or motorcycle racing and that is all good knowledge, but you will never be a great skier or motorcycle racer. However, you can become a great skier or racer and never watch a single YT video or have a single "How to Ski" or "Motorcycle Racing 101" certification.

For me, I have been writing software for real-world applications all my life; and I am currently well on my way to mastering Vue.js over the past 30 days. Let me tell you how I did it.

  • First of all, I watched a lot of YouTube video tutorials (months ago before "going in"). This was before I ever coded my view Vue.js application.
  • Then, I started coding some simple Vue.js applications and installed Vue.js apps that others had built.
  • Then, I found a template for a very large Vue.js application I liked (after weeks of research), and I started to modify the components for a real-world project.
  • Then, I started writing my own components.
  • Then, I started optimizing my code, rewriting all the things which "worked" but as I learned Vue.js I realized there were better ways to do things, or I simply "realized" based on past experience how to improve things.
  • I still watch a YouTube video every day or so and refresh on theory or learn some subtle variance.
  • Now, I'm getting very close to mastering Vue.js at the intermediate level (in around 30 days). I am very comfortable with Vue.js these days (and absolutely love creating in Vue.js).

Now, going back four decades, my first UNIX project, with zero prior UNIX training was to interface a Chicago-based radio manufacturers production line test equipment (all HP) with our HP-UX servers and record all test results in a (Progress) database. This was on a full production system where the company would lose huge sums of money if the production line was down for an hour. I learned the UNIX shell, vi, and UNIX IPCs, system programming, Rocky Mountain Basic (RMB, the language I had to use to get HP-UX to talk to the HP test gear), network communications, client-server coding on UNIX, and more with zero prior hands on UNIX background. I did have experience in computers, and of course had a EE degree, so I was no dummy at the time. HP engineers in Mountain View told me I was the first person they knew of that used the HP-UX shared memory features of RMB to work a in real-world HP-UX app (many decades ago) and so I ended up teaching HP system engineers how to use their own RMB system calls in a real-world app.

So, for my entire career, from pre university to post grad to professional life, in every step, I have coded logic on computers to build solutions to problems. From the TRS-80 to the Amiga, to the C-64 to HP-UX, to Solaris, ATT (3B2s), AIX, Linux and more, more, more. I think I have worked on (or at least examined the code or logged in to) most types of (but not all) UNIX system at least once in my life. All my work was on some "tech of the time". I have being told by many that I have forgotten more tech than most people know, LOL. So, let me tell you this:

The way to master technology is to build working applications that solve real-world problems. You must write code. Code is the language of information technology; and people who do not write code solving real-world problems are "posers', like the consultants who never code but try to tell us how to secure a server or admin a system. There are people who pose as experts, for example, cybersecurity experts, who have never been a real-world cyber attack where they had to defend against hackers in real-time. Imagine that! In fact, the entire industry is pregnant with these posers. I would venture to say that some very high percentage of "cybersecurity experts" on LinkedIn have never written a single line of defensive code, and even far less have ever been hands-on in a real-time cyber-battle. I have written millions of lines of code in my life, and nearly all of it was "not based on some standard or theory or certification" and almost none of it was "not very pretty" but it got the job done during an emergency / situational crisis.

Instead of telling you story after story of what I have coded and why (it's mind boggling, actually), let me tell you this:

Anytime you examine code written by others before you, you will see things that could be written better.

Everyone who writes code does this under some constraint, time, money or both. No one has the luxury in the real-world to write perfectly beautiful code which meets all standards and would make his software-engineering professor proud. Companies do not pay for perfection and "pretty", in general. Code evolves based on the need. It starts out messy, in general, and is optimized as time and resources permit (if it ever does).

I code real-world projects everyday. My code can always be improved. But I have to decide what is the "critical path" and often optimizing code is not the best use of time, but then again, when I have time, I go back and optimize. I did this just this morning, and eliminated a single AJAX network call to a REST API because I dreamed that it needed to be done and woke up with solution in mind, made a coffee, fired up my development environment, and re-coded a working solution (I wrote a few weeks ago) to eliminate a slow network call and optimize the user experience. Actually, I laid the groundwork (in code) for this yesterday, optimizing a back-end PHP MySQL method.

SO CODE.

Create a project and code it. Dream of a project and do it.

If your work does not permit that, then code your own project at home. If you can't think of a project, then join a volunteer project and code for someone else.

CODE. CODE. CODE.

Coding is fun. It is a great way to express yourself, creatively and artistically, from a digital and logical perspective. Coding is good for the brain. Just don't forget to go outside and get some exercise and enjoy the non-coding world.

Just do it.

And never forget, there are around 100 billion stars in a single galaxy and you have around 100 billion neurons in your brain; so your brain has as many neurons as a galaxy has stars - and that is not including the connections between your brain's neurons! Wow. Think about the gift you have between your ears! Each one of us has this amazing "expensive" living, biological computing creation between our own ears! It's true!

Just use it and enjoy!

Life is a GIFT and a blessing!

Don't get hung up on dogma and belief systems, traditions and social memes, just enjoy your 100 billion neurons and use them wisely every day of your life, in whatever you choose to do.

5 Likes

Hi Neo...
Brilliant!

Hi samthewildon...
(Apologies for typos, etc...)

I back everything Neo has said.
I am an amateur coder, I do it as a serious hobby, but when I first started coding it was on a Sinclair Spectrum using its default BASIC.
I had a Sharp MZ80K before that but its BASIC was convoluted, and initially put me off coding entirely.
However Sinclair BASIC was idiot proof, syntax errors were impossible as any line with one could not be entered directly or into a _script_.
This meant any errors were coding ones, mine and mine alone.

As an electronics engineer I decided to write a testcard program for the Spectrum, it took me a while but by trial and error I learnt things like, simple loops and decision statements. I wrote other testing snippets too for my professional work.
Well although it wasn't perfect it worked and this is what got me into hammering hardware, because drawing in the Spectrum's border was very, very limited in BASIC.
So I decided to learn Z80 assembly, I was told this was FAST, and it was a revelation. I bought a commercial assembly compiler, (by HiSoft).
It turned out that because of learning BASIC, Z80 assembly coding became second nature; and, the result being I started drawing inside the border crosshatch lines and colour bars.
This transformed my testcard and became my standard, FREE CRT alignment tool until I got my AMIGA which got me into ANSI C, a language I don't use much at all now.

I STILL code in BASIC in various platforms for quick and dirty stuff, as proof of concept for an idea.

I have coded serious stuff for the AMIGA, including an AudioScope with a full non-standard GUI which is probably my best piece of work and that was finished in 2001.
I was proficient in Python and a few other languages and all but abandoned them now in preference to UNIX shell scripting, although even after 6 years I am still only scratching at its surface as it is SOOO flexible.
When I joined in Jan 2013 I bragged about doing an AudioScope in text-mode shell scripting and it is still going on here, six years later.

SO, find something that you are interested in that requires software and start learning, words like mutable, immutable will appear in your vocabulary which I didn't know 15 years ago until I started with python. Python is a powerful language and has a library for just about EVERYTHING you need coding wise.

My pet love is coding stuff that a language was not designed to do and I have gotten the shell to do lots. I am now considering doing AudioScope in 'dash' but that might be a step too far with my POSIX compliance knowledge at present.

You do not need a maths and/or computer science doctorate, just an accepting mind and the ability to logically create code, BUT, most of all, patience and LOTS of practice.

Bazza...

4 Likes

Much has already been said - mostly by Neo in his passionate post - so i will concentrate on some minor points:

You are right - but a working understanding of math principles certainly will help. In fact i got the most education about programming from Don Knuths famous "TAOCP", The Art of Computer Programming. It is a heavily mathematical book and may be "love at third sight", but i guarantee you that it will change your life as a programmer forever.

Also notice that Knuth says it is an "art" - not a science, not a trade. In fact - like any art - it is a trade at the base like masonry is at the base of sculpting. But this trade is, as the apprentice ascends to journeyman and finally to master - transcended into the realm of the artistic. The words "technics", "technical", etc. come from the greek word τέχνη ("techne"), which means "art". We should do accordingly.

Art seems like breaking every rule and in some respect it certainly is. But at the basis art is something completely different. The apprentice learns rules like iron laws - obey them or else! Once the apprentice has learned all the rules he becomes a journeyman. The journeyman knows all the rules and can skillfully apply them. He knows and understands that sometimes the rules seemingly contradict each other and can weigh their relevance against each other. With increasing understanding a "feeling" for what is "right" (or "correct" or "good", ...) develops and the journeyman ascends to the level of master. The master still follows the rules - not their extrinsic expression any more but their innate meaning. He might find ways to obey a certain rule in a deeper sense by contradicting it on a perfunctory level. Knowing how to do that - and do it for the desired effect - first needs the perfect understanding of the rules he is ignoring at some particular point. You "throw away the ladder" - but only after you used it to climb over and above it.

"CODE, CODE, CODE", as Neo suggested is very sound advice. Not because the world needs more code but because the world needs more good coders - especially to replace all the bad code that is already in place. The more you learn and exercise the application of the rules the faster your eye will develop that hard to describe "understanding of good versus bad" code.

There was an experiment about learning: they showed professional airplane pilots a picture of a cockpit in mid-flight for a very short time (2s) and asked them to tell if the plane was in trouble or not. Guess what, it is impossible to really read all the hundreds of displays in that time but still the pilots did it with a stunning rate of precision. They were not trained for that but they developed - simply by practice - the ability to discern what "looked good" from what "looked bad". This is called "pattern learning". An experienced programmer can tell you similarly at one glance if the program is written poorly or written well. He might not know if it contains some syntax error, but he will be able to judge the "overall structure" and with astonishing precision.

Sometimes you will come across old and wise UNIX guys (unlike me, i am only old) who will tell you this or this is "not UNIX-like" or "doesn't seem quite right" or something such. Listen to them. It is hard to explain these feelings like the pilots would have a hard time explaining why they thought something is wrong with the plane.

Finally, a last advice: learning from the masters only means copying them at first. Learning from the masters means using what they can teach you (so, yes, start by copying them) to form your own finally. Mozart didn't become Mozart by composing the same way Haydn or Bach did. In fact he did compose quite similar to these two in the beginning but then used what he learned to form his own genuine and singular style.

I hope this helps.

bakunin

2 Likes

Actually, coding is great for the human mind. Coding teaches people to think logically and is beneficial for human development in many ways and here are just a few examples:

  • Coding teaches people to think logically in a step-by-step way.
  • Coding teaches people to break large problems down into smaller components.
  • Coding teaches people how to organization large complex problems.
  • Coding teaches and reinforces math and language skills.
  • Coding facilitates creative thought.

Of course there are more benefits for coders than in the small bullet list above. I am talking about writing code to solve a real world problem, not just small exercises and theory. The skills developed by coding real-world projects are skills which can be used in every walk of life and in most all careers. Coding is just digital art, not very different than any art or literature. Coding is something to feel good about. Coders are modern day artists.

I want to push back strongly on any negative view of "coders" with a somewhat relevant (but maybe not, LOL) story from my past on Wall Street.

In and around 1997, I worked as a very senior cybersecurity consultant for many clients including banks on Wall Street. I lived in the Northern Virginia area and flew up and back from NY to the DC area a few times a week, sometimes in very scary seasonal weather.

One spring day as I recall, I was called to immediately fly up to NY because a major bank (one of my clients) was in the newspaper for a "fat client crypto breach" and I was called into the bank to help the bank address and fix the problem.

When I arrived, many people were yelling and the stress level was very high. The managers had assembled many department heads and team members into a smallish room and they were waiting for me around the table; and of course there were the normal "what took you so long to get here" comments from bank vice presidents so familiar when doing business in NYC.

At the whiteboard, I asked people around the table to describe the problem and I white-boarded the system architecture, step-by-step, as they all chimed in, some shy to speak up.

This brainstorming and analysis went on and on, with me at the whiteboard, for about 3 hours as I recall as we detailed the code and the various crypto algos on the board. There was some debate about how to proceed because of "the bad code" (as some people like to say), and so I asked the bank "Do you have the phone number of the original coder? If so, let's call and talk to him right now".

We got him on the speaker phone (he was no longer with the bank as I recall) and I asked him if he was under pressure to get the code out quickly and what was the process at that time and what would he do different if he had to do it over again. He told us he was under great pressure by management to get the code out and it was certainly far from perfect and could (and should) be better and he agreed with me that a new set of underlying crypto libs were the best solution. Everyone in the room was happy, understood the problem, their roles in the solution, and the tension and stress level went from a 10++ to a 3 and everyone then knew what they had to do.

After the meeting, one of the bank VPs pulled me aside in the hallway outside the meeting room door, and I thought he was going to compliment me on my great team building and problem solving skills. Wow! Surprise! I was wrong!

The VP told me that is was obvious that I knew early on what the solution was and he was very unhappy I wasted the banks precious time and money "team building" and "getting buy-in" and ripped me a new one.

However, I knew in my heart that they would call me back often, and they did, and they paid us big bucks. The bank quickly solved the crypto issue and all was good on Wall Street, at least for a few hours. The bank issued a press release, the fix was done by the next day. When they are yelling at you in NYC, that means they like you. It's when they don't talk to you or yell at you is when you should worry.

My point is, if there is a point to my word in a forum, as I mentioned in my earlier post, is that commercial code is generally written under heavy constraints. Sometimes it is a time constraint or a money constraint. Sometimes people are being yelled at by managers to get the app out ASAP and are being threatened to be fired if they don't get the code done yesterday. (I can tell stories about game programmers in Japan I knew personally living under their desks for months at a time because they could not go home or they would lose their job. They were not permitted to even shower.).

I learned a long, long time ago to never look at code before me and judge it as "bad code" because we generally do not know the constraints the prior coder was working under. In Japan, game programmers live under their desks for months to meet deadlines. They are exceptions of course, but few people create "bad code" on purpose with malicious intent (except the bad actors who write malicious code, of course).

Code is code and real commercial code is written for real applications in real commercial production systems where time and money rule, generally speaking. Very few coders have the luxury to write 'elegant code' which is 'pretty' and 'nice' or 'meeting perfect standards' and nor is most commercially code 'perfectly optimized' because businesses have time and resource constraints, and after getting one app out the door, they are directed or required to write another app, and have it done yesterday. Businesses do not code for the sake of coding

I have never considered myself a great coder but I have a lot of commercial code running over the years that solves real-world problems and some might call it all "bad code" but I could care less. I do not write code for theory or to please others, or to meet some standard set by others, I write code to solve real world problems and to create real applications. I don't write code for the sake of writing code.

If anyone wants to code, I have a lot of great project to work on but they all require modern software tools and libs like Vue. js and Javascript, GitHub and Postman, and even though I use VI every day of my life, most of my code is written in an IDE like Visual Studio Code (actually in VSC) and I test all API calls using tools like Postman; and tend to use modern tools because they make us very productive and very fast developers.

For everyone who writes web-based code and apps, I recommend you download and install, at least:

  • Visual Studio Code
  • Postman

Most mornings I open the following workspaces with my fresh brewed coffee:

  • Virtual Desktop 1: Four command line terminals in a single screen in a 2 x 2 matrix.
  • Virtual Desktop 2: One large terminal window, full screen size.
  • Virtual Desktop 3: Visual Studio Code
  • Virtual Desktop 4: Postman
  • Virtual Desktop 5: Chrome (browser)
  • Virtual Desktop 6. GitHub

Well, I'm done talking for now... :slight_smile: .

I might guess everything I just wrote is not very useful, but at least I remembered and told a story Wall Street story from 22 years ago.

Cheers.

2 Likes

@NEO

Thanks so much for pouring out your heart, the passion came through.

I believe my issue is not focusing on one thing at a time. End up getting caught up with the new
technologies like bitcoin, cloud and so on. They're nice but not what I'm really passionate about.
It's almost as if I feel I'm going to miss out on some big market. (Microsoft BOOM)

I know another one of my issues is rushing through, trying to get that quick dopamine hit when
I figured out a problem. It's like I've become the product of societies instant gratification

and easily give up when there's serious resistance. I wouldn't say I'm lazy because
if I really want to learn something I put in the time to learn.

I'm also a fan of the "bottom up" approach as reading about theories all day
makes jack a dull admin.

I have to find balance as I'm 28 and, life is already finite as it is now.

Again, thanks responding. You'll be seeing me around.

--- Post updated at 01:41 AM ---

Woah...

Brother, I enjoy your life experiences stories. I almost feel like I'm there with you especially,
the Wall Street war experience.

Code is indeed the language of information technology. Also getting something to

work in the commercial world is more important than elegant design.

That comes later in the term "refinement".

You just made my night a good one to remember.

2 Likes

You did a good job to hit the nail on the head and this is the problem of the vast majority of techies, especially the younger generation(s). That is why it is important to use a project-based approach so you will pick the technologies and tools and go from start to finish. In general, I am very blessed and I do not have this problem (the shiny object problem) and can and I am razor focused when working on a project, but I realize this is in the " minority report" and most people suffer from "chase the shiny object" lifestyle.

This is a tough one, and I can only say that there are a lot of people just like you. I meet them ALL the time. For example, over the years so many people want to work with me on building some new tech. They have all this great passion for helping out and working on a project until they come to realize how much work it really is, how much they must learn, and how much concentration and focus it takes.

Recently someone came to me eager to learn and, not even a few days in teaching them step-by-step, they started chasing a very different "shiny object" . They got all passionate about this new shiny object, informed me they were going to dive into that new shiny object, then they stopped working on our project and found another shiny object within a few days or a week or two at most. It's normal for people to do this and you must get yourself grounded by finishing what you start.

Also, at least two people were working with me in 2017 and 2018 and we were discussing the technical approach (two different major coding projects) and in each case they kept moving from shiny object to shiny object, talking this and that technology and after many months, in two complete separate scenarios, neither had written a single line of useful, working production code. I had written thousands of lines of working code. They has written zero lines. Oh well, that's par for the course. Like I have implied, it's easy to "talk the walk" but "walking the talk" is a totally different ballgame.

Anyway, I need to get back to writing code and so I'll keep this reply short. Let me leave you with this thought.

I used to "ride the top of the wave" surfing from one new tech wave to the next, with near perfect timing. Then, I took off work and stopped coding for about 4 years (I forgot how many exactly, maybe it was three, and did a lot of travel, scuba diving and "playboy'ing around: ) and getting back up to speed was really painful. I was way behind; but now (after nearly two years after getting heavily back into it) I'm nearly back on top of the wave again and it feels great.

When you are riding the top of the tech waves, smoothly moving from one big tech wave to another, it is a great feeling. But, as you point out, it is not easy and requires a lot of work and dedication. You must be in the "water" to stay on top of the "wave".

Don't try to be "the best" just be the best you can be, yourself and do not worry about what others say. Most people just talk and criticize others and are resistant to change and are envious of others. I know this for a fact and yes, it saddens me that people are like this, but we can't change human nature nor control how others think. We can only control what we think and do, and so do not worry about dogma, belief systems, and other "mind prisons" and mental traps, which there are many.

You have a galaxy of 100 billion stars between your ears and while the world is poisoned with distractions and people trying to manipulate your mind for their benefits (advertising, dogma, belief system, influence, etc.) you can and do have a lot of control over those 100 billion neurons, despite all the distractions and pollution in the social and cognitive spaces..

Go for it!

Thank you so much for the response.

Puts a lot of things in perspective coming from someone who's seen it firsthand.

I think from here on out, I need to focus on my responsibilities in the office. I work
with a lot of solid tech here, from AIX, Solaris and eventually RHEL.

I'm really weak in networking as it didn't appeal to my younger self but, working
with systems it's crucial skill. I will have to dedicate time to learning networking
and fine tune my unix administration skills. We have lots of tools and services
which tie all systems together, somehow.

For now, all side projects and ventures will have to be put on hold because
with only 24hours in a day, I cannot dedicate it all just to learning. I have to
experiences the joys of being a human. One thing that I stopped, following tech
content about new tech... This helps me to focus only on what matters now.

Thanks again for your advise.