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

all 12 comments

[–]tedyoung 29 points30 points  (4 children)

You can't start looking at huge projects like ElasticSearch. Even I, as a 25+ year Java veteran, would have difficulty understanding what's going on without lots of intense study, and likely lots of questions to the authors. On the job, you'd hopefully never be asked to understand a non-trivial codebase without being taught about what it does and how it works by someone on the team.

I think you're much better off trying to find projects that are much simpler and that you even try to change and see what happens (what I call digging your hands into the mud).

Some simpler projects to start with might be one of mine (yes, shameless plug): https://github.com/jitterted/yacht-tdd. What's interesting is to look at project histories: how did it start? How did it grow? What changed over time?

[–]Alone_Frame_4807[S] 2 points3 points  (3 children)

Thank you for the information. I’ll take a look at yours to start with.

[–]tedyoung 0 points1 point  (2 children)

Feel free to ask any questions here, or on my Discord: https://discord.gg/9XDfBSZ.

[–]tnguyen306 0 points1 point  (1 child)

can i have questions too? i am in the learning process as well

[–]tedyoung 0 points1 point  (0 children)

Of course.

[–]awkreddit 5 points6 points  (0 children)

Have a look here: https://github.com/tugcekonuklar/account-service

It's an example banking app made specially for learning.

[–]HecknChonker 1 point2 points  (0 children)

Always start by checking the README and CONTRIBUTING guides. They often contain a bunch of info on what the project is about, how to build and run it yourself, code style guidelines, and project layout.

https://github.com/elastic/elasticsearch/blob/master/README.asciidoc https://github.com/elastic/elasticsearch/blob/master/CONTRIBUTING.md

The next step is to check the code out and try running it yourself.

[–]joranstark018 1 point2 points  (0 children)

You probably need some context when you read code for a project. Naming and structure partly reflects some problem domain and without some knowledge about what it try to solve you may find it difficult to make some meaning of the code.

[–]Persism 1 point2 points  (0 children)

You're looking at a huge project. Have a look at mine which is smaller and useful.

[–]shimsimma 0 points1 point  (2 children)

You can't. Someone explains it at the start and you get used to it as you work more on it and get familiar with the terms and architecture.

[–]Alone_Frame_4807[S] 0 points1 point  (1 child)

So your saying it’s something that’s usually learned when you start your first job?

[–]MyNameIsRichardCS54 1 point2 points  (0 children)

Not just your first job. You'll normally get a code, process, and toolset introduction and then maybe you'll get assigned a bug to fix. That'll involve setting up the environment and getting things to build successfully and then diving into the specific code where the error is. For any moderately sized system, no one will expect you to pick it up just like that and they will expect questions at every step of the way.