markdown guide
 

I would have loved more encouragement to... just do it my way.

I never fit in with anyone else's idea of how one is supposed to approach this craft, so it took a while for me to really have the whole thing sink in.

If people had encouraged me play and do things I liked to do instead of their idea of computer programming/computer science, it all would have happened a lot sooner for me.

 

I like the mantra "Make Dumb Shit".

I feel like it's a whole different kind of learning when you're just messing around. Being able to explore the "I wonder if I can do this"'s of the programming world is So Much Fun. Especially when it turns out you can, in fact, do { Insert Whatever }.

 
 

This! I like to think about programming as a form of art and learning to program like learning to play the guitar - as soon as you can hold the guitar properly, and have a basic understanding of how the instrument works, how to use it - you start experimenting, trying new sounds, "messing around". This is pure joy!

 

I felt like there was a plethora of content out there for absolute beginners, and plenty of highly specific/advanced topics, but not nearly as much content for intermediate developers. It felt like a real challenge getting past the "hello world"s of various frameworks into real-world development topics without getting deep into theory and design patterns that aren't necessary for 90% of apps.

You don't need to use the most bleeding-edge technologies and design patterns for the vast majority of projects that a beginning developer would be doing. They serve a great purpose for experienced devs doing professional development, but for beginners/hobbyists, it becomes a real blocker to even getting started.

And on the extreme end of things, it trains developers to just copy-and-paste solutions to get something to work without teaching them why it should be done that way, and as a result, it becomes harder for devs to actually take a step back and think through the problem they are trying to solve.

 

And continuing on from that, I just want to say that Dev.to has actually been really great in this regard, with a good ratio of beginner to intermediate to advanced topics. There are so many articles I read here and think "wow, I really wish I had read this article several years ago".

Y'all are amazing.

 

That's definitely intentional!! Though, with the complexity of the network, it's really hard to know if it's working right.

We know the traffic is going up and to the right, but it can be hard to tell if the real value is being created.

So hearing it is on some level is very motivating. 😄

 

Funny that you mentioned that. Ali has actually been doing a post series on that.


The idea of getting past those tutorials and copy/paste solutions.

But you're abolsutely right that it's an awkward jump to make. Beyond theory it often requires you to start digging into integration points between various tools. And it's hard for posts, tickets, etc to capture the full array of problems you can encounter since there are so many permutations.

 

If I had written a comment to this thread, this would have been it... Too much "hello world" and too much "ninja" materia, and barely anything on the middle of the spectrum.
Also I'm struggling to understand how can coding tutorials (even some very good resources) can be video based...

 

If I could change one thing about learning to code, it would be that it was started earlier, particularly in schools.

I was fortunate that my dad worked for Intel growing up so he always knew (in my head) everything about computers. He started teaching me Visual Basic and Macro writing pretty young and that definitely sparked my interest in tech/web/programming. It helps build logical and critical thinking, problem solving, creativity, and so much more. We need to teach all the kids to code!

 

Beat me to it! I was thinking the other day that most languages are no more difficult than learning English( or most other languages), mathematics, etc. The only difference is that those concepts are continuously drilled in us from an early age, and learning coding would be easier if we started learning a high-level overview of logic, data modelling, etc in elementary school.

 

When I was in high school, I didn’t even know that software development was an option to study. There were no programming classes. I didn’t see a line of code until I was 21 and decided I wanted to learn more about programming to see if it would be a fit for me. Luckily 10 years later it was definitely the right choice!

 

Exactly! Get kids messing around with logic earlier. Even just the "How to get the Pizza to the party" stuff (Order Pizza, Right Turn, Forward 2, Left Turn, forward 1, pick up pizza, etc)

 

Not having to deal with religion-like arguments about languages, frameworks, tools... Or whatever. Would have loved to have to freedom to pick something and not having to question my pick because people have these hardcore opinions about it ( and opinions about me as a developer by association...)

 

in a word: documentation

don't get me wrong, in the vast majority it is really incredible and commendable how thoroughly devs document their work, but for total newbies trying to figure out how to join the party, most docs are set up for more advanced understanding.

I'm not necessarily saying this is a bad thing, but I ran into tons of head-scratching in my experience.

 

This! I thought I was terrible at reading docs (ok this might still be a little true). Turns out, I was just missing a lot of assumed knowledge.

 

Real world examples, instead of foo bar baz. For a long time, I thought those words had a special meaning.

 

The overwhelming feeling of 'there's too much, how will I ever learn all this!' or the self doubt on starting to learn a new language thinking it looks too confusing and thinking you'll never pick it up.

