Or the story of how far the “I can do it” attitude can lead you.
Disclaimer: I hope you like Michelle Obama.
One of the reasons I’ve become a web developer was to be able to do all the stuff I wanted on my own, without help from anyone or the need to buy services online.
A little backstory here: I’ve studied Communication & Advertising and have been a Digital Marketer for 6 years before shifting things around and learn Computer Programing. Along those 6 years of online marketing, I had a fashion and travel blog which was quite something back then. Though it was only a blog, I wanted to do more with it. From this frustration rose the motivation to acquire new skills, technical ones. In 2016, I’ve finally started a master in programming.
Graduated, with beginner skills, I had the same ambition as before but with a new attitude: “I can do it now” and so I did. However, that’s not what I want to talk about.
I want to share the obstacles we face when we want to develop apps while having so little experience and how this is all okay.
Part of my master project, we had to build an app in 2 months, with the language we wanted. I’ve first found my idea by scanning “app idea” results on Twitter. The “an app that finds bars between my friends and I” came up a lot. I also find that it was a great idea. Done deal.
As a digital person, I was meant to build a web app and to do so, I simply used the PHP framework we’d seen in class, a couple of weeks before. The architecture was already given and pretty simple: MVC and separate folders for everything.
I knew nothing about dev environments and when testing my app, the first trouble was to know how MAMP can help me with it. Off to a great start, right?!
Then, writing code wasn’t the hardest part for me: it was so easy to find snippets online and solutions on StackOverflow. The hardest part was where to write the code I have found on StackO: Is this in the controller? Do I need to create a helper file? Is this going to the library?
My Mentor was always suggesting me to look upon the framework documentation. It was indeed, the main advice I received as a junior dev. I felt helpless because as soon as I wanted to do something outside coding, such as, connecting database, updating project configuration or add constants, it was subject of struggle. The documentation gives examples of how the code should look like but never or so rarely, where I should write the code. Tutorials were for me not a better help since I was working with PHP framework Codeigniter, it is not the largest community and it hasn’t been updated since 2015. 2015, can you believe that?!
App architecture was my first obstacle. Sure, I’ve learned about coding, the basic of PHP functionalities but definitely not app structure, the vocabulary that comes with it and even less the best practices. Official documentation lets you deal with your own architecture, devops system and dev/prod environments.
While reading resources online and answers on dev forums, reading about REST API and something else than MVC wasn’t helping at the time. It was indeed, much more confusing.
But I can do it.
Somehow, by trying to patch codes here and there, I’ve found a way to make my app works the way I wanted.
It’s only a year after, while having a strong year of work experience and put my nose back into this project that I’ve found my mistakes: coding an app that works is the goal but coding an app that is well structured is better for the long term. As I wanted to upgrade the functionalities, I noticed the lack of clean architecture in my first work.
The fact that I was criticizing my own code and pointing out the mistakes made me really proud. I had learned from my work experience and my colleagues: I could notice the difference in my way of thinking and structuring my code. So I made some changes and this is the story of how I discovered my passion for refactoring…
June 2017, I decided to deploy my app on the World Wide Web. Years before, when I was a blogger, I used Filezilla, FTP transfer to fix errors I had with my WordPress blog. So I thought I could just transfer my app folder into my server with FTP and voilà.
So little I knew, back then, about .htaccess file and URL rewriting rules.
I was searching the web looking for a piece of code that would tell me how to fix my problem and I wasn’t really sure what my problem was. Again, I’ve learned about coding but not the specificity of Apache server. I didn’t even know that I was on an Apache server.
Most of my obstacles as a junior dev were understanding what was the problem. I did spend hours on searching for what was wrong when I had not many bits of knowledge already on the framework or my server. I do remember how upset I was but I know, now, how useful those hours spent are for me today.
As I developed my own projects, I realized that coding skills weren’t enough. Devops, system administration and designer skills were also very useful. Lucky me, I had none of them.
But I can do it.
With my shared host OVH server, getting the logs from the server was a bit tricky. I was kind of stuck. My very last card to play when I’m facing such an obstacle is to call a fellow dev. This time, it was my Master Mentor who kindly shares a .htaccess file he uses. That fixed my problem.
Was it really what I needed? Apparently.
Getting out of my non-coding misery was to try and try again and try, even more, searching the web until it works. This is how I learned. I’ve come across very classic but stupid issues that I ended up fixing. Silly junior questions that I had to ask myself as I was working on my own, doing the whole process alone. Those mistakes, they won’t happen again and if they do, they will get fixed pretty quickly!
At the end of the day, when the site is live, the DNS properly setup, SSL certificate working fine, database connexion doing exactly what it has to do and open graph showing right when URL shared on social networks, I feel pretty confident and relieved.
The “I can do this attitude lead me to this point. Baby steps by baby steps, I achieved my goal.
I felt confident and definitely enthusiast to achieve more ambitious projects.
“I can do it” lead to throwing myself into the joy and pain of cross-mobile development. During the summer of 2017, I’ve launched a fun web app called “Should I Buy The Bag?” that tells you whether you should buy fashion items or not, after answering few important questions.
The issues I’ve had while coding was for me part of the process. I am also very objective on my skills and my abilities today about coding. I knew those errors were okay. I just needed time, to learn, to think, to discuss my issues.
When I was younger, in tech class, we had a poster of Bob Marley saying “There is always a solution to every problem. If not, then there is no problem“.
Learning to code echoed with this quote: there is always a solution. I might not find it today, I might find it on my own but I am definitely making this work.
As my code wasn’t doing what I wanted and couldn’t find answers online, I played my very last card and asked a former colleague who recommended us to use React. How silly I felt when he told me I was getting confused between ReactJS and ReactNative. So silly…
Anyway, on the ReactNative official doc, I could download all the packages and follow all the steps until my first “hello world”. Little success, so much happiness, great feeling. I had graduated for only 4 months and I had already 2 sites online and a mobile app on the go. I was so confident that I thought I could make it live within a month
Coding with React wasn’t complicated but on the other hand, I had no constant, no configuration to do, no database to connect. Only getting the right React libraries for my project.
I faced a few little issues with the Android Emulator and a crazy ReactNative package that was killing my app anytime I was building my project. I tried many manipulations: the only thing that made things work was to start fresh. I hated getting to that point but it was in the end, the best thing to do to get closer to finish my app. Well, It got fixed but the time spent clearing those details was time lost coding my app…
Moreover, another fun configuration with Xcode and my app was on my device. I was so happy. Such an accomplishment.
It was then, time to launch the app on the app stores. Even though I knew from the start AppleStore was picky, I wanted to see how far I could go with it.
But not too far, unfortunately. The need for a server for my mobile app stopped my dream of having my baby in the app stores. Searching the web, understanding what is a server for a mobile: I have hosting, I have servers, can they be used?
Today, I haven’t found the answer to properly launch my app and it’s okay. Afterall, I am not in a hurry and I want to make things right. My main goal was to create the app and eventually launching them. So close to the next level but this can be done later.
As much as I’d like to get all my project online as soon as I wish, I also know that some kind of stuff takes time. Taking a quick break is also a good idea. Today I’ve decided to postpone the launch of my apps on the app store until I’ll have a bit more knowledge and experiences. Maybe it will be next year or maybe in two weeks after discussing the matter with someone who knows how to…
I am not a Master in every domain and that’s all fine!
I decide to work on a new project and go back to coding with Python. Things went super fine all along. After a year of personal projects and work experiences, beginner issues and silly questions seemed to belong to the past.
Yet, I still get to the same issues on deployment. After long hours of coding and reaching the excitement of seeing my project going live, I’ve discovered the limit of Apache server. What now? Apache does not interpret Python language? Cool, cool, cool, cool…
Quick researches on StackO shows that others had the same issue; I am confident and I will also find a solution. I had my domain and hosting on OVH for years (it used to be the fashion blog I talked about earlier). I also encounter way bigger issues than that, I know I can do it.
Bummer! I couldn’t find a solution and OVH logs weren’t helping.
Fortunately, I knew the right person to ask for guidance: My former CTO who taught me about Python and all. His advice? “I am no devops and my solution was using Heroku for deployment and hosting solution. It saved me time and a lot of energy.”
6h hours of following the “python getting started” tutorial from Heroku dev center and redirecting OVH DNS to another CNAME: my project went live. AMEN!
Working with Heroku helped me a lot with app architecture as their “getting started” tutorials come with a basic app and its structure. From there, I can customize it to my need and learn from it. Also, working with environments and deployment became a living dream. It’s hard to think of another way to work than using Heroku… Game changer!
Overall, this past year of building my own projects and learning during my work experiences taught me a lot: obviously, the determination of getting my project online was the main fuel. Besides, the whole point of quitting my former life to learn programming was to be able to do the stuff I’ve done.
However, I have to admit getting there was possible only by working a lot, trying again and again, without quitting, searching the web for answers and testing things until I figure it out. This can be discouraging but to be honest, I was enjoying the ride all along. On top of that, the feeling of accomplishment when your app is working is priceless. It worth the long hours of coding.
Did I mention being patient? Needless to say, huh?!
The developers around me got all figure out because they’ve been there before and they’ve been doing it for years! It’s all about experiences. The last StackO study shows that more than 80% of developers worldwide work on personal projects during their free time and spend about 10 to 12 hours on a laptop.
Being qualified and experiences mainly come with the love of our job and passion for creating and/or discovering new languages.
I also admit that having a good network is necessary. As much as I love to do stuff alone, sometimes, you really need someone else’s point of view or review to help you grow. I am thankful I had people to call when I needed it.
I’ve been coding professionally for a bit more than a year now. I still have much to learn and practice to be an expert in my domain. Nevertheless, I am looking forward to the following years, when I’ll be able to give back what I’ve learned from this journey to the new beginners.
Thanks to David di Marcantonio, my Master Mentor, Benjamin Champetier, colleague into ReactNative and Arnaud Riegert, Heroku fan.