2

I hope anyone could give me their opinion or recommendation. I'm a PhD student from a life science field. But I have been teaching my self python and a little bit of MATLAB for the last few months. I was hopping to use this knowledge for molecular dynamics and data analysis. However, the recent lock down of my institute and the fact that I'm in my first year let me with no data or experiment to run to obtain information to process.

I found a very entertaining project which consisted in make a word-cloud from all the abstract from a specific author, from PUBMED. That was really fun, but only from a couple of days.

After that, I found my self with a lot of enthusiasm to continue codding but not so much of ideas for it. I'm doing the https://www.freecodecamp.org/learn/ tutorials to learn more about HTML and CSS, and reading the https://runestone.academy/runestone/books/published/pythonds/index.html book to increase my theoretical and practical knowledge into python. But, all of this, although useful, I don't feel that is the same as coding and trying to solve problems using computational skills.

So, my question, and sorry for the extensive background, is if there is any community or place to search for open source project where people work with each other, not necessarily for money, actually my idea is to gain tools and knowledge rather than money at this moment.

I tried to convince some friends but, it doesn't go further than creating a GitHub project. Because I don't have a big portfolio it is difficult to have an internship or a junior position for a couple of months in a company.

Any ideas or comments will are welcome.

  • 2
    Generally speaking, you wouldn't just "join" an open-source project, but rather you should find one and contribute to it. Have you found one that seems interesting to you? – Tymoteusz Paul Mar 28 at 18:47
  • 1
    I unprotected this question because it hasn't yet received any useful answers. If you're tempted to answer with snark, please don't! – O. Jones Mar 28 at 20:58
4

I'm not completely sure Workplace is the right forum for this question. But, I'll answer anyway. Because, I was a biochemist that was sucked into software a long time ago.

Get yourself a github account if you don't already have one.

Most open source code, historically, has arisen from people solving problems for themselves and their colleagues. People work on code in areas where they have a need. If you follow that route into open source, you would start by thinking about what you use in your day-to-day work. If you use any open-source projects, see if you can find their repositories, using your favorite search engine. "github projectname" is a good starting search term.

The repository's README page may mention "how to contribute." If it does, you can follow those instructions. The "issues" section of the repo may suggest good things for new contributors to work on to get started. There seem to be a few different projects in the molecular dynamics field, for example.

Or, you can search for "open source projects needing help." I've tried this and it's a lot of stuff to sort through.

Many open source projects really need help with their documentation. Working on the docs is a great way to get to know a project before jumping into its code.

Then, use github to make a "fork" of the project that interests you. Hack away. When you're confident you have something useful to give back, send a "pull request" to the maintainers of the project. (And, be prepared to have your first few pull requests sent back to you for more work. Most maintainers are polite and constructive in their criticism of pull requests from new contributors. Some aren't, in which case just use your fork of their project.)

| improve this answer | |
  • +1 for the bit about documentation. An enormous number of open source libraries and such are usable only though either directly reading the code or searching StackOverflow for basic information about them. – Matthew Gaiser Mar 28 at 21:38
2

I tried to convince some friends but, it doesn't go further than creating a GitHub project.

Open source is a lonely business. A lot of major projects are just one guy toiling away for years on end and it can cause a lot of issues when they just give up. I am a Django dev and have faced several cases where several major libraries used by tens of thousands of projects suddenly were deprecated as the original developer didn't want to maintain it anymore, so there are a lot of projects out there that could use basically anyone to work on them, if just to keep the one guy motivated.

CHeck out https://www.codetriage.com/. There is a heck of a lot of work that needs doing.

| improve this answer | |
2

To be honest, you might consider approaching this from the other way around. You've got very specific, very useful domain knowledge in an area that a lot of programmers don't. I mean, I'm likely a better programmer/architect than you... but I bet you'd completely blow me out of the water with anything that relates to molecules. It wouldn't even be close - you can come up with ideas and problems and useful questions on the subject... and I'd be looking at the "Molecules" page on Wikipedia.

So which of the two of us would be able to conceptualize and create an open-source project designed to assist with some facet of Molecular science?

Instead of trying to join an existing project? I'd suggest taking some common problems in the field, and develop a project that solves them. Is mathematical error propagation something you have to analyze in some tedious way? Develop an app that allows you to enter some information and have it spit out a degree of confidence. Is time granularity a question mark that you don't have easy ways of measuring? Develop something that will run test simulations under different granularities and spit out the magnitude of difference.

(By the way, if that above paragraph makes zero sense, it's because I tried googling Molecular Dynamics to try to figure out potential problems that you might be in a position to solve. Which is kinda my point: I don't have any clue what problems your field might have... whereas, you're in a position with knowledge to know what those problems are and be in a position to program solutions for it. If those examples are non-sensical, replace them with actual ones you can come up with.)

The one thing I would say: keep things short, simple, and with single-purpose - especially at first. If my domain knowledge was music and I was getting into programming, I wouldn't try to make a music composition app; I'd make something with a few buttons where each button played a different chord. Likewise, I'd suggest starting out small: find a simple problem, develop a simple solution to, and go from there.

| improve this answer | |

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .