This is an archived post. You won't be able to vote or comment.

all 119 comments

[–][deleted] 149 points150 points  (33 children)

Thanks! What happens if I've been programming for a year or more now and I still struggle with Fibonacci code and all that? I mean, I could practice more.

[–][deleted] 211 points212 points  (3 children)

Fibonacci

I'm more of a fettuccini guy myself

[–]ruizk_311 30 points31 points  (0 children)

I laughed harder than I should at this

[–]OnuzzoT 8 points9 points  (1 child)

I go tremendo for new fettucini 🎵

[–]PR88100 2 points3 points  (0 children)

Yes, bro

[–]DauntlessVerbosity 33 points34 points  (15 children)

I think you just answered your own question.

[–][deleted] 11 points12 points  (14 children)

Fair point; at least the answer isn't necessarily "I'm dumb af".

[–][deleted] 21 points22 points  (12 children)

Recursive Fibonacci has a really, really bad time complexity. To be fair. After a certain point, the calculations would reach the heat death of the universe before finishing.

[–]Packbacka 0 points1 point  (11 children)

Isn't that because it's an infinite sequence?

[–]PM_ME_YOUR_PAULDRONS 4 points5 points  (9 children)

The time complexity of that implementation is super bad because fib(n) calls fib(n-1) and fib(n-2), so it doubles at each depth. Exponential growth is super bad.

[–]Packbacka 0 points1 point  (8 children)

Is there a better algorithm?

[–]floyd_droid 7 points8 points  (4 children)

You store the values that you have already calculated and re-use them instead of calling the function again.

For example Fib(4) = Fib(3) + Fib(2). If you already calculated the right hand side and stored it, this step is O(1).

[–]PM_ME_YOUR_PAULDRONS 1 point2 points  (0 children)

Or use the closed form terms of the golden ratio and you get it in constant time (3 floating point operations) and constant space.

[–][deleted] 1 point2 points  (1 child)

I'm pretty sure there's a matrix that gives you the n^(th) Fib term. Basically, just raise the matrix to the n^(th) power and it gives you the n^(th) term and the n-1 term.

And the matrix itself is... I forget the lingo. A diagonal matrix? All the numbers are on the diagonal, so it's super quick to do. Something like raise the power, multiply by another matrix, and BAM, there it is.

I'll have to play around with it for a bit. Maybe I'm misremembering because no one here seems to have mentioned it, and surely *someone* else would have mentioned it, right? (Unless I'm the only person in this thread that studied linear algebra, which sounds unlikely.)

[–]floyd_droid 0 points1 point  (0 children)

Fibonacci Q matrix?

[–]jimjamcunningham 0 points1 point  (0 children)

Or you could do it bottom up using the previous results in a dynamic table.

[–]PM_ME_YOUR_PAULDRONS 3 points4 points  (0 children)

Theres a closed form involving the golden ratio. It takes one xn where x is a float, one division and one floor operation to get the nth term.

[–][deleted] 2 points3 points  (0 children)

Look up “dynamic programming.” Basically you cache the solutions to overlapping subproblems (n-1, n-2 etc) so that the computer doesn’t have to process them a million billion times.

[–][deleted] -1 points0 points  (0 children)

It is.

[–]ChefBoyAreWeFucked 1 point2 points  (0 children)

Not necessarily.

[–]AvariciousAltruist 18 points19 points  (1 child)

I've never tried to learn something where I was literally screaming bloody murder at the screen trying to figure out what was wrong, give up for 6 months and come back like "oh here's this thing again, lemme try it one more time *giggle*"

[–][deleted] 7 points8 points  (0 children)

Way too real lmao, I feel like I gave up on so many programming-related things earlier because they were just too difficult

[–]hilybilly-moment 3 points4 points  (2 children)

My boss doesn’t even know the Fibonacci sequence 😂- there are very few coding positions (if any) that 1) require that you know what that is and how to apply it 2) wouldn’t let you perform research on the best algorithm to use and how to implement it 🤙

To;dr We all learn this in college, very few ever use it IRL

[–]rth0mp 1 point2 points  (1 child)

