DEV Community

Cover image for Why Learning to Program is Easier Now, But Also Way Harder Than Before

Why Learning to Program is Easier Now, But Also Way Harder Than Before

sahra 💫 on July 21, 2023

Learning to program in the recent years has gotten significantly easier, but one could also say it's gotten quite harder as well. Hear me out. In ...
Collapse
 
gtanyware profile image
Graham Trott

I started programming about 50 years ago, in 8-bit assembler. No operating system or network in those days and everything was hand-built. Was it easier? Well, yes and no. What we were doing was building the foundations most of today's world rests on. By comparison, the work of today seems more like jamming Lego blocks together than real programming. Everything seems designed to prevent mistakes and avoid the need for any any truly creative input, but that takes all the fun out of it. To me it feels like a straitjacket so I'm glad I'm safely into retirement and able do things the way I want rather than have to slavishly follow endless, forever-changing rules and procedures.

Collapse
 
danbailey profile image
Dan Bailey

I've used the "Lego blocks" analogy before, too. I feel like it holds up -- under certain conditions. I feel like "Lego blocks" programmers generally are building things with "rough edges" (you may or may not see at first look). The Lego analogy works in that a Lego model looks similar to a McLaren or a Ferrari, but it's just a rough approximation thereof. The more refined Lego gets with their parts over time the better the car looks.

Lego blocks programmers are making approximations of websites. I bet that the really good sites, under the hood (to continue with more car analogies), are less Lego and more custom parts holding everything together.

Collapse
 
ingosteinke profile image
Ingo Steinke, web developer • Edited

Maybe that's the essential difference between programming and development. The latter is less technological and more pragmatic, following economic considerations like 80/20 principle instead of overengineering and perfectionism where it does not make sense anymore. (I understand your point that micro-optimization does make sense in low-level programming.) All of this leaves more room for another kind of creativity, on a visual and aesthetic level for example.

Extending the car discussion, the lego block analogy feels a bit off. Modern cars don't look edgy and pixelated when zooming in, but they aren't hand-crafted like a Ford T-model but put together using a lot of standard components built by third parties.

Thread Thread
 
gtanyware profile image
Graham Trott

That's the problem with analogies - they are never exact. If they were they wouldn't be analogies :-)

Collapse
 
sarahokolo profile image
sahra 💫

Yeah, you just gave it the most accurate description "Jamming lego blocks together". These days it's just about knowing how to use a specific tool perfectly in context (lego blocks). Although learning to program in those days might have required a much higher level of technical understanding, I would imagine there wasn't really any real confusion on what it was you needed to learn about compared to today.

Collapse
 
gtanyware profile image
Graham Trott

Thanks for that. I'm concious how easy it would be for me to sound complacent from my safe lofty perch in retirement, and I have no intention of dissing the undoubted talents of the young programmers of today. But then I was never really a programmer; I started as an engineer and just drifted into coding with the advent of the microprocessor. To me, a programmer is someone who follows programs and knows how to persuade a computer to do the same, whereas an engineer is somebody who makes things work, if necessary by breaking virtually every rule in the book save one - Occam's Razor, being to look for simplicity wherever possible. My approach to coding works for me but it irritates most programmers, who see me as an unpredictable iconoclast. From which you may safely conclude that my career had its ups and downs.

Collapse
 
gusmagnago profile image
Gustavo Magnago

I understand your point here, but it ms the same of saying that the wash/dryer machine takes the fun part of cleaning the clothes that should be a analogical work to be done by hands. I couldn’t be working with such a tough task like binaries and building stuff like you did because I am only 34y old and I can work the way things work today. So I am really glad (not ironically) that super smart people like you came before to help me to achieve my dream to work with engineering. The lego blocks were heavy and huge before, but now they are spread out into a million of pieces and into points cloud. So my goal is to become smart as you are and help the newbies to understand those new small lego blocks and create something helpful to make life easier.

Collapse
 
gtanyware profile image
Graham Trott

I think it's true that as well as the nature of programming having changed, so has the kind of people that go into it. In the "old days", people - including myself - were hackers (in the positive sense of the word) because the rules were yet to be written. Such people still exist but they don't cope well with the discipline required for mainstream programming. The introduction of modern techniques has opened up the field to a wider cohort such as yourself, with a broader range of skills. The price to pay for this is the need to be multidisciplinary, covering languages, frameworks, testing, build tools and more. All but the first of these were almost unknown in the early days of the microprocessor, so we were able to focus on coding. The systems we built were simpler than those which followed, so we also had to look after ergonomics (how well the product fits consumer needs) rather than that being decided elsewhere.