It's a barrier to overcome when learning new languages!

 

More emphasis on reinventing the wheel and then doors, lights and the rest of the vehicle with ONE tool. So many people waste so much time by scratching the surface in million languages. Especially true in web development where you can see a junior dev resume with 15 languages and frameworks. And 6 months of total study time.

Less "well meaning advice" of the kind: you can do it in X in half the code/time/effort".

The struggle and depth you achieve by going deep in one language will let you switch much faster to a new one afterwards.

Being able to choose a proper tool for the job will only happen if you actually struggled through doing it the hard way in something before and reached a general understanding.

 

I think part of the reasons that you see all those languages and frameworks is because job ads ask for them.

 

I'm self-taught, and did most of my learning in a very isolated way. I would have benefitted from having more peers at the same level to work alongside with. Now that I am teaching, I see how much my students learn from and encourage each other - I wish I had had that. (I also wish I had had dev.to when I was getting started!)

 

✨Technical documentation

When I first started trying to learn by reading books and technical documentation, it was always quite terse and esoteric. It's not so much the case now due to great platforms such as this, medium, coursera, and other video tutorial services etc that you can supplement the documentation or lack thereof.

But I do wish 🧞‍♂️the evolution of writing technical documentation continues to improve and is a skill people invest and develop as much as writing the code itself. To allow for more efficient knowledge transfers.

 

I wish I would have not tried to learn C++ as my first language. The first few years I spent trying to learn programming were a complete waste of time and effort, I was top young to have any sort of clue what I was learning. It all worked out in the end, but I'm still kind of amazed that I was stubborn enough to keep pushing through the failure and confusion.

 

I really wish there were a lot more accessible languages in computer science when I was enrolled in a degree towards it around 2001ish. It's taken me more than a decade to really get back into programming and found that I like it again. If Ruby or Python or even Javascript was at the level it is today back about 18 or 19 years ago, I probably would have finished that degree instead of changing majors. Now I can approach things like C# and a few of the scripting languages with a lot of ease. Though I hear C++ has changed a lot for the better these days, it still scared me off way back when.

 

I think the way that things were taught was off-putting too. When I had to learn C in university, it was a terrible experience. The updates to the language made in 1999 (C99 dialect) improved the language a ton, but we didn't learn about any of that. It almost felt like some of my professors considered it a rite of passage that since C was miserable when they learned it, it was going to be a miserable experience when you learned it too.

I'm fortunate enough that I knew as much as I did in high school because I ended up teaching my AP Computer Science class. The teacher had no experience with programming whatsoever and didn't know Java at all. He was basically learning the language with us. A few people tried really hard to learn it on their own and participate, but 2/3 of the class played Age of Empires or Starcraft against each other everyday and bombed the exam.

