markdown guide
 

Work-life balance. ⏱
I feel like I still need to handle them properly.
After that, Rust's borrow checker. 🤓

 

Totally agree, often be able to combine work-projects-study-life seems imposible. And I don't have kids yet!

 
 

How much of software development is not actual software development - so much is talking to people, thinking about approaches, research, etc etc etc - it's not just a case of "make stuff" there is soooo much more too it!

 

development =/= coding. Writing the code is usually the easiest part. Everything else is what a company pays us for.

 
 

Learning how to realize when it is time to walk away and take a break when trying to debug a problem.

JavaScript Promises were also a really tough one for me to grasp. It took waaaaay longer than I'm proud to admit. 🤣

 

When I realized that sometimes a good night's sleep is WAY more beneficial than trying to push through, it was a game changer for me!

 

Wise words! This was hard for me, too. Sometimes I'd get a magic solution in my sleep, it would seem.

 

I'm ready to don my flameproof underwear, but here goes.

Object Oriented Programming.

It's just not an intuitive thing. There are so many layers upon layers of abstraction and hidden functionality in most OO systems that you're basically hopping onto a moving train.

Before you even get started, you have to understand this pyramid of things inheriting other things. The application's control flow is totally obfuscated. Instead of starting at a main function where I can logically follow the app from start to finish, I'm starting at AppDelegate or some other object, and it's managing this graph of things sending messages to other things which exist at a global scope.

Then I've gotta learn all of these "patterns" just to do what would be pretty trivial in something like C.

Passing data from one screen to another requires doing all of this fancy "dependency injection" right before this magical segue method gets called, and I need to know what things can be a delegate and how to use some other pattern just to send data to some screen that's all the way on the other end of the object graph.

To someone who is new to programming, it's just one ultra high level thing after another. And you can't just dip your toes into it either. You've gotta dive right into that ocean of abstractions. Sink or swim.

I compare this to writing a game engine in C, and I actually have to say it was easier to learn C. There are only a few abstractions, and you can follow your application's entire control flow, from start to finish. Nothing is hidden from you like it is in OO languages and you don't have to care about all of these high level concepts like data hiding, property accessors, inheritance, blah blah blah.

Granted, C has its issues (like string manipulation for example), but I like how straightforward and direct it is. I feel like that straightforwardness is missing in modern programming, and it makes it harder for new programmers to get their feet underneath them.

OOP wanted to frame programming in more human terms, but I fear it has created more confusion than clarity. Computers are procedural. There is nothing wrong with being procedural. It's okay to say we are just telling computers what to do, line by line. I actually think programming becomes easier to understand when you look at it that way.

 

This is beautifully well put!

I feel like OOP and quite some DSLs land in this uncanny valley of semantics, where sterile examples look super cool, easy, and humane, but the minute you start using it, there is so much magic and implied stuff going under the hood that you are never sure if what you're doing is right.

 

This is very specific, but pointers and references in C++. I started going through a couple books on C++ around 2001 or 2002. When it got to the chapter on pointers and references, it did not make sense to me.