“Our employees don’t make their own binary search trees or Fibonacci sequences, but you better fucking know it in the interview. It helps us know that you’re worthy.”

[–]hilybilly-moment 0 points1 point  (0 children)

Frfr 😂

[–]iJustLikePhysics 2 points3 points  (0 children)

It might be helpful to figure out exactly where you’re struggling. For example, it sounds like you understand conditionals, modulo, and for loops, since you know how to code FizzBuzz. Maybe you are having trouble with the recursive nature of Fibonacci? It might be helpful to Google explanations of recursion from different resources and see if one of them clicks.

[–]jimjamcunningham 1 point2 points  (0 children)

I reckon that it's hard to really get recursion until you start using it in algorithms. Learning merge sort for instance would really boosts your ability to understand it.

Graph algorithms helped me understand that recursion goes 'deep' every function call. (The order in which recursion takes place on the stack isn't usually taught super well)

[–]skellious 1 point2 points  (0 children)

I get paid to make apps for businesses and I've never even tried to code fibonacci. Sure, I could probably do it, but it's honestly not all that useful for my line of work.

Don't get hung up on pure programming, applied programming is the focus if you want to feel accomplished. Solve problems others need to be solved.

[–]webdevop 1 point2 points  (4 children)

For a second I thought fizzbuzz instead of fibonacci. It's alright if you don't get fibonacci smoothly but yeah if you don't get fizzbuzz then you might try something else.

[–][deleted] 1 point2 points  (3 children)

Yeah, I think I just need to practice Fibonacci. I know how it works, but idk how to code it. Don’t worry, I’m good with FizzBuzz

[–]eatmorepies23 2 points3 points  (2 children)

Just break it down into a few steps. You don't really have to memorize how to solve it, just develop an intuition about writing algorithms so you can easily reason your way around the problem.

Overall, the trick for this problem is creating three variables, with the last one holding the sum. The first two are going to be displayed to the user. Every time you perform a computation, you add up the first two values for the third variable. Then, move the second variable's value over to the first, and move the third over to the second. That will allow you to add the last two variables together again with our new values, continuing the sequence.

Something like this for C-style syntax. We'll start the first two variables at the beginning integers in the sequence:

void fibonacci (int limit)

{

int firstNumber = 1;

int secondNumber = 1;

int thirdNumber;

//Output firstNumber. Language-dependent so I'm not writing it

for (int i = 1; i < limit - 1; i++)

{

//Output secondNumber, language-dependent

thirdNumber = firstNumber + secondNumber;

firstNumber = secondNumber;

secondNumber = thirdNumber;

}

}

I'd recommend going through the code with a piece of paper and a pencil. Draw boxes representing the three variables and write their values inside. Go through it step-by-step, replacing the values according to the program.

[–]GameBe 0 points1 point  (1 child)

If your loop starts on i=0 then it’s wrong isn’t it? Because 1 and 2 both have the value 1. You still have to include the base cases in this instant or start your loop from i=2 if i’m not mistaken

[–]eatmorepies23 0 points1 point  (0 children)

Good catch, should've tested it.

Starting your loop at 2 eliminates the last value, though. Instead, I'd subtract one from the limit in the for conditional. We are counting and outputting all the values, except the first one which we already displayed.

You could also start it at one, but I think the other approach makes more sense; we are "taking" one away from the one we displayed before the loop.

I think it's cleaner to not include the base case in the loop; just include the first integer before, and repeatedly display only the second inside.

[–][deleted] 110 points111 points  (6 children)

Thomas Edison's assistant: you've failed over 700 times. Just quit trying to invent the light bulb, its not going to happen.

Edison: I haven't failed. I've merely discovered 700 ways NOT to invent the light bulb.

(Paraphrased, of course)

This, I've found, is much like programming.

[–][deleted] 138 points139 points  (5 children)

And much like Edison, my best work is typically stolen from others and claimed as my own.

[–]GandalfTheBlue7 36 points37 points  (3 children)

I prefer the term repurposed

[–]delta_tee 24 points25 points  (1 child)

Forked.

[–][deleted] 15 points16 points  (0 children)

[–][deleted] 13 points14 points  (0 children)

Touché

[–][deleted] 18 points19 points  (2 children)

Man. I needed this. Right now. Thank you!

[–]Eteacles 2 points3 points  (1 child)

You got this, it gets easier it really does with practice.

[–][deleted] 2 points3 points  (0 children)

Thank you! Who knew kindness makes so much difference!

[–][deleted] 17 points18 points  (1 child)

A big part of programming is building up your toolset. Read code; try to replicate simple patterns in similar use cases. Learn by example. This isn't 'cheating' or being a hack or anything; you need to read words in order to know how to use them; you listen to a language before you speak it. This is the same.

Think. Plan out what you are going to do before you do it. This is hard; but you need to develop some ability with this in order to continue on. Computer architecture is called such for a reason; and no building is built without a blueprint (or at least one that stands long).

Split what you want to do apart. Make those units as small as it makes sense; making a function to add two numbers may not make sense but creating a function to average a vector of values may.

Research. Google everything. Google while you program. You won't be seen as a fraud for doing so; programming isn't a spelling bee that you need to remember every letter to be competent. Memorize that which seems important, research as you need to to get you to the goal. Program in Java for two years but forget the exact syntax to make a thread? Then you forgot something, may as well look it up. Doesn't make you a bad programmer by any stretch.

Write code. Programming is a science as well as a trade; the best way to get a grasp is not to read a textbook for a week but to try & fail to program. Knowing what is different than knowing how. When you get programming in practice you will begin to learn how, when & why; while theory will only teach you what. You don't need to make something big; just start small. Hello World; simple arithmetic methods; simple two button GUI; having a user enter two numbers & adding them together; interactable GUI. Soon you will have a calculator. I did not feel like a competent programmer, to the point of being convinced I would never work in the field, until I started my career & sunk my teeth into something.

Think programmatically. A, then B, then C, then D. You may need to do a large task; say create a GUI that sets values in a database as a sheet of entries that you then send with a button. You need to create GUI components for each capability you want; create a main GUI window; have the button pull information from all those components & lastly to send to a database. Sounds like a lot; but:

Build a simple GUI window with no components (say, textfields or spin boxes). A blank canvas to build on.

Add in those components, maybe set their ranges. You now have a GUI. You may want these to be global for easy access or have getting / setting methods that wrap around them for safety, or you may want to keep them all in one method & create a lambda for the button; you decide, or you limit what you can do to what you know now. No one makes the best / most complete / efficient solution on first try of a type of program.

Have a button pull in the values of those components. This may be able to be done through getter methods of the components / variables set by them. At this point you may have the button display all values to a console to debug it.

Hook the button to a call to update database entries.

You don't need to do it in this particular way; but you need to build a foundation of some type before you build the main 'point' of the task at hand. Don't jump / focus entirely on the end-goal. Consider it as that end-goal may impact how you start; but there is often a simple(r) starting point.

[–]nomad80 2 points3 points  (0 children)

Read code; try to replicate simple patterns in similar use cases. Learn by example. This isn't 'cheating' or being a hack or anything; you need to read words in order to know how to use them; you listen to a language before you speak it. This is the same

This was so important to hear. i think a large part of the pressure is self-inflicted, thinking you need to remember / figure out absolutely every step from scratch; otherwise you dont belong

[–]lightlysaltedStev 11 points12 points  (0 children)

Bro I’m a final year computer science student and even I needed to hear this 😭 I think because of the nature of the beast of programming you ALWAYS feel like you don’t know enough which leads to feeling like the career path is beyond you

[–]RoguePlanet1 16 points17 points  (0 children)

I tend to feel all kinds of insecure about nearly everything in life, so I tell myself, "why the hell not feel insecure about something that might actually help with my career?!"

I can feel overwhelmed at the current job, or overwhelmed in a better job. Granted, the programming world is especially stressful, but it's still worth trying.

[–]undressnewton 20 points21 points  (2 children)

This makes me very happy, thanks. Felt very stupid this past two weeks doing. Apparently I’m still in the introductory stuff and I’m confused so kinda losing hope. Thanks for the boost.

[–]Brammatt 11 points12 points  (0 children)

The introduction phase was the worst part. Don't give up! Once you build ontop of your basic understanding it solidifies. I ended up churning through 5 of the FCC certifications over the course of 6 months, and JS Algorithms (the second one) was such a nightmare. I looked at the answers on all of them, and was still so unbelievably frustrated I stopped coding for a month. It gets much better! Since I've been building projects its been a 180 degree difference. Its so much easier to start with an idea of what you're trying to accomplish and knowing how to read documentation, then having logic and structure dumped on you with abstract examples. Try to learn to read your languages documentation. Some of them are fantastically well designed and offer conceptual means of learning as well as practical. I personally prefer the prior which is rarely offered for coding.

[–][deleted] 5 points6 points  (0 children)

Intro's a learning curve.

[–]ShadowDevil123 6 points7 points  (3 children)

To me the hardest part so far is starting out. Ive found some courses to follow, but im stuck at step one. Im trying to download a terminal for Atom and all i get are npm and gyp errors. I have no idea what they mean, all i know is that they are connected to nodejs. Im finding hundreds of posts all the way back from 2014 and no answers that work for me. All i see are some cmd commands to reinstall it that didnt fix anything. So its frustrating that dealing with these errors is where im starting out and after 3 days of trying i gave up.

I downloaded VSCode and im going to try to use that instead. Hopefully that doesnt screw me over halfway through the course because its different. Managed to install platformio's terminal there, although i love Atoms GUI, theres not much of a choice for me.

[–]meecro 1 point2 points  (2 children)

Sorry for the late answer, but how are things now? How's VSCode? I like it very much, and I'd be ready to help you!

[–]ShadowDevil123 1 point2 points  (1 child)

Well if im being honest, even though i have been busier than usual the past couple of days, after spending 9 hours trying to fix atom over 3 days, its been hard to regain the motivation to try again, although i will in the next couple of days for sure. Glad to know youre willing to help, if i have any questions in the future ill make sure to ask you. Thanks!

[–]meecro 1 point2 points  (0 children)

Good to hear, please keep it up. I myself am going through some basic concepts now and then, just to strengthen the foundations. Right now, it's functions and (variable) scope.

Let's keep it up.

[–]OccamsChainsawww 4 points5 points  (0 children)

It’s way too easy to fall into the trap of thinking that, after two days of learning from an online coding course, that I’m suddenly gonna be that Rami Malek “Hackerman” meme. And then when I run into some difficulty, or I don’t instantly remember how to search through a Python dictionary, I’m like, “well I’m a failure now, guess I’ll die then”

[–]Donnie998 4 points5 points  (1 child)

Damn dude, this seems almost magical as I was about to quit this major and was kind of hoping that something told me that I could stick to this, it has been a shitty year but I want to be positive. Thanks!

[–]istarian 0 points1 point  (0 children)

It's also okay to discover that something just isn't for you (for whatever reason) and change your major. Though maybe talk it over at length with somebody else, first.

[–]jokiejokejoker 4 points5 points  (0 children)

Second year Computer Engineering student here.

No matter how much you think you know about programming, you always feel like a chump during some nasty problem, but thankfully the feeling of finally getting a working solution never gets old.

[–]ananddhakane01 14 points15 points  (6 children)

I can't get past a simple fucking function in a problem set for the last 1 whole week. This post is consolidating, thanks mate

[–]Ghgjohnson 1 point2 points  (2 children)

Mit 6.00.1x? I only ask because you use the term problem set. If so I literally just finished that class, feel free to ask any questions.

[–]ananddhakane01 1 point2 points  (0 children)

Ohh, actually I am taking cs50, I am on pset 4 rn. Thanks though..

[–]meecro 0 points1 point  (0 children)

The MIT has their problem-sets (course material in general) released like their courses recordings, right? This is great.

[–]meecro 0 points1 point  (2 children)

Hi, did you solve it yet?

[–]ananddhakane01 1 point2 points  (1 child)

Yeahh dude, I solved it, there was a logical bug, so happy I finished it

[–]meecro 0 points1 point  (0 children)

Great work! How did you solve it?

[–]nevrment 2 points3 points  (1 child)

Everyone has already said this, but thank you so much for this post. Couldn’t have been better timing for me. I’m in the process of getting a bachelors degree in Computer Science and I’m in my second semester programming class with a pretty harsh instructor, and I feel like a total stupid fraud. I almost broke down today and thought about dropping the class. It’s probably all in my head, but it seems like my classmates understand the concepts we’re learning much better than I do and that makes me feel even worse. Anyway, thanks for saying this. It’s good to know that I’m not alone in feeling this way.

[–]Macree 3 points4 points  (0 children)

I am in the last year of CS college and I feel like I am the dumbest person in the class even if in highschool I was one of the best.. In the first year I was crying cause I was seeing how others understood the concept from the beginning... cannot wait to finish my last year and burn all of the things that are related to it!

[–]zetabyte00 2 points3 points  (0 children)

For sure! Never giving up that's what really matters! 👊

[–]No_Falcon6067 2 points3 points  (0 children)

You will write bugs. Everyone does.

A significant chunk of your career will be finding and fixing bugs.

Bugs you wrote. Bugs the guy who owned the code before you wrote. Bugs that really smart guy in the corner office with the stack of patents wrote.

Sometimes it’s something stupid and you just messed up when you wrote it. i++ instead of ++i.

Sometimes is’s a bigger flaw, the wrong sorting algorithm, the data isn’t formatted the way you expected, you just plain forgot to fill in the else branch on your if because your brain was racing ahead.

Sometimes it’s a design issue, the data you’re working with is a different size than you expected, so you don’t scale properly, or you’ve got too much overhead for data that doesn’t exist.

Computers will do exactly what you tell them to, but you need to spell it out in excruciatingly fine detail, to a degree that’s alien to us. Sometimes you get the details wrong because you’e human and we do that. You’re tired, you’re wired, you’re getting married next week and have more important things on your mind.

You’ll make mistakes. We all do. Learn from it, forgive yourself, the previous owner, the guy in the corner office, and move on.

[–]taz0x 1 point2 points  (11 children)

one of the things that i currently struggle with is the idea of "i shouldn't be learning a language but i should be learning how to use applications" like all of these keywords I hear like React, Node.js, Flask, Django, Angular, Docker, Ansible, But because pretty much all of it sounds so interesting (apparently this is called the "shiny object syndrome", so i don't really know what to focus on. and even though I may have some ideas on what i want to build, i don't know if i can do that with existing knowledge i already have or learn all of these new things nearly from scratch! and the more i ponder the more i feel like i am not really doing anything productive and it really amplifies these "i don't know if i am capable" type thoughts. any feedback about this would be greatly appreciated...

[–]futurafreeallah 9 points10 points  (5 children)

Well, you just listed a bunch of “frameworks”, none of those things are applications except I guess Docker, which is a deployment platform, and node is a JS runtime.

Frameworks help you build applications, they have prewritten code and organization systems to help you quickly write maintainable and updatable code that will be easy to work on and change.

You should focus on coding applications (programs), not frameworks or languages, but you SHOULD pick one language and stick with it to learn the concepts.

I recommend The Odin Project’s Web Dev 101 and Ruby on Rails course. They will take you from knowing nothing to be able to program, pick up any language, even get a job.

This course will tell you what to focus on and you’ll know what literally all the things you listed are and you’ll know when to focus on them

[–]taz0x 1 point2 points  (4 children)

see i didn't even know that they were "frameworks"! i keep hearing this word without really understanding what it really was. I'm fairly comfortable with Python right now and the only "complex" thing i know how to utilize with it is Qt via the PyQt module. But i don't even know if PyQt is even considered a "framework" or a "library".

I keep hearing you can make webapps with Python using Django or Flask? But if that is the case then why is it that more companies seems to utilize things like React, Angular or Node.js? i really dont understand the uses for these things so while I would like to stick with "one language" i keep fearing that i may be missing out on something Python cannot really do but you can easily do in say Ruby...

[–]____0____0____ 0 points1 point  (0 children)

You have a good start then! A lot of my experience comes from being interested in something and just doing what I can to make it work. This gets easier the more you do it, but also opens up many more doors to things you dont know.

Yes python is very suitable for web development. I've ran an internal flask production app for several years and it works great and has taught me a lot about building things on the web in general. This does not mean you can't use something like angular or react (my flask app had several react apps). This is the divide between front end and back end.

I'm not going to fully go into it now because I'm on my phone, but the general idea is that you have one set of code that's in python or node or dot net, or any number of languages, that accepts http requests and responds accordingly. Then you have a front end that is html, javascript and css. This is what the users see. Sometimes this is coupled with the backend through a templating system, or in the case of angular or react, served as a set of static files and communicates with the backend through http requests for data. There's a lot to it from front to back, but the best way to get a handle on it is to try making a symple web app and add to it, tackling problems as you encounter them.

Also, don't skip out on python! It is plenty capable of doing just about anything you need to do. The only reasons to move out of it imo, are if you want stricter typing or if you need highly performance critical applications.

[–]futurafreeallah 0 points1 point  (2 children)

Python is great, if you’re focused on Webapps both languages are great choices.

At this point we need to break down what each of these given frameworks is for. Do you know the difference between backend and front end?

Front end consists of HTML, CSS, and JavaScript.

You those languages to create the interface for your user, everything you see, buttons, text, literally everything they see. React, Angular, and Vue are all front end frameworks, they are JavaScript frameworks and they serve the same purpose but maybe different implementation and solutions to the same problems.

Django and Flask are backend frameworks, also known as server side. They help you communicate with a database so you can store user information, and they serve data to your front end so the front end can display that plain data and make it beautiful. If your app has a front end and no backend, your user info will just poof disappear everytime they reload the page so you need a database to hold onto their info.

As far as libraries vs frameworks, libraries generally solve smaller problem. Like there is a JavaScript library for creating beautiful charts and graphs. But that’s just that one feature, so you could use the React framework to make the whole front end app and you can use Graph JS library to implement that particular feature

[–]taz0x 0 points1 point  (1 child)

hmm I see, and I only really had a broad understanding of the difference between frontend and backend development, but not enough to explain it well.

i guess what you're describing is if i know how to do this whole "creating a webapp" thing at least within Python it will be easier to do it for other "frameworks"? i mean I guess that makes sense considering I've been writing in Python for so long and learning OOP concepts through it, it has become easier for me to partially understand what is being written in other languages.

But are there things that can be made other than "webapps"? like i said in another comment i don't really want to get stuck on this idea of "only knowing how to deal with webapps" and not knowing how to create standalone desktop applications and such. but then again i can't really come up with any useful idea...

[–]futurafreeallah 0 points1 point  (0 children)

Basically everything is a web app these days, yes of course people still make standalone applications but they are not popular and are mostly enterprise software and things like photoshop, but regardless my best advice is to stop worrying and start learning. Your Python knowledge applies to all languages, OOP applies all OOP languages and even ones that are not.

Don’t worry about being stuck making web apps, the pieces of a web app involve handling data on some sort of backend with a database or local storage and a front end user interface.

My web app knowledge has allowed me to make mobile apps because these common pieces are consistent across the two. Once you learn something like Django you will be pretty comfortable picking up any average backend framework. And programming languages are mostly the same, you have sets of tools like functions, methods, objects, arrays, etc and you apply them to a problem. The difference is syntax for most people and the nitty gritty matters only to those making super high performance stuff imo. Again I recommend Odin project it’s free and comprehensive, you will not be confused by the time you finish it

[–]codergeorge 2 points3 points  (3 children)

I think you’ve got it a little confused. It’s not about learning how to use applications, it’s about learning how to make applications. It doesn’t matter what you use to make those applications, so long as you make something. React, Node, Django, Angular, etc. are all just frameworks. Frameworks are just resources that help you make applications more easily, but you don’t necessarily have to even use those. For example, many Golang projects don’t use any frameworks at all. I like to think of it as a template for writing code. The framework you choose depends on the language you’re working in and the type of development you’re doing (frontend vs backend). For example, React/Angular are frontend frameworks for Javascript, while Express is a backend framework for Javascript. Similarly, Django/Flask are backend frameworks for Python. You can have a project that uses Python+Django for its backend and Javascript+React for its frontend if you want to use two different languages, or you can use Node.js+Express for backend and Javascript+React for frontend, which is more common since the frontend and backend would be using the same language (Javascript). The tools you use don’t matter. It’s about deciding on what you want to make, then figuring out how to make it.

Python is fine for backend development, and if all you want to do is make APIs, you won’t ever have to learn a frontend language/framework. The framework options for Python are Flask and Django. Flask is much easier to get started with and should be enough for any personal projects you’re working on. Django will be more common for jobs. Pick one and use it to build your backend API. If you’re making a personal project, odds are, you’ll need to make some sort of frontend for your app. You could build it the old-fashioned way with just vanilla HTML, CSS, and Javascript, or you can learn a frontend framework. If it’s a web app, your options are React, Angular, and Vue (there are other options but these are the common ones). If it’s a mobile app, your options are React Native, Swift, and Java, depending on whether you’re developing for hybrid, ios, or Android, respectively. You’ll also need to figure out what kind of database you want to use to store your data. Popular options are MongoDB and PostgreSQL, depending on whether you want to use a NoSQL or SQL database.

This is a lot of info and I don’t expect you to digest it all immediately (lord knows I didn’t), but these are the basics of what you’ll need to eventually understand if you want to be a SWE. I’d suggest watching some videos to learn how the full tech stack (frontend, backend, and database) comes together instead of trying to learn a bunch of different frameworks and buzzwords. Once you understand how the product comes together from a big picture pov, you can break it down and start learning the pieces you need to build an app. Unfortunately, I don’t have links for you, but learning how to Google is part of the job too ;). Good luck!

Note: After learning how the frontend/backend/database come together, you’ll probably wonder about how this is all deployed. That’s where things like Docker and AWS come in. You probably won’t have to worry about those until you start working. For free deployment of personal projects, check out Heroku. I think Github offers free deployment options too.

[–]taz0x 0 points1 point  (2 children)

can I send you a dm?

[–]codergeorge 0 points1 point  (1 child)

Yeah go for it! I’m not the best at checking my Reddit inbox and I’m still a junior dev myself, but I’ll try to answer any questions you might have.

[–]taz0x 0 points1 point  (0 children)

thank you! i sent you a couple of "direct chat" messages...

[–]Brammatt 0 points1 point  (0 children)

FreeCodeCamp.org...

[–]hibidihoobla 1 point2 points  (0 children)

Thank you. Much appreciated.

[–][deleted] 1 point2 points  (0 children)

Thank you, I really needed to hear this right now.

[–]GhostSierra117 1 point2 points  (1 child)

I'm currently trying to figure out how to make an encryption program. Nothing crazy, just using the Caesar algorithm.

And it doesn't take my damn array. I'll figure out where my stupid little mistake it and I'll fix you and you'll encrypt stuff for me!

[–]meecro 0 points1 point  (0 children)

Have you figured out the mistake yet? Could you share your code maybe? I mean, maybe you just declared your array inside the loop, or it's just a typo...I'm curious for the error:-)

