How I Changed My Perspectives As A Developer
After more than 10 years working for IT service companies, I realized I needed something more. I wanted to create something, to be part of an adventure that I could control. 6 years later I enjoy the shift I’ve done towards the startup ecosystem.
Working in IT Service Companies
When I finished engineer school (back in 2000) I started working for an IT service company. There were a lot of job offers at that time, I was able to select my contract and went to London. The city was great (I still love it today), the work was interesting. But after one year of developing in assembly, I decided to go back to France. I wanted to work on Java a quite new technology at that time. That’s what I did for a couple of years through several clients of the company I was working for.
At one point, my company asked me to choose between 2 contracts for my next mission. Both were for great companies of the area. The first one involved some Java development, which I loved at that time. The second one involved Perl development and some other stuff, I did not know anything about. The decision was a no brainer, of course I would go for the Java one. But… it turned out this choice was not a real one and I had to choose the second option. After several discussions with my manager, he went “I’m only asking 6 months of your life”. I went there but this made me feel like I was a pawn in a chess game, and this is what I was.
The thing is I spent almost 3 years there and never regretted that. This was a good opportunity after all. I was not in the Java world anymore but learned a lot of other technologies (Unix, Perl, Ruby, …). I developed a real curiosity and also the desire to learn. At that time I started to have some side projects with the technologies that were booming (Ruby On Rails, …).
During the next contract, I meet a very smart guy, PhD in machine learning, who was working in the same company that I was. We were not that motivated by the job we were asked to do; I remember one time he was asked to change the color of the link on one of the company’s website… I was just feeling “Come on, this guy is a PhD, ask him stuff that really mean something!”. We decided to work on little side projects together, the creation of Rest API in Ruby. This little project was the beginning of a shift for both of us.
Technology and Entrepreneurship Events
We went together to a local meetup and told about our API stuff to a guy who was starting a business. He needed a HTTP API for a mobile client he was developing. That was a great fit and we started working for him as freelancers. For the next development, he offered some shares of the company. His company was still early stage and without much cash. That was it, we became co-founders of the startup. After a couple of months, I also became a full time employee. My friend followed a different path but still is in the company’s capital.
Working In a Startup vs Working In a Big Company
As a developer for a big company, you do not have a real vision of our work. You are often in a department within a subdivision, within a division, within… well, you get it. At the end of the day you’ve done your job right but it’s hard to get the real impact at the company level and on its customers. It’s even more true if you are working on backend stuff. Your job brings value to the company and you get rewarded for that through your salary. Some people are fine with that and do not need something else. I did not (and still do not) feel that way.
When you work in a startup, especially a very early stage one, things are different. First, you have much more latitude on the selection of the technology you can use. This is especially great when you are a tech guy. This can also be risky sometimes as you may choose ones that are not mainstream yet. For instance, I started using Node.js at work when it was version 0.4.8. Yes, that was a risk at that time. Your architecture then needs to be able to handle bad choices.
As there is usually not a bunch of employees at that stage you can work on several things and learn a lot (if you want to). Your boss might even be glad if you offer to help in domain that are not especially yours. As a developer (read: sitting at his desk and playing with code all day long), I helped on several things. I did some accounting, met investors, gave recruitment interviews, worked with technology partners, presented the company and its products at international trade shows… I liked it as this opened new perspectives as well.
To get the work I wanted I accepted a cutoff in salary, around 20%. This is sometimes the price to pay to enjoy your work better and to learn a lot. Learning is the most important things for me today (even if I’m getting old… oh boy !)
After several years working as an employee of the startup I co-founded, I decided to change. I went into a company created by a friend. I had followed his project since the beginning and liked it. I had the liberty to build the system from scratch using the technologies of my choice. I put in place the base application using micro-services architecture. I had fun with Docker, Node.js and MongoDB. I also setup a CI/CD pipeline, and started to work on DevOps things as well. I also used Golang and Clojure to create a couple of services and learn those technologies at the same time. Each service is small enough so there is no big risk of technical debt if the technology used is not the right fit.
This role was (and sill is) quite limited to the development of the application. No trade show and other “out of the building” stuff except sitting at my desk to develop. I needed something else. As side projects I decided to get more involved into the organization of local events. I joined TelecomValley, an IT association of the French Riviera, and I started to organize technical workshops, Open Source conferences, and also meetups. This is a great opportunities to learn a lot and to meet many interesting people. I love it.
Be Curious, Learn, Read, Get Involved…
When it comes to work, the most important thing for me today is to be curious and to never stop learning some new stuff.
How do I learn? From a lot of different sources. Online courses (Coursera has a great one in Machine Learning), online and physical Meetups, events, blog posts, books,…. I find it interesting to have different point of view and cross-reference information.
You might want to deep dive into some subjects you want to master. For those I would recommend to work on side projects and create a momentum. This can be through some kind of personal immersion program. If you are not in a hurry, you do not have to spend 3 hours a day, take your time to learn. Make baby steps and make sure to spend a little time each day on the subject but… EVERY SINGLE DAY.
For instance, each day I
- work on an online course I’m creating
- read a couple of tech articles (general + Docker Security oriented)
- follow a chapter of FullStackReact book
- follow a chapter of The Go Programming Language book
- study a little bit of mandarin chinese (not tech related but still…)
All this together do not even take an hour a day. I usually work in a coffee shop in the early morning. Of course, on days when I have more time and want to speed up the learning process I definitely do more. The main idea is to keep the momentum and to not lose focus. By thinking about it every day, your mind stay connected to the subject and coming back to it the next day is a no brainer. Stop for a couple of days and the story will be different…
Take baby steps Every. Single. Day.
For some other subjects, I will not go to deep in the details but I try to get a high level picture instead. Be able to tell in which use cases to use such and such component can definitively help. Especially when evaluating several pieces of technologies.
For everything that you learn do not hesitate to create a blog post. It will fix the knowledge and also allows other to learn from you. You might not be confortable at writing, I’m not, but showing the things you create is a portfolio for the future. Learning by oneself does not provide business experience on the subject. That’s true, but it can definitely make the difference and show curiosity later on.
In a world changing so fast, it’s important for a tech guy not to stay all day long sitting at his/her desk. Try to be proactive instead! Learn new things and to get ready for a new opportunities and challenges. One of my previous colleague used to say: “You are not immune to be offered a new job, more interesting and better paid”. I’m not sure of the traduction but I like this vision. I definitely think learning and curiosity can help you if the opportunity arises.
By constantly learning in your field you’ll definitely become better. Do little steps everyday and it will definitely pay ! On top of it, it will boost your motivation. Be ready for a new you :)