About 3 years ago, I was teaching JS and PHP to a few coworkers. A question came up where I ended up explaining pass-by-value and pass-by-reference, and how they work in memory. At the end of my explanation, I realized I finally understood how pointers/references in C++ work (generally, not syntactically - it's been too long for that), while using PHP as the example. 😅

 
 

DevOps, so many definitions, colors and flavors to choose. Some are hard to implement and others are so good.

Some people think DevOps is a state of mind, let’s do yoga and meditation, everything is going to be ok.

 

To be honest, relational databases.

They seem so straightforward, right?

I went into university as a self-taught C/asm programmer and I thought I knew a fair bit. My databases course was really difficult.

I admit I was that student who didn't always turn up on time, or at all.

I got 0% on my databases exam, because I handed in a piece of "artwork" instead. I drew a scene with a man in tatty clothing lugging a grandfather clock on his back down a long stretch of beach. I remember this because it was a representation of how I felt time was dragging in the exam, and I didn't understand the questions well enough to bother trying to answer them; I knew I would fail.

It wasn't until years later, when PHP/MySQL was just starting to get attention, and I found an example of the simplest thing on someone's website. It showed me how to make a guestbook. Remember them? And it explained what it was doing step-by-step, and I understood it without even furrowing my brow.

The lecturers at my university had thrown us into the technical side of things straight away, trying to teach us data concepts without giving the simple example, the td;dr we're used to seeing at the top of documentation these days.

Then I went on to become the SQL ninja I am today, who only rarely brings down production with a missing clause.

 

I had a similar "climbing road" for data structures.

 

Haha tell me about it. Thought I could wing my intro to databases class with some programming knowledge... Guess the joke was on me 😥

 

Tbh I think one of the trickiest things, at least when first starting out, is all the new terminology.

You have regular words that take on new meanings. Or words that sound kind of familiar but you're still unsure of, and then loads of alien words that you've never heard anywhere before.

Most concepts behind the words, you come to realise, when understood on their own, are relatively straight-forward, or can at least be reasoned about through abstraction via a neat analogy.

The apprehension about how complicated and complex the new terms make it seem, is always worse than the actuality.

 

I'd like to take one step back and say that I had (and still have) the hardest time learning how to learn.
Sometimes you deal with a time sensitive problem so you "hack" a solution without having the time to properly understand it. Sometimes you're just too tired so you "get things done", one way or the other... Regardless what it is, most of the time, I realize that I do things while missing opportunities to learn.

 
 

Rust. I tried maybe three or four times, I understand concepts such as Option monad etc. but I really cannot write code that makes sense in it.

 

Hah,
Since Rust is so hard to learn, why many developers love it at StackOverflow.
I think it's not easy, it really needs more time to understand the borrow checker.

 

Yeah, borrow checker is a b**ch, although I think I mostly figured it out. But I think the docs about it could be better.

 

Hmm, great question.
Academically I'd probably have to say Boolean Algebra Simplification. More generally, probably learning to push anxiety aside and to face problems head on, fixing things sooner rather than later (though often scary), will always be better in the long run.

 

JavaScript's async/await. I cut my teeth on "spaghetti code" callbacks (AKA callback hell), and developed different strategies/styles for handling them. Now I get easily confused with the simpler(?) constructs for async/await. I bypassed learning Promises entirely, that may have been a mistake :D

 

Lambdas took me quite some time. Now I love them.

I still struggle with ASP.NET WebForms. It does everything to pretend for you to just write some desktop app. But if you use it this way, it won't work.
I solved it, by moving on to ASP.NET MVC, where at least I know, THIS is server code and THAT is client code.

 

I am in the middle of learning AWS fundamentals in order to know what is capable of and how to use different services. Is probably the hardest bit so far and Amazon also charges money for a bunch of stuff even when you are doing tutorials.

RxJs is also a difficult concept to grasp.

 

I recommend learning streams in nodejs before sitting down to rxjs. It should help a little bit.

 
 

CSS,
I can not remember the properties, need to search it whenever I use it, I don't need to work much with it in my daily work, luckily!
I can not get the logical pattern of CSS. It's complicated for me.
Any suggestions?

 

I was very slow with css when I first started! I suppose my proficiency came from being a fe developer and being exposed to it all the time. There are very few you have to remember, everything is googleable or on a cheat sheet. If you have a nice text editor that has auto-complete for css you can probably make good guesses on what the properties will be.

What do you mean logical pattern of CSS? Specificity?

 

Deciding what JS library/ framework to learn 😒 I enjoy Vue more but have come to the game unfortunate realization that there aren’t very many Vue jobs in my area. Therefore I’ll have to focus on React.

 

I work as a Vue developer. Maybe there is something? Where are you located?

 

I live in the US. There are a few of places near me that are looking for Vue experience but they always phrase it as “Must know a JS framework like Vue, React or Angular”. It’s very vague.

 

The big one for me is D3.js. I understand the core mechanic, and there are good resources out there from folks like Ben Clinkenbeard and Shirley Wu, but there are so many little moving parts you need to get to work quickly with that library. If it was the only thing I needed to learn I would be much further along, but hats off to people who have deeply mastered it; I think it's the most challenging JavaScript library/framework I've come across by a country mile.

 

Learning Visual Coding in Unreal Engine.
I find working in Visual Coding compared to Lua, Python or C# Object-Oriented Programing to be impossible. There is no single frame or principles you can work off. There's a custom term for everything.

When in Roblox Studio or Unity you have some basics you can work off such as:
Classes, Remote Events, Vectors and CFrames and Tweening which you can then build off but when you enter Unreal everything has a custom term which really makes learning it a real hassle, you can't develop off any pillars, you are launched in the deep end even if it looks easier. I'd honestly prefer to learn French (Ok..Maybe not honestly).

 
 

The pipeline of OAuth2 works. Didn't understand it for the longest time, now it's a breeze and I use it everywhere!

 

How to stay focused in a loud workplace with plenty of meetings occurring throughout the days and many distractions. I'm not quite there yet as I find it rather easy to lose focus from the task especially if its something I don't particularly want to be doing it.

 
 

Myself...it's an ever learning experience. And regex. I swear I have to re-learn it every time I need it, and always forget it after a week of not using it.

 

The same feeling about regex,
and there are some trivial differences between different programming languages.

 

How to deal with other people, specially on my bad days...or their bad days 🤣

 

I feel like I have less problems learning wholly new things than learning different implementations of things I already know. In the former case, it's often just an exercise in "take what you know and use that to help you absorb this new stuff". Whereas, in the latter case, it often comes down to "unlearn what you previously internalized so that it doesn't get in the way of this new method for doing old tasks."

 

In terms of software technology: Angular, Modelview-ViewModel, Entity Framework. In terms of job, my last job as Management Accountant was more complex than anything in software development. In terms of study, high school was very challenging, as well as my Management Accounting certification.

 

F# was the hardest thing for me I started with it in 2015 while I got the ideas of FP and actually helped me a lot to improve my javascript I couldn't just write meaningful stuff in F# I was back and forth over the years. It wasn't until recently I found out a web framework similar to express (Giraffe) which helped me to finally write and grasp that stuff I could write was kind of similar to what I had done previously in javascript

Things I'm still struggling with:

  1. Rust
  2. The "recent" MVU Pattern (popularized by elmlang)

Rust in the sense that I still don't feel like I'm writing meaningful code with it though I'm in the phase of being away from it, perhaps I'll come closer to it next year.
And MVU pattern kind of I get the idea, but I don't get the idea on how to work with multiple views like in a SPA

Functional concepts are nice, and I can apply some of them (Not all I don't like the purist approach to it) in my javascript code where it makes sense but on other languages it is just so enforced takes me out of my mental model sometimes

 

Multithreading. I mean, I got the concept pretty fast, but getting it right with all the locks and semaphores simply didn't sit well for the longest time. Honestly, I'm not sure I get it now, 20 years after learning about it the first time - though to be fair, I can count on one hand the number of times I've actually used threads, so not much practice in that area.

 

Integrating TradingView charts into an angular project, weird stuff... (It was not that bad, but really confusing and different to any other lib I've integrated...)

Work-life balance. ⏱

Yup, this one was hard for me also...

 

Electromagnetism, still cooks my noodle to this day

 

Java. I have tried and tried but that language doesn't stick in my head 😕

 

It was very difficult to my start thinking in asynchronous way because I used to sync languages

 

People >> Code. Technology is a people problem and not a code problem. Take care of the people, the rest will follow.

 
 
 

When i was learning RegEx. It was getting so complicated to me.

 

State machines, I could never wrap my brain on it even till this day I doubt I am able to solve a problem with it.

 
 

The recylerview in Android and collections in Java. Had to go through hell lot of time to understand the concept.

 

For me, understanding Overpass API was a nightmare at the beginning. But, i didn't give up and i started grasping it after a week 🌞

 

Delegating work, I feel bad doing it, but it's a must for your mental health 😬😅

 

Recently, it's been RxJS. In hindsight it's not too bad, but it really took weeks of studying it before I felt like I understood the basics

 
 

Javascript promise. And I still don't really get it :-)

 

I really want to make my own app, either a game or some sort of service. But, coming up with a good idea is so hard. Maybe I'm too picky.

 
 

Spanish while leaving in the UK. It's really hard to really grasp something when you don't use it every day. The same goes for every programming language.

 

right now , i'm trying to learn kubernetes .
Althought kubernetes in action book , really helped a lot , i think that i need a lot things to learn and practice

 
Classic DEV Post from Mar 2

Which game are you playing right now?

What game are you playing right now? Do you have any favourites from your childhood that you reminisce about?

Ben Halpern profile image
A Canadian software developer who thinks he’s funny. He/Him.