My source of learning is trying weird ideas. I wanted to learn about agents and how they worked, so I built an autonomous consensus based set of AI agents with no human intervention to build a software collective.
In that process, I learned interesting things about how agents work. Then I used those ideas, to build agents for other tasks, and I have been working on improving those with other weird ideas.
Through these process, I develop opinions about how they work. They may be incorrect, but it gives me a certain kind of insight into them, and how to adjust them.
I have silly question to anyone here who is willing to answer
I truly understand it takes unreasonable amount of time and dedicated focused effort to get good at something. But why is there any explanation for it? I know about the traditional neuro-sci explanation of myelin[1].
So my question is, is there any research on how to reduce this time? Like we all know life is short and as human we have interest in many things and we should specialize and try to go deep in one craft.But is there any way of getting closed to that master level performance in short practice-perfomance cycle
I so much agree with you. I understand and remember the things I learn more when I am having fun or it piqued my curiosity. But I guess shortness of time needs us to focus on the efficiency aspect of it too.
Location: Dhaka, Bangladesh (Open to relocation)
Remote: Yes (Strongly preferred)
Willing to relocate: Yes
Technologies: Java, JavaScript, TypeScript, Spring Boot, Vue.js, AngularJS, Node.js, PostgreSQL, MySQL AWS, Docker
ABOUT: Senior Full-Stack Software Engineer with 5+ years of experience in developing scalable, high-performance applications. Strong background in backend technologies, with a focus on creating robust, user-friendly applications.
Really intrigued by your comment. Can you please elaborate on the part of meta programming in java. I am trying to learn it in java. What will you suggest to someone who is working in java for a while to dive deep into it?
I’m not the parent poster, but what they likely meant are annotation processors. They are basically a compile time mechanism that can create new classes based on the used annotations in the program (important, they can’t modify existing classes! This is so that reasoning about the code is easier).
This is mostly used by libraries and is seldom used for actual applications (I mean, annotation processors themselves, ones implemented by libs are definitely common), for example MapStruct is a really cool library that generates mapping code between two classes, one can specify which field/property maps to which and thus making a common, error-prone operation very readable and easy to maintain.
With that said I disagree with the original statement that one should absolutely know/use these tools, similarly to macros in other languages these are very advanced/last resort mechanisms that are very great in that rare chance they are needed, but overuse of them can make code very hard to understand.
Annotations (like @Entity in JPA/Hibernate) and reflection is what I mean.
Several Java libraries use annotations in a good way and also once one masters Java, they aren't too bad to make oneselves.
Reflection is about taking decisions and even changing behavior at runtime, like "iterate over all classes in this package, filter the ones with name pattern/annotation (or whatever other information is available at runtime) and use/update them.
Reflection is very powerful and IMO somewhat more tricky than annotations.