DEV Community

Ben Halpern
Ben Halpern Subscriber

Posted on

Do students get to work with existing codebases?

I'm curious as to whether students in computer science and/or code schools are getting to work with existing codebases in any way? "Legacy" or otherwise.

I definitely never did this in any types of education I was a part of, but I'm curious if anyone is doing it these days.

Top comments (34)

Collapse
 
yechielk profile image
Yechiel Kalmenson

I had a friend who went to a bootcamp (sorry I don't remember which one) where the final project was two weeks. Week one students paired up to create a project, and then in week two you switched projects with another team and had to add features to their code without help from them.

I believe the focus was two-way, in the first week the focus to make sure your code was clean and documented enough for the next team not to have too hard of a time, and in the second week the focus was on working with a "legacy" app written by someone else and contribute to an unfamiliar codebase.

Collapse
 
dvanherten profile image
Dave van Herten

I've often wondered how you'd introduce this concept into a classroom setting. This is a really neat idea on how to do it. I think schools would benefit greatly from it.

I'd love to see schools or bootcamps introduce debugging of an intentional hard to find issue as well. Not sure how to do that one well either.

Collapse
 
danielw profile image
Daniel Waller (he/him)

That's an awesome idea for a final project!
It will definitely help to prepare you for the things you will see once you start working.

Collapse
 
yechielk profile image
Yechiel Kalmenson

Yup! I was really impressed when I heard that.

If I ever go into the bootcamp business that's one thing I'd adopt :)

Collapse
 
david_j_eddy profile image
David J Eddy

WoW! What school is that 'cause it just earned some major brownie points from me.

Collapse
 
yechielk profile image
Yechiel Kalmenson

Wish I remembered... :(

Collapse
 
austinhardaway profile image
Austin Hardaway

I'm a CS senior at a large public university, and this I think this is the biggest gap in a CS Degree vs. Getting a job as a software engineer. At no point in my education did we look at any existing codebases. The closest we got is using Django in web programming and using android in mobile (in that we had to interact with an existing code base). When I got to my first internship I realized very quickly that my education would not prepare me for grounding myself in a codebase and that was something I would have to learn on my own.

Collapse
 
meloncatty profile image
Krista Handel

Yes. In the first module we swapped our project with someone else's. Digging around newbie vanilla JS that you didn't write was... fun!
In our last module we were assigned an open source repo and had a week to fix a bug. The project we contributed to was groomed over to ensure we had something somewhat easy to tackle as beginner, and some groups had a codebase with languages we weren't learning. Some of the people maintaining these projects did not like this because (I assume) some students weren't able to fix the bug in a week and never returned to it after our allotted time. We were quite busy with other projects and stressed with graduating, but I can see the frustration the maintainers might have felt with people not keeping their word.
Overall I enjoyed the experience, although I wish I would have spent more time on it.

Collapse
 
vbordo profile image
Victor Bordo

I didn't get this experience in school. We had one assignment where we were given some code to QA. It wasn't a real-world app though, just pretty trivial functions with a test-suite we needed to modify. A few months into my first job out of college, I remember wishing I had more experience working with larger, preexisting codebases.

We've been thinking about adding an educational component to DevFlight in the future. Essentially, students/ new devs who want to simulate a professional software development experience working with existing codebases can closely collaborate with participating OSS maintainers. Devs become more effective software engineers and maintainers have access to devs willing to help them with their projects.

Collapse
 
jsn1nj4 profile image
Elliot Derhay • Edited

I wish I were able to get some actual experience in college too.

Also, your educational component for DevFlight sounds like a really neat idea (although I'm not a student anymore, so I probably wouldn't qualify).

Collapse
 
vbordo profile image
Victor Bordo

Thanks! You never know, it could mature into an efficient, pleasant way to learn a new language/framework for seasoned devs :)

Collapse
 
dandevri profile image
Danny de Vries

At the Minor Web Development at the AUAS we work with a couple of stakeholders (mostly agencies). We do occasionally fork the repository or get a clone of a codebase for students to work with.

One of the things we almost do with every project is working with real data from the company / business. Such as rest API's to, not necessarily the exact tech stack but the same raw data they use.

Collapse
 
sleepyfran profile image
Fran González • Edited

Nope, never had to deal with legacy code at university. The closest I was to it was a networks class in which we had to implement communication through Serial Port (yeah, Serial Port) and we had to tweak some of the insides of the driver that the professor gave us, but still not really, which is sad considering that once you start working it's very unusual to be working with a clean slate.

Collapse
 
kayis profile image
K • Edited

You don't have to. At university, you're always free to do your own new shiny thing.

But you can, often professors have research projects which go many semesters and if you're interested in the topic, you have to work with the code-base last semesters students left.

Collapse
 
thomasjunkos profile image
Thomas Junkツ • Edited

Here in germany there are several ways where people wanting to work in IT have contact with existing code:

  • There is apprenticeship (not students) where people work up to 4 days a week in a company and having in the first year 2 and then in the following 2 years 1 day a week to spent at school. They get the most coding experience but oftentimes this lacks most of the important CS stuff.

There are two types of Universities:

  • The classical university
  • The so called (Fach-)Hochschule which was/is a more "hands on" version of the university and usually brings people faster into jobs. Most visitors of this branch of the educational system spent 3 years to get a bachelor's degree and go into business

AFAIR both of these imply that you have to spend at least half a year at a company to work on "real" stuff and write your thesis after that. I mostly worked with the latter, so I can not say for sure things regarding the further.

Collapse
 
keraito profile image
Chak Shun Yu • Edited

Last year in my Master's (Netherlands) I had the chance to follow a course called Software Architecture, in which the objective was to take an existing Open Source project as a group, analyze its architecture (and different aspects to it), and write a report on it. What was awesome though was that we were very encouraged to use the knowledge we obtained from analyzing the project to make contributions towards the project. There was also a dedicated slack channel for sharing statuses on all the PRs of all the groups, and the lecturers would highlight the merged ones during lectures and on Twitter. Was a really great way of getting to learn about the Open Source project and the community.

For those interested, all the reports of all the projects were gathered at the end and published as an ebook. The link of my year is here. Not gonna mention my particular project to avoid self-promoting, but it's definitely web dev related 😉.

Edit: In the time of the course my group and I made an amount of code based PRs to our chosen project, most of which were merged.

Collapse
 
simonhaisz profile image
simonhaisz

When I've taken part of industry discussions with local schools about their co-op programmes the feedback on what they were missing was universally:

  1. Automated tests
  2. Version control
  3. Small changes to a large system

In our co-ops I've seen improvement on the first two - we don't have to train people on the basics of git anymore and the basics of unit tests are covered these days.

It's too bad that this is still a common gap in most people's education.