5 Things I Do to Stay Relevant

I have noticed that some Finnish IT professionals are complaining that being just a good employee isn’t good enough anymore. These people argue that they cannot get a job because:

  • Their work experience isn’t worth anything because they have no experience from technology X that is hot right now.
  • They are too old (over 40).
  • They have a life outside work and that is why they don’t have time to learn new technologies.

I could argue that these reasons are just excuses and these people just aren’t good enough. I am not going to do this because:

  • I don’t want to be a dick.
  • I am getting older (I am 36 at the moment) and if age discrimination is a real problem, I should definitely be worried about it.

On the other hand, I think that is stupid to worry about something and not do anything about it. That is why I decided to take my destiny into my own hands and ensure that I am still relevant when I am over 40 years old.

I give you five things I do to stay relevant:

1. I Learn at Work

I spend 8 hours of every business day at work. That is a lot of time, and I want to take advantage of this time. Does this mean that I spend all this time learning new things and ignore my work?

No. It means that I learn new things when I am doing my work.

My main priority is to keep my customers happy. The thing is that learning new things at work will help me to achieve this goal. This might sound a bit weird because learning new things takes time. Shouldn’t I spend this time working for my customer?

I claim that I can learn new things, work for my customer, and save my customer’s money (or provide more value) at the same time. I can do this because I am constantly looking for ways to work smarter. If I see something that helps me to achieve this, I will start using it.

However, this doesn’t mean that I make this decision lightly. I will evaluate the pros and cons of each new technology and use it only if its pros are greater than its cons. Luckily, I don’t have to do this alone. We have a lot of great developers and I can always ask their opinion when I need it. I don’t always like their answers but that is a good thing because it helps me to see things from another perspective.

Here are some examples of libraries/frameworks/programming languages that I have learned at work during the last three years:

  • Frontend: Javascript, Bower, Gulp, NPM, jQuery, Backbone.js, Marionette.js, Angular.js, Twitter Bootstrap, and a lot of other libraries that have weird names.
  • Backend: Spring Batch, Spring Data JPA, Spring Data Solr, and Spring Social.
  • Testing: AssertJ, Hamcrest, Spring MVC Test, and Spring-Test-DbUnit.
  • Software Development: software design, automated testing techniques, agile, and using common sense.
I am sorry that I turned this example into a buzzword bingo but that was necessary so that I could demonstrate to you how much a developer can learn at work.

2. I Read (a Lot)

I think that if I want to stay relevant, I need to be able to identify “hot” technologies. Also, I need to improve my technical, business, and human skills. One way to do this is to read, and since I love reading, I read a lot.

At the moment I am reading:

  • I follow relevant "news" sites such as Dzone, InfoQ, Reddit, and HackerNews. I won’t read every popular article or discussion but these sites help me to identify trends and see what technologies are “hot” right now. Also, sometimes I find an article or discussion that teaches me something new.
  • I read interesting blogs. When I feel like learning something new, I open my feed reader and pick one or two blog posts that I read right away. When I am done, I mark all other blog post as read. The reason why I do this is that at the moment I have about 100 blogs in my feed reader and it would take too much time to read every blog post. Thus, I prioritize.
  • I read 5-10 software development books in a year. I love blogs but a good software development book fulfils a totally different need. If I want to get as much information about X as possible, I read a book (or books) because it is a lot easier than trying to find all this information from the internet. Also, I know that this is a bit of old fashioned, but when I buy a book that is published by a respected publisher, I can trust that the book contains correct information.
  • I read 5-10 other non-fiction books in a year. Although software development is a my passion, I am interested in other things as well. Typically I read books about entrepreneurship, marketing, psychology, product development, and agile “processes”. Also, I think that reading these books will make me a better software developer because writing code is only a small part of my job. I think that if I want to add value to my customers, I need to understand a lot of other things as well. Reading non-fiction books help me to achieve that goal.

3. I Write a Blog

