Post po angielsku bo znajomość angielskiego na poziomie pozwalającym na swobodne czytanie jest wymagana.
For quite a some time already, I've been feeling the need to somehow give back to the community. Everything I currently have is thanks to one fact. Some people decided it'd be nice to have open access to knowledge. They decided to share, contribute and build something that benefits others. Others should do the same? Everyone should? I agree and, well, most of the time, I try to live and stand by what I believe not only in words, but in actions too.
So I got this idea. Why not help others learn the same way other people helped me? A small light bulb went off in my head. A plan formed. This is where this post came from. This initiative. What is it about? What do I mean?
Well, the title says it all. Let's build a project together.
Hands on experience
I remember, back in the days, when I was just starting with programming, after some time, when I already grasped the very basics of Python, Git, maybe even Django, a question appeared in my mind constantly: what now? How I use these tools? How do I tie them together to create something useful? How does real work look like? The process of creating software, what's it like?
I had no idea. Only after starting my second job have I learned how stuff works, or at least began to understand. This was tricky, because if I had, things would be way smoother, especially considering how I never got to do any kind of internship or collage degree. The rule was, and still is: learn quick or die. Sink or swim.
Well, now, after some time, I'd like to offer you something, that I'd appreciate back then. An opportunity to join a project.
Creating a Python project from scratch
That's right. I want to gather a small group of people, novices probably, who want to learn what the process of software development looks like in a real job. For free.
How will it look
You will become a fictional employee of XDSOFT (xD), to work on Project XD. We will build a RESTful backend API in Python. What kind? We will pick something together or I'll just choose, we will see. One thing is certain, I want to build an application that'll be quite versatile in technologies used as to cover a broad range of topics.
We will work with standard technologies/tools used industry-wide.
- All the code will be stored on Bitbucket with Git as our VCS.
- To that we will add CI/CD. Automatic deployments, linters, testing and so on.
- Code review will be a must.
- Our application will be contenerized - Docker.
- We will set up our own aws infrastructure.
- The api & backend overall will be done in Django & Django Rest Framework
- I'll probably want to include some kind of asynchronous stuff in our app - eg. sending emails or something like that - Celery and some message broker (Rabbit/Kafka or SQS maybe?)
Take caution though: I won't be doing the work for you. I will be helping you, showing good prectices, teaching you how to do certain things, how I'd do them and so on. As for the actual tasks from our Jira board - it'll be up to you to do them, with mine, and others, help of course.
Week after week, I'll be giving you materials/videos/and or doing livecoding myself with all of you sharing the knowledge, then distributing the tasks - we will do short plannings and daily standup (not daily but maybe 2-3 times a week probably).
The overall development speed and stuff will probably be slow at the beginning. I'll be doing this after hours, in my free time, same for you probably, but I'll try to prepare before we start.
You will have to learn new things about programming. About team work, software development workflow. Software life cycle in an
somewhat Agile environment.Omitl I think it's a nice to have if you are a junior.
Where's the catch - who is this for
There's one catch though. It isn't for anyone. I have certain conditions that you have to meet if you want to join, because of the target group of this project. So it'd be good if you:
- Had at least good grasp on basics of Python
- Knew some Django/another web framework (if you do not know it, but just know python basics well, it's fine too)
- Basic usage of git (create branches, commit, create pull requests, merge)
- basic usage of CLI
- basic knowledge of Linux (nice-to-have)
- some understanding of how web/http works (nice-to-have)
- English that'll allow you to at least read stuff is a MUST, hence the post is in English
Who am I though. Well, I'm just a dude. I've been programming professional for around 2 years, as a hobbyist a bit more than that. Right now I'm working at a distributed, remote team for a company based in Switzerland. So far this is my 4th company. Most of the time I've worked with Python, REST APIs, applications that process LOTS of data. I don't know if I am qualified enough to do this, you can judge yourself during the project. I'm not a know it all senior. There will be many fakaps along the way for sure, especially how it's my first time doing something like that. One thing I promise is that I'll give in my best. I'll also try to get some of the more senior colleagues from my company to sometimes pitch. Or see if I'm not feeding you complete bullshit.