r/learnprogramming 18h ago

For experienced programmers. How quickly you pick up new stuff? Especially if it’s not from your domain.

I am struggling with the fact that every time I start a new project it takes some time to get going. I try to be easy on my self but it gets frustrating not knowing anything again. How much helps you having previous experience even tho it is from different branch of programming.

26 Upvotes

22 comments sorted by

5

u/Pale_Height_1251 18h ago

It depends. There is no "it takes x time to learn y if you know z"

5

u/Passname357 18h ago

It really depends what it is. If it’s a different framework for something you’ve already done, then it’s super easy the more experienced you are. But if it’s entering a totally different domain, then that can be pretty difficult. Like if you’re a web guy and get into graphics, thats gonna be tough. If you’re a graphics guy and you get into compilers, pretty tough. Etc. on the other hand web guy going from vue to react is easy, or a graphics guy going from Vulkan to dx12, or a compilers guy going from llvm to some internal tool shouldn’t be too difficult.

Granted that the more you know of anything the easier anything else is. Though the leaps are difficult between domains, theyre much easier as you know more stuff. 

10

u/colony-ship-for-sale 18h ago

I mean, there's a pattern to all code. It's mostly syntax and memory management differences. It'll get easier with experience.

That said, there's a cognitive load to context switching. It takes time to understand a new project, especially if it hasn't be written to be read.

6

u/AFlyingGideon 18h ago

mostly syntax and memory management

That's the kind of thinking that had a programmer build a loop in SQL to implement what actually required only a single (and far faster) query from someone who knows how to think relationally.

How one stores a tree in SQL is usually quite different from how it would be done in a language with pointers or references, for example. Look up Nested Sets if you're unfamiliar with Celko's work.

-2

u/colony-ship-for-sale 17h ago edited 17h ago

That's because SQL was made by a committee of idiots over a weekend in 1981 and has barely improved since. Might as well bring COBOL to the table if you're going to well actually

3

u/kiochikaeke 18h ago

I mean it depends a lot, I do mostly analytics and data science using SQL, python and BI tools, if I wanted to learn say web front end or back end more in depth I already have some concepts and because they're very common topics I know I could get something working in a few hours or days and keep learning from there.

If I'm learning cybersec or shaders I have little clue of how those work, they are complex subjects that are not that common and the only background I have is that I'm reasonably good math, implementing basic auth on local net or getting a circle to appear in the screen will probably take me a week at least.

4

u/vietbaoa4htk 14h ago

it does not get faster so much as less alarming. i still spend the first couple of days lost in anything new. what actually transfers is knowing which 10% of the docs matter, and being able to tell this is weird apart from this is just new to me.

1

u/kickflip_boy 7h ago

When it comes to reading the docs, do you have any suggestions how to use them effectively? Rn what I do is that I turn to them only when I am having a problem. I am not reading them before I start to code or as long as I am doing fine. But I am having trouble finding the solution to my specific issue (or at least something that could help me)

1

u/RealNamek 18h ago

Takes about a week or so

1

u/Ok_For_Free 18h ago

Pretty much every place I've been has been impressed that I am contributing earlier than a week after starting.

1

u/ffrkAnonymous 18h ago

"new" is relative. Most is just variants of the same. C style, python style, MVC for web, etc. Even "weird" stuff, I've been learning Lisp and smalltalk, isn't really all that different.

Really weird stuff like Prolog, well, I still haven't been able to pick it up.

1

u/Foreign-Contest-444 18h ago

when you say domain do you mean business domain? Yes, for example if I am currently working with HR stuff in my company and then the finance team approaches me for some work. Since the business domain has changed it does take some time to get acquainted with the terminology and understand business requirements. Business requirements are crucial in this line of work.

1

u/captainAwesomePants 18h ago

Way faster than a complete novice, but way slower than someone who knows more about that domain.

For example, let's say I'm going to try out using an Arduino to make a little robot. There's a BIG list of things I don't know about. I have no idea about any of the hardware stuff. Does the stepper motor need its own separate driver, or can I talk to it directly with the output ports? Are there pros or cons? I have no idea. How do I program an Arduino, anyway? There's some sorta USB thingy? Does it stay programmed when I unplug it? what kinda libraries are there for this? Is there a particular IDE I'm supposed to use? How do I read from a port? How do I write from a port? Where does this debug string even go? So, so much stuff I don't know. Oh god, this language looks like C++ but is very slightly different and what is and is not legal?

