Career

Every week, I write a blog post about my progress on side projects. I explained my thought process in this article last week. I also detailed the first project that I wanted to work on for this month.

Week One

The stack choice

For the front-end, I went with React and create-react-app. It greatly reduces the headache of getting everything set up. For the back-end, I chose express. For this project, this is more than enough to do what I want. I’ll also use MongoDB for the database and I decided to use semantic-ui for the UI framework. I used material-ui before, so I went with a different one.

Setting things up

There are two different parts in this project. The root of the project takes care of the server side ( express + mongodb ). Inside this root folder, a /client folder holds the front-end that was set up thanks to create-react-app.

The first difficulty that I had was to connect both parts. How do I inform the front-end and back-end to listen to each other with the create-react-app setup?

Thankfully, the documentation links to a tutorial that explains how to make create-react-app works with an API. Right here if you’re curious. The front-end and back-end are run concurrently thanks to the npm package named concurrently ( convenient ).

And after that, I could start writing my code.

Hearthstone API

To get all the informations about the game’s cards, I found an API at this url. Well documented, easy to use, and I have all the informations I needed.

React Router

This one made me sweat a bit more. I wasn’t aware a new version of React Router was released. It took me some time to understand how the new one worked. ( BrowserRouter and Switch ).

Starting to see some results

I started with the cards’s catalog. I had to figure out the call to make to get the cards I needed ( hint: collectible=1 ). After that, I filter the cards by classes and sets in the front-end. Hearthstone has a “standard” mode where only the most recent cards sets are used.

The catalog functionality will ressemble the one in the actual game. The user should be able to sort them by name, mana cost, cards set and classes…

Code and next week’s goals

Here is the code on Github

For next week, I will try to finish the catalog functionality with all the sorting and filters. If that is done, I’ll start adding some deck actions ( deck creation, adding cards to deck from catalog … )

See you next week!

Read more

Why?

Whatever craft we are pursuing, we all need to build something to gain experience and mastery. Obviously, software development doesn’t escape this reality. Theory is important but using the knowledge in actual projects and solving problems enhance our comprehension of the subject.

Side projects always seemed amazing to me. Building something during my free time to solve a problem I have, or a problem others may have is a big reason why I started to code. The more I learn about programming, the more I realise its powers.

Like many developers, I started a lot of side projects. Every time, the pattern was the same. I was excited for a few days, perhaps a week. Then, I started to encounter more difficult problems, or I realised the project would take a very look time or life happened and I stopped working on it for a few days…

My Github account is a graveyard of potential projects that I just couldn’t bring to life. Not mature, fully developed, married with two kids in a big mansion kind of life. A gigantic proportion of these projects didn’t even go past the embryon stage. Every mistake is a lesson. Which brings me to this post.

A possible solution

One of the problems was that I did my thing alone. Nobody knew about it. And I totally dismissed the power of accountability. You will know about it. I’ll show you my progress, every week. I’ll just need enough discipline to write a blog post about it once a week, during the week-end. I’ll mention the problems I faced, solutions I chose, and how I managed ( or not ) to spend time on the side project I am working on.

My rules

A lot of people came up with similar “frameworks” for learning and side projects. Here are the rules that I chose. These are totally arbitrary:

  • Choose a project. No languages, libraries or frameworks restrictions.
  • Spend one month on this project
  • Just build a MVP ( Minimum Viable Product ). Don’t get drown into details. Get the big picture
  • Code will be on GitHub. Every blog post will link to the repository.
  • After a month, deploy the application, whatever the state is. From there, either choose to keep working on it for another month, or switch to a new project
  • If the project is over before a month, start a new month with a new project
  • Report your progress, problems and failures each week in a blog post

One month seems to be long enough with the time I have to create something decent. One week would be too short. If the project is going well and I’m enjoying it, I could spend another month on it, keeping the same rules, but updating the requirements of the project. Reporting my progress will probably help putting things in order, and not going in several directions at once.

First Side Project

For the first project, I chose to do an application related to the Blizzard video game HearthStone. Players build decks with cards based on the Warcraft world. The application should allow players to track their records and their progress with their different decks:

  • Users can access a catalog with all the cards and build decks.
  • Users can export their decks to the game.
  • Users can add the outcome of their games.
  • Users can see how their decks perform against other classes.
  • Users can login with Twitter or GitHub.