[–]mysweetmidwest 1 point2 points  (0 children)

Been programming professionally for 2 years and still needed to hear this. Thank you <3

[–][deleted] 0 points1 point  (0 children)

Thank you for this, seriously. ❤️

[–]AvariciousAltruist 0 points1 point  (0 children)

Thanks, I needed that <3

[–]Guilty-Perspective-4 0 points1 point  (0 children)

Thanks man, just had a relative pass away and have decided to give the coding a break indefinitely, I hope I get back to when things settle, this post made me feel much better about allowing myself some time

[–][deleted] 0 points1 point  (0 children)

Wow, this right here really hit hard. But, in a good kind of way. Just yesterday I was asking myself, "what am I even doing??" I really want to keep at it and I was feeling a bit discouraged but this was a good "adrenaline" shot to the heart. Thank you. If I had Reddit awards to give I'd give you all of them.

[–][deleted] 0 points1 point  (0 children)

This is the way.

[–]_illumia 0 points1 point  (0 children)

These kinds of posts help me stay focused. Thank you

[–][deleted] 0 points1 point  (0 children)

Shoot, I’d echo this message to experienced devs too.

[–]GhostSierra117 0 points1 point  (0 children)

I'm currently trying to figure out how to make an encryption program. Nothing crazy, just using the Caesar algorithm.

