I’ve got an idea that writing a blog should be my next step in improving myself. I’ll write mostly about technical stuff like java, jvm, microservices, frameworks but also about my thoughts about other relevant things. I treat my blog as an archive for my ideas, proof of concepts and thoughts that I want to share with other programmers. Even if nobody reads it, it will be a nice practice for me.
Everyone’s career has started somewhere. I started my journey about 5 years ago as PHP programmer. During that time I was searching for a way to improve myself - a method of learning new things. This blog is my next step in professional career progress. I feel the need of getting outside my comfort zone to experience new things. Steve Jobs closed his commencement speech to the graduates of Stanford University by advising them to follow the advice:
Stay Hungry. Stay Foolish.
He wanted them to ask themselves whether they are living the life they wanted. I think everyone should ask himself this question. We are software engineers, we should improve our skills every day and focus on being better than the day before. In this post I want to share my feelings and experience from the last few years that concern our self improvement and how we can continuously learn new things. You can start simply from this blog post.
Books, articles and blogs
Reading books, articles and blogs on everyday basis? Start your day by reading an article. It may be on the bus or train, during your breakfast or coffee break. You can start really easily. It’s spending 15-20 minutes every morning. Take your time for learning something useful. It’s worth it. Human being just can’t focus on one task for 8 hours breathless. Information you can find on articles/blogs: new technologies and how you can use it, pros/cons, author’s opinion, examples, code snippets, problem solutions, thoughts. You don’t need to agree with everything what’s there. It will force you to have certain reflections and rethink some ideas. You can always start a discussion with author by commenting his article. It’s so simple.
Some useful links :
- google for more :)
Next greatest source of knowledge are books. Books that are written by specialists and people who did experience a lot in their career. Even knowledge from books written long time ago (like 15-20 years ago) is still partly valid and you can learn a lot from them. Of course you should choose a book wisely. Worth recommending authors are Robert C. Martin, Kent Beck, Martin Fowler, Joshua Bloch, Michael Feathers and many more…
Books that you should read :
- Agile Software Development, Principles, Patterns, and Practices (Robert C. Martin)
- The Pragmatic Programmer: From Journeyman to Master (Andrew Hunt, David Thomas)
- Effective Java (Joshua Bloch)
- Patterns of Enterprise Application Architecture (Martin Fowler)
- Refactoring: Improving the Design of Existing Code (Martin Fowler, Kent Beck, John Brant, William Opdyke, Don Roberts)
- Clean Code / The Clean Coder (Robert C. Martin)
- Java Concurrency in Practice (Brian Goetz)
- Working Effectively with Legacy Code (Michael Feathers)
- google “top 10 java books”
Similar to articles and blogs are videos. Videos are not so long – it takes between 15 to 60 minutes to watch a single one. You can do it on public transport, in your office, while you are working, or even after your work: just imagine lying on the couch and watching presentation from JavaOne on a big screen. You can even convince your boss to allow you and your colleagues watch these videos at the conference room for one hour per week during work time. The best presentations from the conferences and local meetups are usually recorded. You can download it after all and watch for free. Isn’t it a big deal? It’s really good option when you can’t attend to the event where some topics are interesting for you - you don’t have money for the conference/ the location of the event is too far away. Besides videos from events, there are also training videos. Most of them are not for free. Best example: Uncle Bob’s videos from cleancoders.com, where Uncle Bob teaches things that every developer should know. What then? You can convince your employer to buy some videos (it’s not so expensive for the company as it would be for you) to increase experience of his employees.
You can find may useful training/post-conference videos and meetup recordings here:
There are a few platforms with on-line courses like coursera.org, where you can get knowledge about numerously topics for free. Those platforms are good for learning basics, like scala programming, algorithm basics, machine learning, NLP and many more subjects. On-line courses will require from you a lot more sacrifice and time to succeed and have benefit. Most of them takes 6-10 weeks of study, 4-8 hours/week. On-line courses are divided into video lectures, homework exercises (it’s coding for programming courses) and they end with an exam. Free trainings are worth to recommend to beginners or experienced people who want explore new topics. If you are interested in more advanced courses, you can find some on www.parleys.com - those are not for free :)
Some of e-learning free platforms :
The largest source of knowledge at your work are people. It’s crucial who are you working with. The best quote of Jim Rohn, who is an American entrepreneur and motivational speaker:
You are the average of the five people you spend the most time with.
You can’t improve your skills surrounding yourself with people who keep lazing around. You are influenced by people closest to you whether you like it or not. It affects your way of thinking and making decision. You are more affected by your environment than you think. You should surround yourself with coworkers who are more experienced than you, who have knowledge on some other areas and from whom you can learn something new. Not all the knowledge is meant to be useful immediately. It is a snowball. You just need to find more pieces to build your own universe. If there is no person around you that makes your universe bigger, change your job.
Meetups - Local user groups
First, passive option, is related to learning and developing your social skills. It’s attending to enthusiasts meetups. You should look for local user groups in your location. Meetups like Java/Scala/Big data/JBoss Users Group are becoming more and more popular. If you’re living in a city, it should be easy to find them. Even if there is no such a group nearby, you can always find people with the same interests as yours and establish one. Participating in those meetings gives you possibility to exchange experience and knowledge with other people. It also gives you opportunity to make new business connections.
The second, active option, that involve talking to the people, is becoming one of the speakers on these local meetups. It’s about getting out of your comfort zone. You can talk about something new that you implement at work, your pet project or even new fancy technology/framework that you have learned about a lot. Share your ideas, knowledge and thoughts with other people. It’s not easy to make yourself do it. However, it’s really worth it. After that, the most important thing is getting feedback that helps you evolve as speaker. It also helps your ideas reach full potential. You can even get some suggestion and as a result improve your presentation. The feedback is not always good – I mean valuable. You need to learn how to take the most of it. I guess that you understand, that getting feedback is a way to make it all better next time. Do you?
Conferences are like meetups, but bigger and longer. Many interesting presentations are divided into multiple related tracks like: JVM, architecture, agile or security. There is a catch. You need to beware of topics that may seem interesting, but in fact, are not. Second catch: inexperienced speakers. There is a chance, that you are going to suffer on their presentations. On so huge events as conferences you meet and talk with many people, exchange experiences, learn something new and learn it nicely. You can also meet more well known people from around the world, like some java gurus.
Besides normal presentations, on most of the conferences, you can sign up for workshops where you can learn some practical skills. The major difference between big events and local meetups is that conferences are in most cases not for free. It means that the speaker’s level of experience should be higher – his proposed presentation goes through a broader group of reviewers. You can start with little goals. The time of being a star will come. Don’t forget, that even on a “free conference” you need to sleep somewhere and get there somehow.
Learning at work
There are many things that you can do with your colleagues at work, except for drinking tee, which will bring new experiences to everyone. For example: you can organize weekly meetups at which a happy volunteer presents recent interesting work or what extraordinary things she or he has learned. What’s more: you can try pair programming with one of your colleague. The point in pair programming is that both programmers are concentrating and working together at the same code using single computer. This methodology of work will increase software quality that will pay off later in the project. Another thing what you can do is organize events called hackathons or codefests. Hackathon is an event where developers meet to do collaborative programming. It gives opportunity to give a try new tools, frameworks, languages and ideas without affecting current real projects. It’s also a chance to eat pizza and drink beer with your colleagues. That’s it! The last thing I want to write about is Code Kata. It’s an idea that was introduced by Dave Thomas, co-author of the “The Pragmatic Programmer”. It’s an exercise that helps you develop your programming skills through practice and repetition. Example of Bowling Game Kata
One of the positive sides of writing a blog is english language. I’m from Poland. Most of the companies are international ones, where people communicate and work in english. Bad (?) luck caused that I’m working in polish company, where we use english for writing code and reading documentation only. You can be good, but you need to communicate with your team. If you’re thinking about bigger picture, english is a must.
If you want to be a writer, you must do two things above all others: read a lot and write a lot.
Next thing is archiving your thoughts. Even if nobody wants to read your blog, you have there a little collection of your ideas, solutions and thoughts. It’s sorted by keywords and time. If you stay active with writing your blog, you will write more and you will be a better at it. As a popular blogger you can gain influence on your readers and spread your own ideas and opinions. Your network of connections will expand via LinkedIn or other social medias. You can help other people solving problems, understand better yourself as a programmer and sort it all out in your head . Readers will also come to your blog from google while searching for solution for their problems. Your creativity will increase. You will learn a lot because to write a blog post, you need to read some articles, documentations, make code examples, etc. It leads us to self improvement and continuous learning :)
When I was on this year Geecon, great conference in Cracow, on the second day closing speech gave Grant Ingersoll. Grant Ingersoll is co-founder of LucidWorks and Apache Mahout. His great speech was about how to determine what really is important in our work. We should focus on exploring new technologies and learn skills which help us better understand new problems and challenges. We need learn things that are important now and in the future (like big data, data analytics, distributed systems and many more).
pic from i.ytimg.com
Our job is strongly forcing us to learn new things. We cannot stay on the same level of our career forever. We choose that path to be awesome software engineers. It is my way of dealing with this and I hope it will be yours as well. Pick one little idea from this blog post and start being better at what you do. Just do it!