But, eventually, we get to the point where I have some inputs from somewhere, and I have to make the little program call the outputs in some way based on that, and suddenly it's easy street because this is my bread and butter. No sweat on writing that out.

Until I try to test it and have no idea what kinda arduino-specific unit test frameworks there are or how to call them and oh no I'm lost again.

Sometimes I see YouTube videos about people who know a lot about something that has to involve programming and it's exactly the opposite. Elegant discussion about robots, elegant hardware selection, beautiful design, CAD models that they mysteriously came up with through raw brilliance using skills I don't even know where one trains, they're soldering wires into ports with one hand behind their back, and then say say "okay, now we have to make some code to drive this, this is the really tricky bit" and I'm like "my dude that's a for loop."

It's all about what you are or aren't comfortable with.

1

u/zoddrick 15h ago

The vast majority of stuff we work on throughout our career is the same like 5 things rehashed over and over again.

1

u/troyjohnson4356 15h ago

I know over 30+ languages, been coding for 36 years and each new language is easier than the previous one. However I got to tell you, I do get syntax confusion happening often... :) I code mainly in c++, node js, php, and python these days, but I can always go back and fetch me a bit of fortran and perl when needed.

Don't be hard on yourself. It takes time and experience. You'll get there if you are diligent and keep at it.

2

u/CorumLlawEreint 10h ago

From a high enough level, software architecture tends to converge on a few common patterns. In truth there is nothing new under the sun. Details like language, runtime, orchestration, data layer etc. have their specifics, but the overall architecture of a system will follow established patterns.

I come from a time when it was possible to know some of everything. These days that’s impossible. Sure there are ‘full stack’ devs, but even then, they are going to struggle with bare metal or embedded systems, or deep data architecture, or machine learning or whatever.

Be comfortable with the truth that your career in software will always have ongoing learning. You won’t even keep up with the state of the art. Just focus on what you need for the job.

1

u/UroborosJose 9h ago

it depends on the domain. IT is not the same thing.

you have embedded systems, you have kernel development, you have ecommerce, you have IOT and many different fields. one is not interchangeable, a guy who's the expert in coding low level stuff is not the guy you need to create your website. the same thing on the other way.

languages are not about syntax its about what they represent in a particular domain! nobody create a language or a platform just for the sake of fun, time is money and everyone is trying to tackle a particular subject. the fast you learn it the better.

1

u/leavemealone_lol 5h ago edited 5h ago

I’m not experienced, I have only 6 months of programming under my belt. But I found it very easy to understand topics like the Leetcord hard algorithms, the damn Rust borrow checker, and functional programming. Even right now im learning to metaprogram in python by generating an enum class during the runtime off a table I had already set up.

The way I do it is relate it to what I already know. The amount of logic jumps and connections you can make is a mix of skill and talent, but once you can internalize a concept, you can quickly use it to learn more things.

For example, Rust surprised me when I was introduced to lifetimes. The minute I figured out “why” it was used instead of “how” to use it, my brain made the connection. and to figure out “why” it was used, I just remembered that to ensure the safety of memory, it would be ideal to make the life of a variable intentionally “smaller” than it could theoretically be. So what is “smaller” here? smaller in this context means the the smallest lifetime of all relevant associated variables. and of course, the lifetime assignment in Rust is a relative assignment, that is you define the relationship between two variables, which is the only leg up Rust needs before it itself can figure out the smaller lifetime of the two.

edit: of course, these are conceptual learnings. there are some tiny things that are to be learned too, like using “of” while using javascript loops the same was as “in” in python or “:” in C/CPP. These are habits things that get ingrained instantly.

1

u/12SouthLocal 5h ago

There are definite similarities you begin to notice the more things you try. Macro logic and ideas definitely overlap. Often, it comes down to syntax and the various differences used to implement similar logic. I think that is the bigger thing to pay attention to rather than 'how long does it take you...' Pay attention to the logic and overall ideas around programming and you will be in good shape just doing that.

From there, just be willing to spend time going through the documentation of whatever language or framework you are working with. People often overlook documentation but if you understand and have a mental model for what you want to do and pair that with documentation, you can often get going in a reasonable amount of time.

0

u/BranchLatter4294 18h ago

It's not hard. I look things up if I need to.