When, where, and how did you learn project complexity management and do you have perfect recall or an average human byte?
from j4k3@lemmy.world to programming@programming.dev on 19 Aug 2024 04:56
https://lemmy.world/post/18813441
from j4k3@lemmy.world to programming@programming.dev on 19 Aug 2024 04:56
https://lemmy.world/post/18813441
What is the CS / uni goto course for this, or what really clicked for you?
threaded - newest
Your question is confusing… are you asking how to get better at project management?
I’m asking to find out if there is a class and if it has a goto book, but leaving it open ended for other techniques like maybe Emacs and the org mode stuff, etc.
For me the best learning came from actually working on huge, complex projects - then seeing the problems that come with that - then looking for ways to improve the situation.
If you are asking about a complex project architecture then Domain Driven Design is for you.
If you are asking about project management, then perhaps you need to look at something like Scrum.
Scrum lends itself to procedural nonsense. It’s rarely implemented in a way that improves project management.
In my experience scrum usually doesn’t work if its process is not followed correctly. Very few people understand its principles and even fewer correctly implement it.
But if used correctly it brings a sense of organisation to a complex project.
Yes. Actually implementing Scrum can go either way, but going out of your way to learn and apply it is certainly going to end in tragedy.
Also, what do you mean, OP, by “do you have perfect recall or an average human byte”? Are you thinking of information in terms of bits and that people can only keep a limited amount of things in working memory at a time?
Human byte was used in a conference awhile back to refer to the amount of information one can process at any given point in time. Someone that has total recall has a much larger human byte. The term makes clear intuitive sense to me, but I’m a highly abstracted person in the first place. My abstraction seems to limit how much complexity I can manage with a project and code. I’m largely exploring the implications and contrasting personalities to better understand how people are able to manage so many details in some projects.
I’m messing around with trying to understand the game Cataclysm DDA at the moment, and reading into everything that is happening as it is scattered all over the project is a struggle. When I see all the pull requests and the daily release cycle of the game, I’m baffled by the way someone is able to manage this kind of project and maintain an overall vision and consistency in the game and code. I feel like I must be missing some critical element of methodology.
I exist in a vacuum, and live under a rock. I was an advanced fabricator, got disabled, and now largely stuck finding myself while exploring the digital world. I’m learning entirely on my own and without any background or mentors. In abstract, I might spend forever trying to invent the wheel if I fail to ask the right questions.
As someone who is on the spectrum, I hope you don’t find this offensive, but have you considered that you might be on the autistic spectrum as well?
My first degree was in medical science, and it has been a while, but I am pretty sure our neural pathways are nothing like a Turing complete binary machine so it is pretty weird to try and evaluate people in terms of “human bytes”
I am an intuitive thinker that functions in abstract thought. I am not autistic. I have had extensive testing related to my physical disability and massive head injury. You lack a nuanced understanding of the context and scope of what I am asking and why. Everyone has a limited amount of information that they can process at any point in time. For most people they can only handle around a thousand lines of code at a time. There is a major metal challenge to overcome for a person to handle a project with hundreds of thousands of lines of code. This is largely an organizational challenge. When such a systemic challenge is encountered, larger groups of people tend to come up with better solutions over time. I am limited in my exposure to other people. However, I am aware that many people here are more experienced than myself in this area. This post was an attempt at exploring different forms of organization. I’m also exploring the curiosity I intuitively pick up on that indicates many of the best programmers likely have perfect recall, or at least have a larger human byte than average. I am far more self aware than the average person, and have made the assumption that most people that are gifted in their ability to handle more information than the average person will also be self aware to a similar extent. Abstracted intuitive thinking is a rarer form of functional thought, but it is not autistic. I can apply this kind of abstraction and mobility across subjects to anything. I do conflict with personalities that lack value for intuitive thinking and abstraction, but it is because they can not see the bigger picture, their own internal conflict, and address it effectively. They also tend to see my thought process as arrogant and assumptive, but it is because they lack a contextual understanding of my real flexibility and mobility across abstracted subjects and ideas. For example, when you hear the stories about Einstein abstracting the light from a train to extrapolate the principals of the speed of light, or a man falling from a roof to abstract the properties of gravity, that is a very familiar way of thinking in my mind. Everything I encounter is like this; where I am fitting the pieces together and noticing connections and coincidence that I find amusing. I’m very aware of the assumptive bases and correcting it constantly. I operate on the statistical probability of my assumptions, but I use all mental spaces to support each hypothesis and remain open to any new information that better fits what I already know.
Ah, I think it’s like “keep track of 7 items, the 8th might push something else out” ( …wikipedia.org/…/The_Magical_Number_Seven,_Plus_o… ).
So like mind-map-complexity.
Like, when you are trying to figure out some bullshit OOP inheritance, you are 9 levels deep and have no idea what the original problem was, but you feel like you have made a connection to the solution, but now you have to backtrack everything (or figure out where your last edit was) to try and figure out what that connection actually means and what you have to do now
Most people do not know how to manage thousands of files of code in a project until they do exactly that. It comes with experience.
Many people learn by example, working on existing projects and seeing how it’s done.
Others can learn the hard way by making their own projects, and refactoring as the complexity grows.
It can be helpful to use a framework for your language of choice, that has a way of organizing files and code.
courses and books really don’t help much, except maybe to learn some ideas that some people use.
Once code is organized, there are as many ways to do it as there are people. But all of them seem to fall into broad patterns with none being wrong, except for those that slow down the code in real time systems.
The main secret behind any code organization is that it should not drive other people crazy, and they can learn to work on it too .
People will say that a project should be organized and follow rules. But I have never seen a big project that is more than organized chaos. With a few sketchy rules keeping the entire thing connected with bubble gum and duct tape.
I think a medium sized project with a few hundred files and a few tens of thousands of lines of code can be organized well. After that it gets more chaotic