That should be more than enough to get me started.Let me know what you think and I’ll see you in a week!

Read more

This article first appeared on dev.to. You can find the original discussion here

It’s everywhere !

Software is everywhere. In our cars, our planes, our computers. Our banks use software. We use it to communicate every single day, every single second. Our governments can’t pass laws without relying on software at some point. Hell, my grandmother even use software! She has a bank account, a car and some insurance! No one escapes it.

Continue reading The Programmer’s Oath

Read more

This blog post is not about any kind of technology, library or language. It is not about the soft skills either. You see, as a football player (the soccer type), I have been practicing the game for nearly 20 years now. If you are engaged in any kind of sport activity or musical activity, chances are that you have been practicing something (as in repeating a move or a drill over and over).

Musicians play their scales or some piece of music as a warm-up exercise or practice. Athletes prepare their bodies for practice or competition. I can name a few drills that I’ve been doing for 20 years as a football player. Drills that are accepted in this sport as must-do to improve. It is expected for an athlete or a musician to spend time by himself or with a team practicing, without the pressure of the competition.

What about programming?

What drills or exercises programmers do, or must do, in order to become more efficient? Is there any warm-ups that programmers do in order to produce right away?

More mental than physical

It is pretty safe to say that being a programmer relies more on mental skills than physical ones. Solving problems with code. Make sure that we communicate clearly to other developers and clients.

On the physical side on things, make sure that your body posture won’t hurt you. Sit comfortably with your back straight. I could probably imagine one aspect that could be improved physically, how fast we type. Typing without looking the keyboard. You can find places to practice this like typingclub. What about your favourite editor shortcuts? Would it be worth it for programmers to spend some time each day or week learning or practicing these shortcuts?

What about the mental things? Do you have any rituals that make you more focus? Things that make you more efficient in solving problems? I do some meditation personally, and I can feel more focus for some time. But the main thing seems to be the complexity of the problem at hand. If a problem is too simple or way too complicated, I will lose my concentration much more easily than if I have a challenging problem, but not TOO challenging. You know, that sweet spot.

So, yeah, those are a couple of thoughts that I had. I am currently reading Peak from Anders Ericsson and Robert Pool about deliberate practice. I’ll probably write a post about what I read and maybe try to design some things that could make me a better programmer.

In the end, I believe that you need to code to become a better programmer. But repeating the things you already know how to do without trying to make it better or even different won’t get you anywhere. It is clear that the notion of feedback, when one is trying to improve, is always essential.

Let me know what you think, what you do to practice, to improve.

Feel free to share and comment.
Have a nice day!

Read more

Join me during my amazing adventures: Damien tries to become a freelancer !

I recently started taking freelancing seriously. A lot more seriously than I did in the past. I’m at a point where I’m considering becoming a freelancer full-time, as my primary (only) occupation. So, I decided to write about it. It will probably help me getting through the struggles I face more easily. Or maybe some of you considering making a move into the freelancer world will find some comfort in my words.

 

Anyway, a few things triggered this attraction to the freelancing world:
– the freedom the freelancer has (Yay!)
– the current difficulty I have to find a job in my area (not cool)
– my very own brother asked me to build an e-commerce website for him (that’s nice)

 

With that in mind, I talked myself into becoming a freelancer. But, because I’m also the type of person that can spend months researching and planning without doing anything, I decided to just go for it. I believe this is the best plan, even if I know I will fuck things up (I even already did… sort of).

 

So, one thing you might hear about freelancing is the importance of networks. Well, my brother is giving me my first gig after all. But, to be honest, my network is limited to my family. I don’t have any head start here. This means, I have to spend some time on online job boards to look for gigs.

 

I started with Upwork, and i saw a blog post on Medium. You may have read it. It really freaked me out. So, I crossed Upward for good. I am currently on PeoplePerHour, and it’s going good so far.

 

Okay, I know you are all waiting for the story where I fuck things up. Here it is. The very first job that I find, and so far the only one, was about adding some functionality on the EspoCRM. I never heard of it before, but the job talked about javascript and json. I thought, well this is for me. Oh boy was I wrong. The man was really nice, patient, took the time to explain to me what I needed to do.

 