I started writing a blog because it felt like a fun thing to do. I was right. It is fun but writing a blog has other benefits as well:

  • It helps me to learn new things. There are three ways how writing a blog helps me to learn something new:
    1. The truth is that I write some of my tutorials because I want to learn a new library/framework/tool and writing a tutorial is a good way to ensure that I actually do it.
    2. Writing helps me to clarify my thoughts and often I notice something I haven’t thought before.
    3. I answer to the comments left to my blog posts, and since I don’t usually know the answer right away, I have to do some investigation before I can write a helpful answer. In other words, I learn new things by answering to the questions of my readers.
  • It helps me to get feedback from other developers. I know that I don’t know everything and that I can be wrong. When I publish my thoughts on my blog, everyone who reads it can say his/her opinion about my thoughts. Sometimes these comments help me to understand that I am not right, and this is very valuable to me because my goal is not be right. My goal is to make people think and hope that they return the favor by leaving a comment to my blog post.
  • It helps me to build an online presence and a “brand”. Let’s assume I am applying for a new job or trying to find a new business partner. What happens when these persons google me and find nothing? This might not be a deal breaker, but I think that my blog gives me an edge over persons who are otherwise “as good as I am” but don’t have a blog. I think this way because I believe that my blog "proves" that
    1. I can learn new things. If this person takes the time to read some of my older blog posts and compare them with my newer posts, he/she will see that my thinking has evolved.
    2. I am an expert in my field. This sounds a bit narcissistic but I think that my blog posts gives an impression that I know what I am talking about. If I wouldn’t write a blog this person would just have to take my word for it.

4. I Am Active on Social Media

I use social media for sharing the content created by other people, sharing my own content, and having fun. The social media "gurus" state that this should help to brand myself as an expert, but I have to admit that I haven’t really paid any attention to this. In other words, I don’t have a social media strategy.

At the moment I am using the following social media services:

  • Github is kind of a no-brainer if you are a developer. At the moment I publish the example applications of my blog posts on Github and I use it to follow interesting projects created by other developers.
  • Google+ is a bit of a mystery to me but I decided to try it out because having civilized discussions is so much easier when I can use more than 140 characters. Also, I really like Google+ communities because they provide me an easy way to find interesting content and have civilized discussions. I am also the owner of the Google+ community called Java Testing Society.
  • LinkedIn is a place to be if you want to connect with other professionals. Although the recruitment spam has made LinkedIn a bit less interesting to me, I think that I can still benefit from sharing my blog posts on LinkedIn. Also, I haven’t used LinkedIn groups yet, and I am going to pay more attention to this in the future.
  • Twitter is a great place to find and share interesting content. I use it mostly because it is fun and it doesn’t really take that much time. The downside of Twitter is that it is “impossible” to have civilized discussions because you cannot use more than 140 characters.
  • Youtube is the place to be if you want to publish video tutorials (or watch them). I have published a few video tutorials but I have to admit that at the moment I want to concentrate on other things. However, I will record more video tutorials some day. I promise.

so, how does this help me to stay relevant?

I think that social media helps me to discover "hot" technologies and learn new things. Also, it helps me to grow my network and having a large network is useful if you looking for a job or a business partner.

5. I Work Out

This is the last thing on my list but it isn’t the least important one. I have noticed that working out helps me to reduce stress and avoid physical problems caused by sitting at work.

I go to the gym three times a week and do aerobic exercise twice a week (I don’t do any aerobic exercise when I am on holiday though). I know that this sounds a bit excessive but it works for me, and that is all that matters.

By the way, there was a time when I hated physical exercise. At that time I was stressed out, I had very low energy levels and I had weird pain between my ribs. In other words, I was a wreck. Then I decided to start working out.

It was one of the best decisions I have ever made.

Now I am stress free, my energy levels have skyrocketed, and the pain is gone. I feel great and this helps me to concentrate on other things that will help me to stay relevant.

Is This Good Enough?

Who knows.

I don’t know what happens in the future. However, I do know that doing something is a lot better than doing nothing.

I admit that I am lucky because I don’t have to do these things. I can do these things because I enjoy it, and that is why I think that no matter what happens in the future, I can feel proud of myself.