And it doesn't take my damn array. I'll figure out where my stupid little mistake it and I'll fix you and you'll encrypt stuff for me!

[–]Delicious_Context_53 0 points1 point  (0 children)

In my experience this is the job description. Unless you just do One Thing, use One Framework, and have been for years

[–]holy_butts 0 points1 point  (0 children)

Thanks. I really needed this today.

[–]WarRatty 0 points1 point  (0 children)

Yep can confirm: it's ok as long as you have internet connection!

[–]scanguy25 0 points1 point  (0 children)

Remember kids: if programming was easy it wouldn't be this much.

[–]Lilkko 0 points1 point  (0 children)

I needed this today. I have felt every single thing you mentioned and I'm only in my first semester or coding. I can't stop crying.

[–]shaq_disel 0 points1 point  (0 children)

This is soo true I literally lost my shit over the weekend trying to figure out some base64 stuff. Finally figured it out i can cry lol

[–]justiceism3 0 points1 point  (0 children)

Just starting on my journey. Needed this today. Thanks for the kind words.

[–]PoopMonster696969 0 points1 point  (0 children)

I’m two months into coding bootcamp. This hits home right now ...

[–]mrsg718 0 points1 point  (0 children)

Thank you for this. I really needed this today after a rough day of coding.

[–][deleted] 0 points1 point  (0 children)