I understood the requirements, the thing is, I never touched such a platform before. Now, that might not be so bad. So, I spent a few hours trying to wrap my head around a plausible solution. Nothing, no-thing. So, I tell the client that the job is a lot more difficult than I thought (urgh…). So, we talk to each other on teamviewer, explain it again, very patiently. And he even gives me other possible solutions that would work for me (!!!) . One of those seems doable, so he gives me two hours to tell him if I can do it or not.

 

I got further than the last try… But, I couldn’t get the functionality to work properly… What a awful feeling that somebody trust you to solve a problem, and you just can’t do it. So, I just told him he should probably find a freelancer more qualified than me. Yeah, not good..
The feeling is pretty terrible … But, I can get a few lessons from that adventure.

 

– Be honest. If I realised I couldn’t do it. I won’t lie to the client. Own it. Apologise for wasting their time and move on. It may happen again, but there is no excuse for lying about the abilities. I thought I could, I was wrong. I’m really sorry. Moving on to my next mistake.

 

– Be careful about what you are working with. I’m sure this will not be the last time I will deal with a platform, library or software I’m not used to, but I have to be realistic about what I can achieve with my current knowledge. I like the lesson in humility though. Be careful not confuse this with a feeling of worthlessness. It’s not true, and it really doesn’t help you. Dismiss this feeling.

 

– Don’t feel bad for too long about this. The client may yell at you, but upset, even give you a bad recommendation. Unfortunately, I think those things are part of the journey, at the beginning.

 

This is the end of my first chapter. I will keep learning about this freelancing stuff. I will keep learning about programming. I will learn how to get the right clients, clients whose problems I can solve with my skill set.

 

As always, feel free to share and comment.
Have a nice day.
Read more

For a very long time, I’ve always admired people who found their calling. People that just says ‘Well, I just do what I always wanted to do.’ . I was jealous of that. Knowing what is right for you from the start. The headaches you must save yourself if you are that lucky person. So, because I didn’t have that chance, I just though something was wrong with me.

Right? ​NO!

​Nothing is wrong with me. There is simple explanation to this: Passions are not born, they are cultivated. Nobody wakes up one morning with the perfect career choice in their mind. The path that will be just right for them. Impossible. Some may find the right career path on their first time. But the environment around us defines a lot of things about what we do.
It is the good old nature vs nurture debate. Our genes against what surrounds us.

A-Control

​​The​ assumption that I had before I started reading literature about the subject was: we must have control about our environment (nurture) and close to no control on our genes (nature). Well, that’s actually the opposite. We do not fully control our environment. I am an avid reader, I love it. Why? My mom used to read a lot too. The people, the culture that surrounds us are very likely to shape who we are as human beings. It makes sense. We, as children, must learn from people we interact with. At first, our parents. Then, our teachers and classmates. We are a product of the people we spend time with.
So, when you start playing the piano at 5, become a very good player at 13, and gives breathtaking concerts at 18, what’s going on? We must look at the environment. Are mom and dad musicians? Most likely. Mozart father was a composer that forced him to practice hours on end.

B-Picking the passion

When I look back at my life, nothing tells me that my environment pushed my towards programming. So, how do I explain the fact that I sticked with it?
In the George Leonard’s book Mastery, the author takes about three kinds of people in their path to mastery. The Dabbler, the Obsessive and the Hacker.

The Dabbler loves new things. He is very excited about trying a new sport, a new job, a new career. Getting the fancy stuff to get started. The first lessons are amazing, this IS the right thing for him. Then, he hits a plateau, the excitement fades, and disappear. The Dabbler looks for something new to get excited about.

The Obsessive is different in the way he sees the first plateau or falloff he hits. He doesn’t accept it, he can’t accept it. So he works harder, he must get everything right, right from the start. He stays longer at the office, ignore advice and just keep pushing. He manages to keep the fire alive in short spurts, pushing just one more time. Until he just quits.

Finally, the Hacker is very different. He is perfectly fine is the plateau that he hits. The Hacker gets by, doesn’t have a strong desire to improve. He gets the hang of one thing, and just think that’s all he needs. Every break he can get, he takes. He is fine with other Hackers around him. But if the people around start improving, ouch!

I am a Dabbler. i love trying new things. I tried a LOT of things. I buy the instrument, the books, sign up for that app. Yeah, this is my thing now. I envision myself being an expert at whatever new thing I picked up. I improve! Oh my God, this is it! I found my calling, finally!
Then, the plateau. The initial excitement is no longer here. And I just find something new to do.