It saddens me that kids are in a position where they can't study topics that interest them. My school district was incredibly wealthy, and they couldn't bother to hire a single teacher with programming experience. It makes me fear for creative classes even more...if kids can't get the resources they need to discover if a STEM career is right for them, they probably won't get the chance to learn how to express themselves and develop their own sense of self. I can't help wonder if that's on purpose :(

Funny you should say that, I had AP Computer Science in high school with C++. I relied on everything from that class for my first courses at University. Then when I hit data structures and had a class with 100+ students and the teacher was unavailable, only teaching assistants available. We had no computers in the classroom, the tests were all handwritten code. They added a computer lab to the class about a decade after I left. We didn't use the issued book for the class because the book was littered with errors, but a custom written book that the teacher wrote that was on printouts stapled at the book shop.

 

A mentor or a helping hand to help me start on the right track, since at first I didn't know from where I should start my learning path.

I started hopping from language to language wasting time on them until I got to PHP and built a career out of it.

Also back then I couldn't find the right community to join so that I could learn new stuff the right way.

 

Hmmm. I don't know - the biggest challenges always feel like the biggest successes when you've overcome them. So I'd not take away any of the things I've actually learned.

But what I'd try and take away would be my odd obsessions with the unimportant things. Things like:

  • which text editor to use
  • which font to use in the text editor
  • setting up a terminal to look pretty
  • adding every plugin to the text editor
  • understanding geeky jokes
  • etc etc etc

The amount of time I've wasted making Sublime Text look nice, or learning Vim, or playing around with every shell under the sun - without getting along with the actual coding bit. Ridiculous.

So, yeah - that's what I'd ask/help beginners with. Please stop adding to your problems with incidental crap and just use the quickest, most basic set up you're comfortable with.

 

Learning to ask questions.

Everything about questions - how to ask them, who/when/where to ask, and getting comfortable asking them.

At first I tried figuring out everything on my own because I didn't want other people to think I'm incompetent. While developers should start by trying to solve problems on their own, there's nothing wrong with asking for help if you're really struggling.

 

This was back in the early to mid 90's, so it may not be quite as relevant today, but I really could have used a mentor. I made a lot of poor choices for college courses, both in what I took, and what I didn't take. I didn't know that I would have to teach myself a lot of things, nor where to learn them.

 

Mentorship is probably more relevant today than it was back then given the plethora of specialties and systems that exist now.

 

I think my biggest mistake was to read a lot instead of practicing a lot.
I started to read a technical book with a goal to finish it. Nowdays my goal is not to finish reading a book, but to get the required information for my current task.
Reading a technical book from start to finish without a practical goal is a boring task and a waste of time. Instead find what is interesting for you, do research, ask questions, find answers, ask more questions. Make your brain work instead of just consuming information from a book/article.

 

I think the thing I would change is in High School and still a bit in college, programming was only offered/avaliable to kids in advanced math courses, at least in my experience. I understand how some level of advanced math is needed but I think those can be taught in an interactive way with programming. Math is very abstract and I tip my hat to anyone with the passion for it. But, I think getting kids to create things is more the direction they should go in. For me it was games, for kids now it can be litterally anything, so much of our daily lives rely on computers and programming is just how us humans get computers to listen.

 

There were 2 challenges/ frustrations that I still deal with after 3 years in the field: 1. Lack of time to learn on my own. Juggling a full time job and the other daily routines is already hard. I even considered working 32 hours to be able to sit home and learn stuff on my own. 2. A job where you can learn and grow. Those are very few. Most companies have no process or standards of doing things, because they are too small or just attracted mediocre people and actually get away with a lot of bad practices.

 

I'd decrease the pressure to understand all of the theoretical concepts in the beginning. The concepts make sense now that I have more experience. I often look back and everything clicks quickly but I often heard, "if you're struggling with x, you need to question your future in this field" and it's really not that serious.

 

Add 'learning to grow existing code' to my curriculum. And 'learning to find the right library'.

You make different choices when you know how code is going to be used, evolved, packaged,...

This takes away some degrees of freedom you have to cope with as a beginner.

 

I would've learnt the mechanics and concepts more, I've had a hard time blindly following stackoverflow answers without knowing why they work the way they work.

My learning process has shifted towards understanding the basics, concepts, learning why and how, finding multiple ways of doing the same thing and compare them to find the most optimal solution rather than fastest ☺️

 

I'm currently learning to code. I come from an art and design background.

I'm decently well versed in logic through philosophy etc but I still find the presentation of comp Sci concepts very confusing. They tend to rely on a more mathematical notation sort of approach while logic in philosophy is often explained through example and metaphor which is much easier for me to relate to. I find that cs people tend to be kind of bad at metaphors, often preferring to rely on a pretty literal explanation of an idea rather than actually trying to relate that thing to some kind of visual/visceral instance.

I get the craft aspects of coding but I feel very ill prepared on some of the fundamentals. I'm trying to study that more but it often seems difficult. "why" explanations often seem to be completely absent from many coders minds. I often get explanations of. "what" a thing is when I ask "why" for some reason.

I recently was reading an article which said that success in cs seems to be linked to the ability to decouple mental models. Which I think may be a good description of the issue.

 

I totally relate. That's why I find Vaidehi Joshi's work so awesome! Check out her blog and podcast medium.com/basecs/tagged/data-stru..., codenewbie.org/basecs.

She includes plenty of visuals (she draws them herself!) and metaphors.

I'm finishing the data structures portion before I move on to algorithms. I like to start with the podcast episode on the topic I'm learning during my commute in the morning and then fortify my learning with the blog post and a couple of corresponding leetcode problems in the evening.

 
 

Having more examples, more recipes, not just general concepts and lots of theory. I really value web documentation that let you play with a playground code, or that highlights some famous recipes to do a specific thing.

My motto is : learn by examples. I like Idriss Aberkane saying that "animals have chosen playing the top tool to survive. Your cat play, the tiger in the jungle play, the dolphins play. This is the best way to learn. Animals are not born with skills, they learn it, so do we, and mistakes are the best indicator of progression." (not quoted exactly as is, but more or less the idea!).

 

My biggest challenge was installation. I couldn't install Linux, I had a Windows laptop that I had bought (b/c I was failing horribly and needed something I could run at home) but I didn't know enough to understand that my programs didn't work b/c of linux (school) vs Windows (home) line endings. So I almost dropped out. A sysadmin at school installed Linux. Ruby had an amazing Windows installation that I was able to get running and I ran the code through their editor for about a year. For the next several years, my ability to succeed was severely limited by my ability to install. My first "real" job programming, I could barely get PostgreSQL to install. I've still never written anything that compiles to LLVM because I've had so much difficulty getting LLVM to install, ImageMagick has sometimes worked and sometimes not, so I would only run some subet of it. With my own Ruby gem that I've maintained for like... IDK, 8 years or so, trying to figure out how to get users to be able to install it and configure it has been the biggest hurdle. It's just super unfortunate that the biggest hurdle to playing with things is very often the first hurdle,.

But, if I wasn't concerned with "what's wrong that needs to be fixed", and instead was concerned with "what would be compelling", the thing I'd change is that programs are represented with text.

 

So many tutorials had this formulaic progress of:

  1. Stupidly easy, basic, easy to follow beginning.
  2. Skip
  3. Here's the finished product.

They left you in a void of WTF just happened. How'd you get THAT?!?

 

Cross-posting from twitter.

I still struggle today with algorithmic thinking and even as a front-end dev, I wish I could grasp it better.

 

My biggest challenge with learning to code (20+ years ago) was the level of sacrifice required (in my experience) in terms of time, relationships, and quality of life. I still struggle with this. Keeping up with technologies and the various flavors of, and the evolution of, languages is exhausting, requires a lot of attention, and requires a lot of time. Throughout the years my relationships have suffered, my finances have suffered, and my livelihood has suffered -all in the the name of the pursuit of building the next thing, or building the next best thing, or research, or learning a new language for a one off project, or the like; the next fix.

Honestly, though, I wouldn't change a single thing. The act of Coding/programming is a contract that you make with yourself: "I will accomplish 'X' goal or fail. Every coder/programmer/software-engineer must come to terms with the level of failure they will accept in lieu of pursuing other avenues of pleasure, "normalcy", relationships, and other avenues of living.

 

The ratios of Text/Video Tutorials and Interactive Tutorials, Although I don't mind reading through and article or following along with a video to give me an idea on how I would create something new or learn a language. The Interactive Tutorials found on Code Academy, TeamTreeHouse, and Scrimba have all made the difference personally when it comes to learning something new.

 

The notion that math is essential to develop software.
Also the notion, that math is not needed at all to develop software.

I was held back (or held myself back) from pursuing dev as career, because I wasn't great at maths. Luckily I meandererd myself into dev via Front-End and the rise of smartphones, but I could have started much earlier.

But now with some years in the field, I'm trying to understand more of it and see its importance.

 

BASIC

I would put this back at the forefront of education. It is by far and away the easiest language to learn, and has become extremely powerful as of late. QB64 supports full OpenGL now, and gaming is one of the most exciting things in programming that makes people WANT to learn to code, rather than just CS style algorithms, data structures, and business logic all day.

 

My biggest challenge when starting out was having the belief that if I got stuck on solving a problem, it would be completely up to me to figure it out. Hitting road blocks in programming assignments in college completely stressed me out and discouraged me from pursuing a career as a software engineer.

Fast forward to a few years later, I have the privilege of working on a software engineering team where "getting stuck" is an opportunity to learn and collaborate with fellow team members to solve hard problems.

If I had sooner realized that collaboration and helping each other is an important aspect of software engineering, I would have enjoyed my college programming courses more.

 

I'm glad I read the other comments before responding. I originally was going to say that I wouldn't want any of my challenges to magically disappear because my biggest challenges helped my learn and grow the most. BUT since I read the other comments I have a different reply. I would definitely like to see it be taught earlier in schools and approached in a way that CS50 from Harvard does it, very fun, very conversational, with a focus on the concepts and not the syntax. I'd also love it it there wasn't as high of a math requirement. Math is what prevented me from going to college for CS but here I am 13ish years later coding professionally and though I still sick at math, I'm doing pretty well at it.

 

Lack of clarity about how different topics are related to each other has been the biggest slowdown over the years. It takes a lot of time and effort to create a mental map of the concept space. There should be more effective visual presentations about how different types of technical & social topics are interlinked together. Link strength & overlapping categories of concepts etc.

 

Having someone IRL to help me along. Reddit and dev.to have a solid community, for which I am extremely grateful, but sometimes, it just gets lonely trying to learn on my own.

 

I’d say the criticism when asking a dumb question; or better, finding a really good community.
It has happened to me before — I go on a forum or chat “open to all! Come ask any question, we’re here to help” only to find that my genuine doubts and questions weren't seen as real questions, and people weren’t trying to help, only to “get this over with asap”.
I’m very glad to have DEV.to, however: you guys are so helpful, and the tag for explain it like I’m five has seriously solved doubts that I never asked for fear of my questions being dismissed as too dumb or basic.
Thanks everyone! 😃

 

I'm still in the beginning of my coding journey, and I wish I could have more guidance, in person, about coding in general. Most of the things I've found out (outside of the bootcamp I'm attending) I swear I stumbled on. I know this is a general request, but again I'm still in the beginning, lol.

 

I would have started coding earlier. I'm an electronic engineer by degree and most of my experience, but transitioned into software 4 years ago. I wish I have made the switch earlier or not bothered with hardware at all. Maybe it made me a better engineer but I feel much more fulfilled when writing code than when I was designing electronic hardware.

 

The "Make It Work, Make It Right, Make It Fast" saying was a bit of a game changer for me.

When I started dotnet, I stayed stagnant for so long trying to decide on an architecture and wrap my head around it all until I simply had to admit...this is as far as you can go RIGHT NOW. I can get c#, I got over my fear of Visual Studio, just MAKE IT WORK.

One year later, all my projects have been converted from PHP to dotnet Core. Now, that I've worked with it so much, I can better grasp the tutorials on architecture, it is finally clicking.

Currently "making it better".

 

I almost started to learn to code with lisp and prologue, but got distracted by other subjects (e.g. biology) and then c/c++. Now I wish I had learnt functional programming or even logical programming earlier.
I'm getting so much now from learning to think functionally rather than class or procedurally. Data driven, functional front end dev has been a revelation.

 

I wish that I had learned how to improve and maintain code quality in parallel with learning how to make code do things. We can't learn to write maintainable, readable code first because no one is going to learn how to write nice code that doesn't do anything.

The only way I can see to achieve it is to have someone capable review code as you learn. That's not easy. First you need developers who can provide that feedback. Then you need to provide the circumstances for them to work with developers who are learning.

 

Personally, I always hoped it would be more like this.

Haha, kidding of course!

In all honesty, I think the time investment is one of the scariest things to me... granted, I don't know how to code. 🙂

It's serious work, there's no getting around it. You can't just plug in and know it all... it's quite tricky just getting started and there's always more to learn! I think the vastness of it all feels overwhelming.

 

These are the things that would have wanted

  • Introduction to coding before; I started coding(apart from the basic school syllabus) when I was 15 (I'm presently 16)
  • Been in a school which had better computer science teachers
  • Had a better cs curriculum

btw these aren't challenges. just these are the things that don't like but past is past :|

 

I'd love there to be a single, clear path. Instead of hundreds of competing paths and everyone fighting over which is best.

 

All the dogma and religion associated with it. At the end of the day the only things that matter are the people, problems, and solutions.

 

I wouldn‘t. I grew on my challenges. I still love to be challenged. That is the fun in it. Building and learning and working for both.

 

I mean I learned to code in this setting:

  1. C++ Newbie (did some Pascal and Delphi before, but never profesionally before)
  2. Massive Mutithreading
  3. Peer-2-Peer (not Filesharing but metadata transport) with static application layer routing.
  4. Cross-Platform
  5. Reverse engineering a RS-485 BUS protocol to access hardware connected to it.

I had some help and the internet - cplusplus.com was my dearest friend after some time.
I did my first polymorphism and Factory pattern (did not even know its name) and all in all I was pretty naive and even came up with an idea of using the exception mechanism in the usual program flow. It was pretty elegant, but the others did not like it because „exceptions“ should be an „exception“ and not the usual case. After some reading I understood why (stack rewinding and undefined states).

What I want to say: the learning curve was very (very, very) steep. And I loved it all the way!

 

This was 10 years ago. And even though I changed to C# (currently looking into F#).

Until today I always try to do something differently the second time I have to do something I already know how to.

 

Understand the impact anything makes on an end user. Everything and anything will ultimately impact someone.

 

More intermediate concepts and patterns to get to the next level with the tech you’re learning. There’s always so many beginning resources, I just want the next step.

 

The pain associated with switching a career over to coding, getting to network and build a circle - painful and hard.

 

Just my motivation, with it everything is possible :3

 

Time. I would love to have more time to just mess around with all kinds of different technologies, languages and whatnots. Becoming a father made free time become even more of a luxury. :D

Classic DEV Post from May 2

The Art of Programming

One of the most consolidated misconceptions about programming, since the early days, is the idea that such activity is purely technical, completely exact in nature, like Math and Physics. Computation is exact, but programming is not.

Ali Spittel profile image
Passionate about education, Python, JavaScript, and code art.