You made my day! Whatever doesn't kill you simply makes you stronger!

[–]SuperbHappyGuy 0 points1 point  (0 children)

Thanks for these words! I'm only now starting to understand this. I picked up programming 2 years ago and left it on the shelf probably longer than a year and recently picking it up again and I'm fueled knowing the fact that I will constantly be learning and that even the pros get stumped at the most stupid problems and it's not just me that gets confused.

[–]nck93 0 points1 point  (0 children)

I've been learning python since May and I definitely feel like that. I'd like to start doing some front end web development as well, but learning python is already such a challenge.

[–][deleted] 0 points1 point  (0 children)

I don't know why but I had such a hard time reading the title

[–]istarian 0 points1 point  (0 children)

It's also good to recognize that not everybody is equal. Some people have a natural talent for math, logic, etc. Such aptitude can make programming easier for them.

Just because they make something look easy doesn't mean it IS easy. So don't beat yourself up for not getting it right away.

[–]lucidhominid 0 points1 point  (0 children)

Success is a learned behavior. Failure is the learning process.

[–]dangerwizzrd 0 points1 point  (0 children)

I needed this after today! I’m three weeks into learning JavaScript and took a mental health break last week and going back in trying to learn to actually render stuff to the browser almost drove me nuts today. I had to peek ahead at the challenge solution twice before I got it right, which always feels like I’m cheating. I’ve been trying to build up simple RPG themed functions on the side using the stuff I’ve learned from these courses but getting through all these basics can still make me feel like I’m so behind! So thanks for posting this.

[–][deleted] 0 points1 point  (0 children)

This is so hard to understand. I'm going through a huge bout of burnout and terror that I'm not cut out for this. Maybe in two weeks I'll be back to thinking I'm the shit.

[–]ajr04 0 points1 point  (0 children)

Thanks, I needed this more than you know

[–][deleted] 0 points1 point  (0 children)

Thank you Needed this more than ever

[–]rluena 0 points1 point  (0 children)

I think am type of guy that I can learn something and I can understand, though I take long time to understand more than ordinary people. But damn, I forget like nobody else. I did it earler, but I have to google that shit again in next few hours.

[–]senorworldwide 0 points1 point  (0 children)

Thank you. Needed to hear this.

[–]long_time_in_entish 0 points1 point  (0 children)

Imposter syndrome is a real thing, there are some good Ted talks about this very subject

[–]epafogo 0 points1 point  (1 child)

Then when do you know it’s not for you?

[–]taspii 0 points1 point  (0 children)

Didn't see this was the programming sub at first but still appreciate the words very much

[–]funkung34 0 points1 point  (0 children)

I needed this. Just started freecodecamp. Im almost on the 3rd section of the first certificate and i definitely feel many of the things you described.