This description of the Dabbler hits home for me. And I realised it was not sustainable. So I read more books about talent, finding your calling, having the right path, happiness. One day, I started to teach myself how to code. And I sticked with it. Why?

C-Having something to show

My first attempt at learning how to code was with C. I read that many languages derived from C, it is like the latin of programming languages. I thought, well I must start here. It will give me all the tools necessary to become awesome. So, I picked up Learning C for Dummies. Want to take a wild guess at what happened?

Yeah, I quit after a few weeks. I read about compilation, about the loops, the if-else…
I saw the stuff printed in my terminal… So boring…
Then, I discovered Treehouse and I signed up for the 14 days free trial. And I got into it. A year later, I’m still into it. Why? Because I built something right away.
You see, now, a lot of courses online make you write code right away. And this is so important. You are engaged, you are not drowning in the technical terms. You just do something of value, you feel useful. I made an HTML page! Now that I look back at it, it was nothing. A few tags, a header… But it was all me! I made it work!

Then, we added CSS, a bit of Javascript. An image here. And soon, my very own website was online. I still remember the feeling of wonder and amazement I had when it went live. I couldn’t believe I did this. I couldn’t believe of the road I had travelled. Sure, it was just a website, but it was mine. It wasn’t much, but that little thing was my baby.

This is what you must look for when finding a passion. Look for a teacher, or a course that will engage you in the task. Make you feel useful. Not just bore you with endless theories.

Make sure you build something, even the smallest thing possible!

As always, feel free to share and ask questions!
Have a nice day!

Read more

Introduction

In the world we live in today, a person looking for a job is no longer restricted by the location he lives in. The state of communications makes it a lot easier to work from home, for a company on the other side of the planet. Entrepreneurship allows individuals to look for work all by themselves, without having to rely on a company to do it for them. Many people choose this way of making money, taking care of every step along the way. It is an ode to freedom, having the responsibility to market its skills, and choose who you want to work with.
I currently am looking for a job. So, because the prospect of freedom is appealing, I decided to look a bit deeper at the possibilities in front of me. In this blog post, I will list the things I found in my researches.

The employee

Let’s start by the most common, being an employee. Surely the safest way to make money each month. As long as I am employed, I get my check at the end of the month. Depending of your country, you will get different advantages with it. We can distinguish, in my opinion, two sorts of employees. The first one will be the ‘Go to the office everyday’, probably the only one our parents are aware of. But, in the industry of technology, a second kind of employee was born: the work-from-home employee. The remote position. The freedom of working from home, while having a safe check at the end of each month. Pretty appealing.

My take: Jobs involving Node.JS around my area are very rare. As of now, I am more looking for remote positions. Even if I am not extremely please with it, I might have to consider moving closer to a larger city where I will have more options.

The freelancer

The second option I considered was to become a freelancer. The freelancer is responsible for finding is own clients. He has to market himself, convince potential clients, do the work. This option probably embodies the idea of freedom the most. No boss, no colleagues. You choose the work you want to do (assuming you have enough work to be picky). It is also less safe than the employee. Since you are in charge of finding your own work, your income is not always guaranteed. Especially when you are starting out. How can you convince people that you will do a good job, if you’ve never done a job before?

My take: I am currently starting to freelance. It will allow me to have more experience and make some money on the side while I keep looking for a job. Of course, I don’t close the door to becoming a full-time freelancer, but it simply isn’t a priority right now.

The entrepreneur

I kept the most difficult option for last. The entrepreneur. The ‘let’s create my own startup king-of-guy’. I would be lying if I said I never entertained the idea. The entrepreneur is for sure the path that will be the most rewarding in terms of money and recognition. But it most certainly is a complicated route to follow. Creating a product, marketing, selling… It looks really attractive, and some of you are probably ready for this, but not me, not now.

My take: Preparation is key. I simply didn’t prepare for this possibility yet. Maybe in a few years when I am more certain about my career.

Conclusion

For me, the plan is as follows: Find a job, become an employee. It seems like the logical first step in a career. Like I said, I am currently looking for remote position while considering a possible relocation in the near future. On the side, I am starting to do some freelancing, for the experience and of course a bit of money. It will also force me to learn how to market myself to potential employers.

As always, let me know what you think.
Feel free to share and comment!
Have a nice day!

Read more