Which Python coder are you (and want to be) ?
Select a project idea that fits with your goals
No matter what your level of coding today, if you’re passionate about Python, you’re certainly looking for new tricks, new libraries to explore, and new challenges. You may have reached – if not, you will, be sure – a level in Python that allows you to think you are potentially capable of creating almost anything: create nice statistics overview, machine learning predictions, or even a website, a smartphone application, using machine learning, NLP, webscrapping or simply data processing.
With this incredible resource that is the internet, with all these people writing blog articles in their field of expertise, and with all these books, it seems that the last main thing needed to make any project comes true is work (plus don’t forget that, a bit of creativity, and perseverance is necessary)!
Here is the subject of the article: Now that you can code (almost) everything, how not to be lost in all projects you can imagine?
How to find projects that are truly related to your work ambitions?
The 'Python Interests Circle'
There is no magic, it’s a very simple drawing, inspired by mind-mapping and other illustrations. To help me sort out what is most important to me, I drew several circles. And positioned by intuition and spontaneously (= without asking me any questions) the technologies, software and Python libraries or subjects I had in my mind.
And it seems nothing, but drawing this, froze my interests as a Python coder. From there, I could question and adjust their positioning. This view now allows me to clearly know how much time I should allocate to this or that Python project.
The conclusion of this, is that we must systematically integrate in the chosen projects our best Python interests, what is at the center of this circle.
For example, for me, developing a mobile application with Kivy (Python library) for sports training is really fun. But from a ‘learning gain’ point of view, and in accordance with my goals, I shouldn’t do this project (maximum only spend a few hours on it). Because there are no data analysis, or machine learning to code, it’s just developing stowatch, timer, buttons, and tables.. nothing challenging! Just the fact to develop/publish a app on the AppStore/AndroidStore, is the only reason why this project is fun to me.
Note: Below, I’ll tell you more about why I wrote this article, the projects I had in mind and the conclusion I keep. Plus, i think it’s good to do this exercice every 2 months or something like this. Seeing again this mapping, today i would put Tkinter probably in the second circle level, because it’s a really nice tool to create PC programs (= tools for Business).
Hopefully this little drawing will give you a better view in your Python ambitions, or other goals you have if you choose to fill the drawing with other subjects.
My experiences (and how this article subject came to me)
I spent hours and hours imagining Python projects that I could ‘potentially’ code. Putting the project down on paper. Simplifying the project in steps, in mini-tests. Doing the first searches on the internet, looking for tools and feedbacks.. and trying to estimate the difficulty of the project.
For some Python projects, testing first steps were needed to see further in the project, and to estimate the time for a more complete / mature project. This mindset pushed me to explore some technologies and Python libraries. It’s always nice to test various tools in a simple way, to have a more clear idea of it.
My current 3 Python projects ideas:
1.1 The most interesting - A dashboard controlled with hands moves commands
This project has already been developed (video games, XBox Kinect or other technological services). It’s certainly the project that would be the longest and for which I have to acquire a lot of new skills if I want to develop it one day.
How to start? « Simplify. Decompose. »
The intermediate project would be an application that displays elements, and depending on the movement of the hand to the left or right, swiping the element to the left or right and then displaying the next element.
Then the main work will focus on the use of image recognition (recognizing the fingers of the hand). So I tested ImageAI, very good tool in this field. To push the thing further, it would be nice to try image recognition on a video, and train specifically for hand/finger detection. From here, we should be able to record the positions of the fingers of the hand, and so the user’s gesture. We should then train the algorithm with several brightness, several skin colors, several backgrounds (clothing user, …) to ensure the correct recording of movements.
Then to finalize, it would be necessary to be able to access the user’s camera, in a demonstration version, and deploy the solution as software, or as an online app (note: it will be maybe some difficulties to access the user’s camera if a webframework is used, to be checked).
With these short steps, this seems more or less feasible. But I have some questions… (according to the article subject).
Counting only my off-work hours, how many hours could I allocate to the project? This project, and all it implies, need a year of work, maybe more? Could this project be important for my career? What are my chances of success for this project? Who might be interested in it? Would this project is a required experienced to find a particular job?
Okay, let’s those questions aside for a moment.
1.2 The funniest - The sport app
Let’s add some fun. I’ve been doing cross-training for a long time. A mix of basic strength training exercises with little equipment, and a timer with custom short / long rest periods. I also have a scoreboard with challenges and my best / historical times for each. For 100 burpees, on January 04th I finished in X minutes. March 13th in X minutes, etc…
So the idea was to develop an iOS / Android App, with a customizable HIIT timer, a dashboard with historical and best times for each challenges, and also another feature to practice cardiac coherence, and apnea exercises.
I find the Kivy tool, to develop apps in Python. So.. okay, it’s doable. Info: I’m sure I can find mobile apps that offer this service. But the exercise here is to improve your Python experience.
It’s fun, all right. But what would be the point of developing this application? How many hours do I need to code this app? A stopwatch, a table with data from a form, … it’s clear that the features are not a big challenge. The challenge here is to learn how Kivy works. I coded my first Pong Game with Kivy, it was fun. Potentially, I’m ready to start coding the app.
1.3 The most useful - Nwundo, cultural agenda
In 2018, I created my company, and launched a cultural agenda on the French Riviera. I published all the concerts, live music, fireworks, shows, festivals, and a lot of other local events. Today, the agenda is in sleep mode, but still open.
Now that I know how to webscrap websites, that I have a good base in machine learning and NLP, I would be able to extract the data I want. I could also modify the texts of events with machine / deep learning (Google penalizes the SEO of websites that copy content / reward those who create it), extract dates, schedules. And training machine learning models, i think I could even label the event (concert, for children, fireworks, …).
And finally, automate the whole part of adding events! When I was managing the agenda, i was doing this operation manually. I couldn’t do it anymore. It’s too tedious. Each published event required at least 6 minutes of manual work (extracting / renaming / compressing the image, extracting / copying dates and times, and adding / modifying the event text). Since my Python skills have improved, it would be possible to code all this. ‘Problem solved!’
And here’s the dilemma.. The most interesting, the funniest or the most useful project do you choose?
Me i would choose all three if I had 30 hours a day. But I have a job, and social and leisure activities. So I have to optimise my choices. Decide where to allocate my hours. Being productive while respecting my life balance.
Today, i focus 80% of my time improving my Python data analysis tools and my machine learning model at work. The 20% last are dedicated at exploring libraries and tools and sharing it in articles.
What about you, how do you find the balance between job/projects/fun ?
The ‘Python Project circle’ (1st illustrations) could be helpful to make the best possible decision.
It helps me to focus on the right project, and hope it will help you too.
Don’t hesitate to share your thoughts about it.
‘If you’re lost, draw your mind‘.