36 comments… add one
  • Henrik Warne Aug 28, 2014 @ 22:34

    Hi Petri,

    Very good points, I agree with all of them. Staying relevant also gives you peace of mind, since it (hopefully) won't be hard to find another job if you have to.

    Sometimes it is also good to change jobs even if you don't have to. You get to work with new people, see how things are done differently and learn new technologies (this applies more if you work for a product company than if you are a consultant).

    Regarding books: for some of the books I read, I make a point of writing a review of them on Amazon. It makes me think more about what I am reading, and the review benefits other readers trying to decide if the book is worth reading (win - win).

    Finally, I consider myself lucky, since software development is a field where there is (and likely will be) a high demand for skilled developers. Not everybody works in such a field.

    • Petri Aug 29, 2014 @ 20:15

      Hi Henrik,

      Staying relevant also gives you peace of mind, since it (hopefully) won’t be hard to find another job if you have to.

      I agree, and more importantly, learning new technologies or new skills is fun. Of course I don't know if all this helps me to find new jobs in the future, but I don't really think about this because I enjoy doing this.

      Sometimes it is also good to change jobs even if you don’t have to. You get to work with new people, see how things are done differently and learn new technologies (this applies more if you work for a product company than if you are a consultant).

      I switched from a product organization to a consulting company three years ago. I did this because I wanted to work with different clients and projects. It was the right move and I have had a lot of fun during these three years.

      Regarding books: for some of the books I read, I make a point of writing a review of them on Amazon. It makes me think more about what I am reading, and the review benefits other readers trying to decide if the book is worth reading (win – win).

      This is a good idea. I have published a few book reviews on my blog but not many people will see them. I think that I will have to to start posting reviews to Amazon too because like you said, this would be beneficial to other people who are wondering if the book is worth reading.

      Finally, I consider myself lucky, since software development is a field where there is (and likely will be) a high demand for skilled developers. Not everybody works in such a field.

      I feel the same way :)

      By the way, I took a quick look at your blog and it looked interesting -> I added it to my RSS reader.

  • John Aug 29, 2014 @ 3:54

    This sounds like my wish list! :)

    • Petri Aug 29, 2014 @ 20:37

      Hi John,

      if you want to do something like this but don't have time to do all of these things, you might want to start small and see how it goes. I think that small things can make the difference if you do them on a regular basis.

  • Frank Appel Aug 29, 2014 @ 12:37

    Hi Petri,

    very good post and it looks a lot like my own strategy. Only that I'm halfway through my forties. But if bugging headhunters may count as indication, it seems to work well enough ;-)

    So one thing I added to my personal list is cooking - sounds strange? Well, at least for me it helps also reducing stress by directing the thoughts into another direction at the end of a day. So I do this as often as possible. And a healthy nutrition is a perfect supplement to the work-out part, isn't it?

    But seriously, I think you got a quite important point at the end by saying that you are lucky, because you enjoy doing those things. I think this is the basic prerequisite - at least for me, because otherwise I could not imagine how to keep up the discipline.

    • Petri Aug 29, 2014 @ 20:31

      Hi Frank,

      very good post and it looks a lot like my own strategy. Only that I’m halfway through my forties. But if bugging headhunters may count as indication, it seems to work well enough ;-)

      That is true. And I am never rude to headhunters. They are just doing their job and I might need their help some day. That is why I try to decline as politely as I can (if I am not looking for a new job that is).

      So one thing I added to my personal list is cooking – sounds strange? Well, at least for me it helps also reducing stress by directing the thoughts into another direction at the end of a day. So I do this as often as possible. And a healthy nutrition is a perfect supplement to the work-out part, isn’t it?

      That is not strange at all! I happen to like cooking too. It is very relaxing and rewarding (well, sometimes the end product might not be a success if I try something new). Also, I agree that healthy diet is as important as working out, and it may be even more important if you try to lose weight.

      But seriously, I think you got a quite important point at the end by saying that you are lucky, because you enjoy doing those things. I think this is the basic prerequisite – at least for me, because otherwise I could not imagine how to keep up the discipline.

      I agree. If I wouldn't enjoy software development, I wouldn't do it for living.

      By the way, I read your blog :)

  • KevinPas Aug 29, 2014 @ 17:41

    Great read with minor flaw:

    "On the other hand, I think that is stupid to worry about something and not do anything about it. That is why I decided to take my destiny into my own hands and ensure that I am still relevant when I am over 40 years old."

    1) I don't worry (at least try not to).
    2) I am near 60. I am "up to date", "relevant", "the best performer", what ever. And still do not get interviews. I have, as you say, taken my destiny into my own hands and have ensured that I am still relevant. And I still do not get interviews. Forget about a job: I do not get interviews.

    I have worked at Intel, 3 sub-contracts at Microsoft, Nissan, NCR, etc. You can always find an "excuse" for why I do not get interviews but bottom line I don't.

    I have always performed as well as the best on any project, still do, and will (when contracting I nearly always get offers for perm which I always refuse). Can you keep up with me? (Oh Ooh bad attitude; that's why you don't get interviews.)

    I just did an analysis of Angular.js and compared it to my own JavaScript framework. Angular is pretty good but not as good as mine (they have also made a significant strategical error by using {{stuff}} which will come back to haunt them). Maybe a little biased.

    I can do anything (ANYTHING) I want with Java, C#, C++, JavaScript.

    • Petri Aug 29, 2014 @ 20:54

      Hi Kevin,

      I am near 60. I am “up to date”, “relevant”, “the best performer”, what ever. And still do not get interviews. I have, as you say, taken my destiny into my own hands and have ensured that I am still relevant. And I still do not get interviews. Forget about a job: I do not get interviews.

      I admit that this can happen to anyone (me included).

      I have worked at Intel, 3 sub-contracts at Microsoft, Nissan, NCR, etc. You can always find an “excuse” for why I do not get interviews but bottom line I don’t.

      Your situation sucks. I took a look at your resume and it is pretty impressive.

      I have always performed as well as the best on any project, still do, and will (when contracting I nearly always get offers for perm which I always refuse). Can you keep up with me? (Oh Ooh bad attitude; that’s why you don’t get interviews.)

      To be honest, I cannot understand why you don't get interviews because your resume looks pretty impressive to me.

      I just did an analysis of Angular.js and compared it to my own JavaScript framework. Angular is pretty good but not as good as mine (they have also made a significant strategical error by using {{stuff}} which will come back to haunt them). Maybe a little biased.

      Have you published the source code of your JavaScript framework?

      I can do anything (ANYTHING) I want with Java, C#, C++, JavaScript.

      I believe that because you have a lot of experience. Also, those languages ensure that you can always use the best tool for the job (no matter what the job is).

      • sahin Sep 16, 2014 @ 9:19

        I think he is overqualified and as a new term he probably can't be happy with "flex time".

  • Ingo Aug 31, 2014 @ 13:51

    Hi Petri,

    great write up. I really agree in most points. One thing though, it is really really time consuming! But at least I'm still having fun doing this stuff and I really appreciate the luxury of working in my field of interest/ passion.

    Regarding the books: Although you had some book reviews in your blog, I would be really interested what books you suggest reading, or at least a simple list of books you found helpful. Not only in the Java field, but also other development or even 'non-fiction'books. Again, it's very time consuming, at least with my reading speed (which I really must improve), but like you said, often a book is a much better resource than going through thousands of blog posts and articles on the web.

    Right now, I try to get started in the JS field, but the huge amount of resources, books and even relevant tools and frameworks, makes it hard to get a grip on that. I also don't know how deep I should go into the JS universe, because I'm mainly a Java backend guy, but as you might also know already, some UI stuff is always needed and often this is the only thing some managers see in the end. Great looking UI, great software. ;-)

    Thanks again for writing these great articles and keep it up.

    Regards,
    Ingo

    • Petri Sep 1, 2014 @ 21:16

      Hi Ingo,

      One thing though, it is really really time consuming!

      It is. Actually, this was my number one excuse for not doing anything (it takes too much time). However, after I started working out, my energy levels skyrocketed and I can do this stuff more efficiently.

      Regarding the books: Although you had some book reviews in your blog, I would be really interested what books you suggest reading, or at least a simple list of books you found helpful. Not only in the Java field, but also other development or even ‘non-fiction’books.

      This is a good idea. I will create two cards to my Trello board (other development books and non-fiction books), and I will write these blog posts when I have got time to do it.

      Right now, I try to get started in the JS field, but the huge amount of resources, books and even relevant tools and frameworks, makes it hard to get a grip on that. I also don’t know how deep I should go into the JS universe, because I’m mainly a Java backend guy, but as you might also know already, some UI stuff is always needed and often this is the only thing some managers see in the end. Great looking UI, great software. ;-)

      This can indeed be hard to do on your own. Luckily I get a lot of help from my colleagues who are familiar with frontend development. If I wouldn't have access to this kind of mentoring, I would probably be lost too.

      Thanks again for writing these great articles and keep it up.

      You are welcome. It is nice to hear that these articles are useful to other developers.

      • Ingo Sep 2, 2014 @ 12:04

        Hi.

        Yeah, at least the work-out part is one constant for me since many years, and it's really necessary in my opinion. Especially when you are sitting in front of a monitor most of the time. But I often use even this time to consume some tech podcasts. ;-)

        Regarding the frontend colleagues of yours. You don't mind sending them over? Just kidding. But that is exactly, what I'm currently missing at my job. We are a very small company, at least in the software development sector. We are trying to build up this as a new sector but we are still at the beginning. I am in the great position to have the lead there, thus I have the freedom to use any technology I want, but that leads sometimes to situations where I simple don't know if I am on the right track. We have only a few junior developers that need some leadership/ mentoring. On the one hand this is great for me, because you learn a lot when you try to teach somebody something, but on the other hand, there is no one around who leads your way. Thus this means a lot of googleing and reading...

        In addition I often have the problem of keeping the focus right. There are simply to many things to do and to learn. My current take on this is to participate in some online courses, like udemy or coursera, where you have a 'tight' schedule with homework and so on. I just finished the MongoDB courses from MongoUniversity which I can highly recommend. Next I think i will check the "Functional Programming Principles in Scala" course from coursera.

        In addition YOU just gave me another tool which might help me organize and getting things done. Trello. Looks great and I didn't know that before. Thanks for that. :-)

        Regards,
        Ingo

        • Petri Sep 2, 2014 @ 21:22

          Hi,

          We are a very small company, at least in the software development sector. We are trying to build up this as a new sector but we are still at the beginning. I am in the great position to have the lead there, thus I have the freedom to use any technology I want, but that leads sometimes to situations where I simple don’t know if I am on the right track. We have only a few junior developers that need some leadership/ mentoring. On the one hand this is great for me, because you learn a lot when you try to teach somebody something, but on the other hand, there is no one around who leads your way. Thus this means a lot of googleing and reading…

          This is a very lucrative situation to you because you have the freedom to select the best tools for the job. However, like you said, the downside of your situation is that you don't have a colleague who could mentor you. Are there any local events that could help you to find people who could answer to your questions?

          In addition I often have the problem of keeping the focus right. There are simply to many things to do and to learn.

          This is quite common problem. I am suffering from this too!

          In addition YOU just gave me another tool which might help me organize and getting things done. Trello. Looks great and I didn’t know that before. Thanks for that. :-)

          You are welcome! It is indeed a useful tool and we use it at work too.

  • cysiek10 Sep 2, 2014 @ 9:09

    Nice post. Regarding “news” sites my favorite is Infoq. I sometimes check reddit but there is too much bias toward hipster languages and technologies like Haskell, Rust, NoSQL, Functional programming, Scala ... which are interesting but not wildly used in the industry.

    • Petri Sep 2, 2014 @ 21:40

      Thank you for reminding me about InfoQ. I follow it on a semi-regular basis but I didn't mention it on the blog post. I updated the blog post to include it as well.

      By the way, I agree that Reddit and HackerNews are very hipster friendly places. That is one reason why I like to follow them. Sometimes it is nice to read about something that is totally different than my daily work.

  • yotam Sep 2, 2014 @ 18:21

    As a young programer this post really helps me understand that I need to to in order to take more control of my future.

    I recently started reading Clean Coder by Robert Martin and just started to add coding blogs to my RSS, so I guess I am on the right path.

    Thank you for this important blog post. And I will keep reading your excellent website.

    • Petri Sep 2, 2014 @ 21:45

      You are welcome.

      It seems that you are already following the right path. However, remember that life is short and software development is just a small part of it.

      Keep up the good work!

  • Anonymous Sep 9, 2014 @ 15:47

    Well.... I do 4/5 of these things (I am not a software designer and come from an industry that required very little program knowledge of me) and got an M.S. at 52 in a completely different field. I feel I am the best, smartest, and most flexible I have ever been. I am a great investment for any company. Of course they must want to utilize my skill set but I am completely hireable. I have been looking for a job with my new degree for a solid year .... and nada, nun, zip, nothin'. In fact, three interviews and NO offers. I also don't look or dress my age (in a good way). The age discrimination is palpable. Our obsession with youth is wiping out a vast number of baby boomers potential to be viable into their 60's and beyond. It makes me very upset.

    • Petri Sep 10, 2014 @ 20:48

      Hi,

      I am sorry that took me one day to answer to your comment. The truth is that I really don't know what to say to you.

      It seems stupid that companies don't want to take advantage of the experience of "older" people. The reason for this is that even though young employees might sometimes look more "passionate", old employees often have a tons of valuable experience that helps them to avoid some of the mistakes that younger people tend to make.

      That is why I believe that every employer should concentrate on hiring both young and old people (at least in knowledge work).

      I hope that you get a new job soon.

  • Lijo Mathew Sep 10, 2014 @ 9:23

    This is very inspiring points for me. I am at 32 and feeling tired of IT job. But your blog made me to rethink and to change in my view points. As you suggested I will try to do some baby steps to keep me relevant

    • Petri Sep 10, 2014 @ 20:19

      I don't of course know your situation, but there was a time when I was so sick of software development that I was seriously wondering how some people can do it until they retire. I decided to quit my old job (there was nothing wrong with it) and started looking for a new job.

      That decision changed everything.

      When I started working for my new employer, I found my passion for software development. I started blogging, reading blogs, and decided to start learning new things every day. That decision was a game changer for me.

      I think that you should try to find an answer to this question:

      Are you tired of an IT job or are tired of your current IT job?

      By the way, if you want to start small, you could pick a new programming language and use it for solving the Project Euler problems. It doesn't take a lot of time because you can solve them one problem at the time, and this is a good thing if you don't have a lot of "free" time.

  • Jay Sep 17, 2014 @ 20:56

    I just turned 40 years old and this is something that has been on my mind lately. I'm one of those who "have a life outside work and don’t have time to learn new technologies", although having a life is a nice way to say it. It's actually "extremely time consuming demands of having a young family." Your counter "learn at work" is a good angle, and I'd like to pursue that idea here. It seems easier to learn the latest things if you work for a consulting company, but "just go work for a consulting company" might not be an option. I'm interested in your thoughts on learning new technologies at work when you work at a software product company with a single product and a very strongly established technology stack. What are some approaches to learning new technologies there? Convincing arguments to be made to management? I have some ideas too but want to hear what you think.

    • Petri Sep 19, 2014 @ 21:14

      Hi Jay,

      I am sorry that it took me some time to answer to your questions. The reason for this is that I was trying to figure out sensible answers to your questions.

      The thing is that I used to work in a product company before I started working for a consulting company. I was able to learn new stuff at work mainly because I was a software architect and one of my responsibilities was to select the used technologies (we were rewriting some of the products at the time).

      There are two reasons why I suspect that my advice might not be useful to you:

      • Most developers who work in a product company aren’t allowed to participate to technology selection.
      • Sometimes the people who make these decisions don’t listen to reason.

      Anyway, here we go. I think that you have two options:

      • You can try to convince your managers / architects to try a new programming language in the product. Remember that you don’t have to add the new programming language to the “main” code base. The next time you have to add a new module to the product, you can separate the new module / feature from the “main” code base by using the the microservices architecture. Of course this makes sense only if the new feature / module doesn’t depend from the “main” code base.
      • You can try to convince your managers / architects to let you use a new programming language if you have to implement a tool or a utility that helps you to automate routine tasks. The reason why I suggest this is that since these tools aren’t often related to the “main” code base, it is a lot easier to get permission to do this because the risks are lower.

      I admit that these suggestions have one major flaw:

      If you don’t get a permission, your hand are tied (unless you do it anyway which is probably a bad career move).

      So, how can you convince the management that using a new programming language makes sense?

      Typically management is interested in money. If you can prove that using a new programming reduces the time needed to implement a new feature or reduces maintenance costs, you have a good chance to get the permission to use it.

      Of course sometimes this isn’t good enough. If the architects don’t like the programming language or they (and the management) just want to avoid all risks, it doesn’t really matter how solid your arguments are. If this is the case, you probably have to just accept it or get another job. I know that this sucks but sometimes life can be really unfair.

      By the way, what kind of ideas do you have?

      • Ingo Sep 20, 2014 @ 12:41

        In my opinion and experience, you really have to do the first step in learning the basics of the new technology outside the regular work. This doesn't have to be very deep, just the basics. Maybe you can do this with just half an hour of extra time.
        Then begin to use it for a really small prototype that shows the benefits. This might be a project for better testing the main product, or some additional metrix or analysis of the logs etc.

        Take for example Spring Boot: It is really easy to get started and build a small app that monitors the database or run some log analysis and provides the results via a Rest interface. For this app you can also start using a different language, eg groovy which simplifies and fasten the development even more. The point is, it should really be a small program but it can/should already show some benefits. Show this to your colleagues, your boss... And hopefully you can convince them to build more on this. Maybe a Web front end to better visualise the previous data. UI is always good for management. ;-) Therefore you can start again with a new technolgy, like AngularJS, where you can get first results really quick...

        Having said that, there is course the problem of building the first prototype...but there are a lot of tutorials, again have a look at the Spring.io guides, where you can built something in really no time. You don't have to understand everything, just get something to work on...

        Hope that helps...

        • Jay Sep 23, 2014 @ 23:54

          Thanks Petri and Ingo for your responses, the picture you paint of how to introduce a new technology is what I had in mind as well. A small tool to help with regular tasks, or a small app that monitors the database or runs regular analysis, are good ideas for a "starter app" that can jump start your way into full-fledged learning experience with something new.

          I think if you approach management and say "I want to use X to do Y, but I have no idea how to use X" the response is going to be poor. But if you say "I want to use X to do Y because I already know X and already foresee it being useful to accomplish Y" the response is likely to be much more favorable. Note that saying you know X doesn't have to mean you are an expert. It just means you are serious enough about it to have invested some of your personal time into it outside of work. I know this article was about learning on the job, but in this situation at a product company I think you need to do some initial work to set up the more powerful situation of learning on the job.

          To expand on the idea of "a small app": if you can think of a way for the development to pay for itself (maybe a mobile app that leverages your product's API that can be sold as an add-on, or that can help to generate additional regular sales), it is much more likely to get the go-ahead. Whenever you are trying to convince someone of something, you have to think about it from their perspective and create a truly beneficial situation for them, not just for yourself.

          Finally, if your product is written with a JVM language you can write tests in other languages because ultimately JVM languages all are running on the same JVM. For instance, one way to learn Scala is to use it to write your tests (http://stackoverflow.com/questions/1148775/use-scala-to-unit-test-java) This is a pretty low-risk way to learn and introduce a language without impacting the rest of the code base.

  • karthik karuppannan Dec 18, 2014 @ 21:19

    good one.. Have you published your favorite books/blogs anywhere? I share interests/skills similar to you (spring boot, jpa, angularJS, etc) and would love to know your preferred blogs/books.

  • Dmitry Mar 24, 2015 @ 13:58

    Thanks, Petri for this great blog post. I very liked it and I wish I had time to do all of this things. Now I can find time only on gym 3 times per week after work and read blogs and books on weekends.

    So can share your recipe, where do you find time to write your blog, read blogs and books of other developers. Also I know that it's good to contribute to open source projects or work on your own pet project.

    How to stay completely relevant if we have only 24 hours per day and 8-9 of them we have to sleep to feel good.

    Thanks

    • Petri Mar 28, 2015 @ 16:06

      Hi Dmitry,

      I am sorry that it took me so long to answer to your question. I am afraid that I don't have a secret recipe. Instead I have followed these simple rules:

      • Do only the things you want to do. If you try to force yourself to do stuff that you don't really enjoy, you are wasting your time. Concentrate on things you enjoy and you will be a lot happier (and you actually get these things done).
      • Start small. Sometimes people try to do too many things at the same time and they don't finish any of them. When you start a new hobby (like blogging), you probably cannot are not very good at it (e.g. you cannot write as fast as you want to). I think that it is better to concentrate on getting better (and faster) before looking for other interesting things to do.
      • Get a job that gives you the possibility to stay relevant. I consider myself very lucky because my employer gives me the possibility to learn new things at work (this includes reading blogs). If you aren't this lucky, you should try to find another job because having a this kind of a job is the easiest way to stay relevant.

      P.S. If you use public transportation when you go to work, make this time count by reading books and blog posts.

  • cemo Apr 15, 2015 @ 10:38

    I have been following you at Twitter for a long time. I would like to thank you for being such a helpful guy by means of this opportunity. Please tweet when you start a new book on a regular basis. :)

    • Petri Apr 15, 2015 @ 19:28

      Thank you for your kind words. I really appreciate them!

  • Ryan Khelsi Aug 26, 2015 @ 3:16

    Hi, i dont know where to start here. I came across your weblog when i was googling about, i think java spring. I have many questions to ask about software development (and the careerof a developer) but i think i will start with question about Hibernate

    I saw in the other post/link (forgot which one because only one tab open in my safari mobile) that you said hibernate is not really good and not recommended so we should delete and use others similar (like spring jdbc)
    Why do you think is that? I'm just curious, since in my current field i'm working in product company and dont get to choose technology used, and currently work for company my responsibility is to maintain, integrate, and implement and if needed to Add function to current code, it's currently technology is using *mixed of* Spring-Hibernate (i think)

    Thank you, i'm looking forward to hearing your answer and explanation (maybe short and compact is enough if you dont have lot of free time) but thanks anyway.

    • Petri Aug 26, 2015 @ 21:20

      Hi Ryan,

      I saw in the other post/link (forgot which one because only one tab open in my safari mobile) that you said hibernate is not really good and not recommended so we should delete and use others similar (like spring jdbc)

      That is interesting. I don't think that Hibernate is bad, but I think that we shouldn't use it for everything. It would be interesting if you could find that blog post because I couldn't find it either :(

      Why do you think is that?

      Well, actually I think that it is fine to use an ORM inside a read-write transaction because it makes our code simpler.

      However, there are situations when using JDBC (or jOOQ) is a better choice. For example, if we need to select only a few columns from the database or we are inside a read-only transaction, using an ORM might not be a good idea (this depends from the situation). If we use an ORM inside a read-only transaction, we might run into the following problems:

      • We select more information than we need.
      • We run into the n+1 select problem.
      • We cannot use the index-only scan.

      Also, if we need to transform our entity into a DTO, using an ORM doesn't make our code simpler. IMO, the simplest solution is to query DTOs from the database.

      If you have any additional questions, feel free to ask them.

Leave a Reply