Just when I thought I was doing okay, I encountered a few Leetcode problems that were really difficult for me. As in, I had no idea how to even approach them.
So now I’m wondering. Does an everyday programming job require me to be some Rainman Quant?
Honestly, it seems like most coding jobs are like:
Building a UI with HTML / CSS.
Simple DOM modification using event listeners.
Implementing basic functionality like user authentication, forms, popups and alerts.
Fetching JSON data and navigating the returned object with OOP techniques.
Taking coffee breaks. Heh.
I mean. Some of these coding questions are ridiculous IMO. Like, find every possible combination of four numbers, but if you use nested loops to systematically loop through every possible combination, it will time out. So unless you can come up with an elegant, one-line, O^1 solution that doesn’t need to test each combination, you’re a basic B and we don’t want you.
Any thoughts on this? I feel like I will continue to learn patterns, improve, and build more neural connections and all that. But there has to be a point of diminishing returns. Like how hard does software development get, and how much of a genius do you need to be?
I can’t speak for others, buts its not like this at all. I do spend a lot of time during the day in meetings, but its way more complex than simple modifications . Every project is new and you have to get creative on ways to complete the task you are given. Just because you know how to do something doesnt mean you will use it in the same way every time. Theres nothing “simple” about it. Its hard work, and its going to be hard. There are times where I still stay up and look things up to further my learning after I see what kind of project I am working on.
Everyone forget, and needs to look something up. However, that doesnt mean you will have all day to look stuff up. There has to be a line of being able to get things done without taking up too much of your dev time.
I wish it was as simple as the points you listed out, but thats not the case. That doesnt mean you have to be a genius, but just know its hard work. There may be times you get up early or go to bed late because you need to learn more about what you are doing. Really just comes down to your commitment in my opinion. Fro example, I have to turn in my work for a project no later than Monday at the end of the day. Until I get put on a new project, I will be studying the areas where I could of done a lot better.
I will agree though, some of the programming questions may be more advanced than what you start out doing, but it doesn’t hurt to look up the answers and further your understanding and learning of it
So, the latest thing I was working, or what I have to complete Monday is working with AI bots or ChatGPT to specific. This new thing that hasnt been around for more than a few months and we had to make a proof of concept. Essentially the bot will be used for finance reasons, but none of us have ever worked with a AI bot before. So I spent mornings and night pouring over documentation.
It depends on what the project is. Some projects are not that bad, and can seem pretty straightforward. Others, the client wants 20 millions things done. Some you may be familiar with, and others you wont be.
From what I’ve experienced, it’s a case by case basis. I mean, I’ve definitely had moments where I’ve had to figure out what I’m going to do. I haven’t once used an algorithm like those from Leetcode in my projects and I’ve built a LOT of real world applications that are all data driven and in use today. I’m certain that in certain, niche scenarios you’d need binary search trees, but it is highly doubtful you’ll ever use any of those in a project.
I’m hiring for another developer in our area, and I’m definitely not having them do any kind of complex algorithm coding. There are some base level technical questions, and there’s a project to test their accumen and skill for front end development.
Its more than that. The api is not like a normal api. The way you feed information is a pain in the butt, and even then you will be spending hours on prompt engineering to make sure the results are meaningful enough. I wish it was as simple as just making an api call.
At the same time because its a bot its going to make mistakes, or not return the correct information. Its then the developers jobs to find a way to either make it work, or work around it.
Again, its about adapting to the project and client needs. Its not all going be a routine simple implementation of stuff. You are going to take that basic stuff and take it up 20 notches
It seems like there are a lot of real-life details that I won’t fully appreciate until I actually get put into that environment.
Thanks, man. I was just curious as to whether most programmers are like, Mathlete, quantitative Newtonian geniuses, or if a lot of them are just intellectually mediocre individuals who overstate how difficult their job is in order to gatekeep their profession.
@marcusparsons Great to see you again, man! So it seems like while programming can be an extremely difficult profession for lots of reasons, it’s generally doable by normal people who are willing to learn and work hard.
Right, some of those interviews and questions are ridiculous. It does depend project to project. Even what seems simple can quickly turn upside down in a matter of moments. Especially dealing with stake holders who don’t exactly know what goes into a application. They just want their needs met. So it’s definitely being able adapt, but nothing is ever going to be simple
Yes, for the most part. You do have to be intelligent, but you don’t have to be a genius. And you always need to be learning, improving, and willing to admit to mistakes and correct your code. There’s so many times where I had built something, and it worked at that point, but once it scaled up, it failed…horribly. And that’s where you admit there’s a problem, search out that problem, and make it better. There’s building something to get it to work and then there’s building something so that it works at utmost efficiency. That’s part of what makes the job great; there’s always code that needs to be maintained/optimized!
“There’s building something to get it to work and then there’s building something so that it works at utmost efficiency.”
That really gave me some insight and opened my eyes to the nature of the profession.
Your comment on scaling up and finding bugs made me realize how dynamic and unpredictable code can be, and why programmers need to constantly be learning.
I guess there is never a point where the code is “perfect” or when you’re “smart enough.” It can all be further optimized, improved, etc. Yes, there may be an asymptotic / diminishing returns cutoff where even Rainman himself would only improve efficiency by a tiny amount, but that doesn’t mean we should settle for being mediocre and not trying to constantly learn and improve, because maybe someday you will encounter the unexpected scaling or whatever issue that might require a little extra horsepower to solve before a deadline. And take pressure off of your team. And make the code more efficient and less prone to future bugs. So many variables.
There is a lot more to this profession than I realized. Thank you guys, for sharing your experiences and helping me develop a deeper appreciation for this field.
I’m definitely no Rainman. I’m extremely basic and have zero real-world experience, as you can see from my previous question about the industry.
I’ve picked up maybe a few things from interacting with all the amazing people on this forum and others. There are some seriously bright people in the world.
Also, I forgot to say thank you for your response and encouragement, earlier. Regardless of how you feel about your experience level, I’m glad you reached out, and hope you will continue to do so, in the future. Because there will always be someone who can benefit from what you have to offer.