Three year a dev

Here I stand, about 3 years as a professional programmer. I've been programming for more than 10 years, learning by myself most of what I know today. I really don't know what i would be doing if I didn't end up here.

What I realised over the years, and it's even more obvious when your going pro, is that you have to never stop learning otherwise you're dead. That's why i doing with so much side projects and reading many code all over the web.

Keeping the flame burning

To me, coding is a science, and science is about knowledge. It has to be precise, testable, explainable and predictable. But it also needs to be novative to be interesting, because spending all day long making wheels is not science, it's factory. Always doing the same thing over and over is boring. Working on the same project for too long also is. You lack motivation, creativity and keep doing the things the way they used to be. But as a professional changing from a project to an other is not this simple. In a company time is money so if you're the expert and do in 15 minutes what an other would do in 30 minutes, well you'll probably won't change of project. By working on the project, you've made yourself one of the expert on it and became kind of an alive manual. It does feel good to know the things and to share your knowledge with others. But the achievement is not the same as the one you get by making something awesome from scratch.

During this past year I've been in this kind of situation. I'm on an ambitious project for a while, and there's not much challenges to be solved anymore. Even if the project is awesome, spending to much time on it kills the love. The flame went low, I had to find something. The gas i found to keep the flame burning for programming is pretty simple actually. I'm doing the things I like away from work, it means spending some extra time at home learning and trying what I would like to. I mostly do side projects. I just have to take an idea, a technology I want to learn or work with and realize the thing. For those projects time does not matter, it's passion that drives you. For example with Ninpp, I simply wanted to make a presentation system that's working on a browser. I made it in CSS3 and it was really enjoyable and I learned a lot. Then I added to it some html 5 web components, kept enjoying, kept learning. And then I saved the audio and video and managed to get a playback... On this project I really enjoyed myself, made something cool and learned : CSS3, HTML5 Web components, HTML5 media, node.js server and ffmpeg video encoding.

By doing something challenging and what I like the most, I managed to help myself get the motivation back. I began to feel more helpfull at work by suggesting new technical solutions, helping others and by bringing a new look on it.

Reading code

As some people are reading novels, I'm reading read code. I know it's kinda weird but I like it. Internet is full of content, sites like GitHub, Sourceforge and many others. The programming language is not important, it's the logic and the way to do the things that matter. This way i learn new solutions to solve a problem, discovers technologies (old or new), twists my mind a little bit and by that improves my own set of skills.

Recently I read the Query source code. It does take a lot of time but it's a well written code that's easy to read but I learned a lot about javascript and browser compatibility. But don't worry about my sanity, I also reads books. Mostly in french but also in english. I recently read The Pragmatic Programmer and Effective C++, it's hard to read but you learn so much! I'm currently reading You Don't Know JS a set of great books on Javascript specifics behaviors.

Logic is the beginning of wisdom, not the end

[Leonnard Nimoy](https://www.youtube.com/watch?v=A4XPTmmvVow) RIP

The next steps

I also discovered, that in france, you cannot boundlessly make your career evolve as a coder. There's a moment you'll have to stop coding to keep evolving, being a team manager, doing client relation or whatever. It's like saying to a blacksmith, "well you very very good at making axe, we want you to become our new accountant"... For now at least I rather creating the technologies than selling them. Here a recent Commit Strip that pretty much sums up the situation :

I'm now sure that if you want to evolve in a particular way, don't wait for it to happen. It wont, and you'll be in the same spot forever. Change things, go for it and you'll get the result you were looking for.

I don't want to be a form programmer for the rest of my life. I don't like filling them so why would I like creating them? A form will still be a form and most of the time it will result in an Excel file. Even if I use an awesome technology to do it, at the end it'll still be so few rewarding that I wont be even happy. I'd rather make some pretty code, it doesn't have to be long. Long code is hard to debug, to learn and understand, so short code is to me way better. Of course it doesn't have to be this short (tertis in a tweet) but... you see my point here.

function(a,b,c,d,e){return d+=c,
    e=a|b<<d,d<0|a&b<<d&&(a=e=
    parseInt((a|b<<c).toString(d=32)
    .replace(/v/,""),d),b=new Date%2?1:3),
    [a,b,d,e]}

Conclusion

Basically, I love trying things, uncertain things, ambitious things that sound as crazy in I my head as they do out loud, because trying something new is simply the best way to make the next great thing.

# using star trek original 60's series, opening monologue voice

Code: The final frontier,
These is the voyage of the human, David
Its 3 year mission
To explore strange new languages,
To seek out new patterns and new technologies,
To boldly go where no man has gone before.