I'm happy to remain a fossil and let the real work be done by younger and better-adapted people. There's still plenty of space for hacking; although it generally doesn't pay well it's as much fun as it ever was.

Collapse
 
jesusantguerrero profile image
Jesus Guerrero

With all the information around and all the stacks is easy to think that you need to learn them all before entering to the field but that's not the case.

With a plan a newbie will be good after html, css and js (Fetch, Promises, Design Patterns) choose any frontend framework, git. After getting a entry level job and that let it guide you. After that with the foundations you just need to read documentation to get a new tool because if we focus in the current web development stack we will be lost.

Collapse
 
sarahokolo profile image
sahra 💫

Well yeah you would think so, but when it comes to actually getting the job with those skills alone, it would take some bit of luck. Here is what a typical junior level job requirements looks like nowadays

Junior level job requirements

Collapse
 
ravavyr profile image
Ravavyr

yea, but what that job description really says is

"We need someone who's used bootstrap with tailwind before to make a website go live. We also heard React's what all the cool kids use nowadays, so please have that skill too. Oh and use github so you don't lose our code."

As an applicant, i'd only harp on that skillset, since that's all they really need. The rest is nonsense fluff written by someone who doesn't understand what their website is and/or does.

Thread Thread
 
respect17 profile image
Kudzai Murimi

Point! Thanks

Collapse
 
ingosteinke profile image
Ingo Steinke, web developer

Looking back on my experience as a web-developer since the 1990s, I can only acknowledge sahra's perspective. While the web is still built on the same simple and robust foundation technologies, both the local development stack and the typical libraries and frameworks have changed a lot and everything has become more complex and there are more alternatives, which is a good thing, but it can be overwhelming not only for junior developers, but also for companies and their recruiting departments.

"Are we overcomplicating the development process with all of these new adoptions and supposedly helper tools? and when exactly does it get all unnecessarily too much?"

This is a question that we should ask ourselves before and while starting a new project. Sometimes it's the best choice to go for a framework / library / stack that has been popular for several years, which is still actively developed, and where it's easy to find developers and start working together quickly in new teams. Sometimes it isn't.

Personal projects are a good use case for experimenting. I built my personal portfolio site using 11ty, and I might give ClassicPress a chance as an alternative to WordPress for a small side project. But I might still choose React or Vue for a corporate project where I will have to onboard an collaborate with developers that I have never worked with before.

Collapse
 
efpage profile image
Eckehard • Edited

"Are we overcomplicating the development process with all of these new adoptions and supposedly helper tools? and when exactly does it get all unnecessarily too much?"

Part of the problem is, that it is so easy to reinvent the wheel today. Things would be much easier, if people tried to use the standards we already have. But everybody needs to introduce an new language along with their new tool. As much as I like Svelte, but they needed to introduce - among a pile of other things - #if and #each. So you find yourself in a code, that uses Javascript, but a few lines later you need a different syntax to do the same thing in Svelte-style. Javascript already knows more than enough ways to write a loop, like for, for...in, for...of, while, .map, .forEach., .filter, .reduce,... just to name some.

For me, this feels much like the situation we had in the 80´s, when every programmer tried to build a user interface without any standards (and often no good knowledge about how to build interfaces). I once used a program in which we counted 7 different ways to input values in an edit fields, and the user had to remember, which page used which method. It was kind of a "graphical user interface", but you had to navigate using CTRL-codes. Each page used different codes, so it was virtually impossible to use the program, as you had to look into the manuals to find the right code.

This is pretty much what we see today: Every little toolbox introduces a new set of commands, regardless if it is a big framwork or simply a small addon.

Collapse
 
pavelee profile image
Paweł Ciosek

I fell the same overwhelming feeling being behind. It so annoying that I decided to stick react and next.js stack and do not even bother about other things. I can’t handle more 😣

Collapse
 
sarahokolo profile image
sahra 💫

Honestly, shutting your mind from all the rave out there and just picking the things that are actually necessary to learn for the job you want to do is essential.

Collapse
 
starswan profile image
Stephen Dicks

Software development is not the same as web development. IMHO html,css and Js are a terrible way to learn to program. Learn a more structured language first (e.g. python,ruby,java) which will give you the basis of a solid foundation for a career. I once met someone in their 50s who admitted that they had 'just finally understood software' despite doing it for 30 odd years (because they just went C, sql, perl/cgi, php js etc) and never landed on something that grounded them. That person actually found it in ruby