Only Software matters

Experiences in software development

International Software Developer Conference in Greece Survey

Posted by Patroklos Papapetrou on March 30, 2014


We are all aware of the numerous software development conferences around Europe and the U.S. Some of them are specialized in a topic and some others cover a broad range of topics. Participating in such events has several benefits : new knowledge, skills, useful experiences, socializing, even new job opportunities. I’m sure that, people that attended at least one conference, can verify that.

We all know also that in Greece there aren’t many conferences. As far as I know, there’s a successful uncoference in Crete (jcrete.org) that takes place 4 years in a row. This May, for the first time Oracle will organize after some years of inactivity a Java Day Event and there’s a new uncoference ( agilecrete.org ) targeting agile practices the upcoming September.

This survey, I’m kindly asking to fill contains a few easy questions about the possibility of organizing a 2-day International Software Development Conference in Greece. The more answers we get the better conclusions and decisions will be made https://www.surveymonkey.com/s/VJ9XQNF

Thank you in advance for your time and don’t hesitate to ask or comment anything you feel it’s useful.

 

Posted in software | Tagged: , | Leave a Comment »

To SonarQube or not to SonarQube?

Posted by Patroklos Papapetrou on February 13, 2014


This is the first question that a team leader, s/w director, customer, developer, architect, tester or whatever role exists in a development team should ask. It’s not yet another question about using another “quality tool”. You already have plenty of them installed. This is not a simple question to see how much you care about test coverage or to find which classes have the most issues. There is no competition and no prize about that! It’s the only question that you needto answer in order to show how much you care, how much you REALLY care about the overall quality of your code. If you have never used SonarQube or even heard about it, then this is your chance to find out how this little (but great) piece of software have changed our lives (as developers) and enhance our products.

Darkness. This is how I describe our development life before SonarQube. We had no insights of our code. We ran no unit tests. We did not know whether the current design allowed us to quickly add new features or make important changes, which made us apprehensive about any refactoring attempt. Coding rules; Issues; what the heck are these? Duplicate Code? God bless copy – paste. Testability, Stability, Changeability were terms we needed to look-up in a Chinese dictionary to find out their meaning. Bugs were discovered late in the development lifecycle causing some red-alert situations and releases seemed to be some kind of middle-age dragons that our support and test department had to fight before they come out to our customers. And then some kind of a miracle happened. I can’t remember how I reached SonarQube, but right now I am quite sure that, those 10 minutes I needed to read SonarQube’s features, changed our mindset.

Without any second thought I downloaded and installed it. Full of excitement I analyzed my favorite project and after a couple of minutes I was starring at my screen in front of my first ever SonarQube dashboard.My first feeling was an extreme disappointment:”Our code sucks!”. Soon I realized the possibilities of this unknown to me tool and I was stimulated about the potentials. Immediately I showed it to my team, shortly explaining them, the different metrics and their meaning about code quality. A new era has begun. Today, SonarQube tracks all our projects. Every morning team members check the project dashboard, especially the differential views from last analysis. We have configured thresholds for the most important metrics, so whenever new code reach a threshold, build is broken. We handle these builds just like all broken builds: Fix them ASP and restore the required quality. Before we begin a refactoring task we always consult SonarQube for signs of poor design. We continuously strive to focus on code quality from the first day of the project and SonarQube is the best ally we could ever hard. I love to see my bubbles(Motion Chart) changing colors and moving towards perfection. I love to see my projects treeview getting green from red. With a single view I can figure out which components need our further attention. Just pick up the red big-ones and start cleaning up your code!

Our new product releases are much more stable. From dragons are transformed to butterflies. Trust and confidence in our team has significantly grown. We feel no fear when we add new features or modify existing ones. In other words, this is our SonarQube life! Sometimes, I wonder how our code could “breathe” some years ago. SonarQube gave us the missing oxygen. I have answered the question to myself. I have chosen light instead of darkness. it’s your turn now!

Posted in software | Leave a Comment »

My advice to (junior) developers about their career

Posted by Patroklos Papapetrou on February 7, 2014


The last couple of months I have met several young developers that either looking for the first job or are still trying to get their bachelor degree. Many of them asked me to give them my advice on how they can make their first steps in the software development career. It’s really nice to see young people to care so much about their career. I don’t remember that the guys of my age had the same mentality. I assume it’s the economic crisis that made all these young people act so maturely, but I like it :)

In this post I summarize my advice to all these “young” and ambitious developers. Don’t be fooled by the word young. Even you have already 10 years of hands-on development on your back, you’re still young. At least, me, I feel this way.  

The first thing they ask me is to tell them which language or framework should they learn. I can give you a hundred of different answers but the key is not which language you already know but how quickly you can learn a new language. Do you think that Google, or eBay, or Amazon care if you’re a Java or JEE or JavaScript expert? Send your CV and have an interview with some techie guys … :)

IT companies should hire characters and train skills. Ok, I know that this is not always the case but sooner or later, nobody will ask you to list all the programming languages or frameworks you know. If you are a “Lucky Luke” character no-one will ever want you in the team. The age of super-hero-programmers has passed and I don’t see it will ever come back. Teamwork is one of the keys to success and you should be prepared for that. And what about skills? If you can’t learn a new tool, a new language or a new framework, you still have enough time to pick up a different career. Companies will invest on you to teach you new skills but you should be a fast learner and be able to adopt these new technical skills in your everyday work.Think for a second about the definition of “investment”. Yes, you are right. Companies are not offering this education as a gift. They expect from you to pay back this new knowledge by increasing your skills, your productivity and eventually the company’s value.

Another great idea is to be open-source friendly. Pick up an open-source tool you like, you know well, or you just find it interesting, and join the community. Try to be active, to participate in forums, and why not, contribute on the project. There’s nothing better than showing to your future employers your real work in an open-source project. Moreover, open a github account, if you haven’t done it already. Push your personal projects. Let others see that you’re passionate about software development and you’re not just consider it as a way of getting some money. And since you have your github account read others code. It’s a great way to open up your mind and learn new things for languages you’ve never seen.

Be agile! Learn how to write clean code, no matter what’s the language you’re writing code. Learn how to respect yourself and the other developers of your team. Your code reflect your personality. A messy code will probably make your colleagues think that you’re the same in your personal life. You don’t want to hear from your co-workers “WTF is this?” when they read or review your last commit. Learn design patterns and re-factoring. You can apply them to almost all famous languages and they surely make you write cleaner code.

Join local user groups and go to some conferences. It’s incredible how many things you learn when you meet people from different cultures, backgrounds and knowledge. You have nothing to lose. On the contrary I can assure you that it’s a win-win situation. Not to mention that you will increase your social circle and maybe improve the chances of getting a new job.

Finally build your brand. I may sound like a marketing-guy, but I’m not. Advertise yourself with your achievements, even if you’re the millionth guy that did it. It doesn’t matter. Let others know your interests and that you’re active in software development. LinkedIn, Twitter and other professional networks can help a lot. Start blogging and post little articles about your experience and knowledge, even if they’re for beginners. Again, it doesn’t matter!!! You’ll find yourself very soon posting more and more advanced stuff. 

And one last thing… Don’t you ever stop learn new things. You decided to become a software engineer. This is your destiny. To continuously learn new things. 

 

Posted in software | Tagged: , , , | Leave a Comment »

My upcoming talks about Code Quality and SonarQube

Posted by Patroklos Papapetrou on February 5, 2014


Here’s a list of my upcoming talks and workshops about SonarQube and code quality 

Ping me if you want to meet me and discuss about code quality, or to give talk, workshops in local user groups

Posted in software | Tagged: , , | 1 Comment »

SonarQube 2014 unofficial Survey results

Posted by Patroklos Papapetrou on February 3, 2014


The unofficial SonarQube 2014 Survey has completed and in this post you can see the results

Thank you all of you who spend some time to vote

 

 

Image

Image

Image

Image

Image

Image

Image

Image

Image

Image

Posted in software | Tagged: , , | Leave a Comment »

New Year’s Resolutions for ScrumMasters and Product Owners

Posted by Patroklos Papapetrou on January 3, 2014


See on Scoop.itAgile in Dev Teams

Mike Cohn provides certified scrummaster training & agile training in order to build extremely high performance development organizations.

See on www.mountaingoatsoftware.com

Posted in software | 1 Comment »

2013 in review

Posted by Patroklos Papapetrou on December 31, 2013


The WordPress.com stats helper monkeys prepared a 2013 annual report for this blog.

Here’s an excerpt:

The concert hall at the Sydney Opera House holds 2,700 people. This blog was viewed about 28,000 times in 2013. If it were a concert at Sydney Opera House, it would take about 10 sold-out performances for that many people to see it.

Click here to see the complete report.

Posted in software | 1 Comment »

Agile ALM Book Review

Posted by Patroklos Papapetrou on December 26, 2013


Some time ago I was looking for some resources around the Internet in order to combine the agile principles we were already following with a more flexible application lifecycle management. I wanted to find ideas and methods to get the best out of developers’ practices with source code infrastructure and well-known and mature tools that cover all development phases. I was so lucky that I found the Agile ALM book by Michael Hüttermann. I really enjoyed reading it and applying its concepts to real projects and I wanted a long time ago to write a review about it. Now, during Christmas time, it was the best period to do it, so here it is.

The initial paragraph of the “Preface” section summarizes the author’s intent:

Welcome to Agile ALM. This book has three main goals. The first is to describe Agile
Application Lifecycle Management (ALM) in practical terms and to provide a plan for
rolling out Agile strategies and best-of-breed tools. The second purpose is to explain
how to create ALM toolboxes based on standard tools used in advanced, real-world
cases. The third goal is to give you some guidance on how to choose the best tools, use
them correctly, and integrate them while applying Agile strategies. These three goals
are the focus of this book.

The author of Agile ALM bookMichael Hüttermannand is a java.net Community Leader an Oracle Java Champion at java.net, the Chairman at Java User Group Cologne a freelancer and delivery engineer that helps companies with SCM/ALM, Agile, Continuous Delivery and DevOps.

The title of the topic and the table of contents were the key factors that made me (I assume this is true for other readers) read it from the very early during MEAP program offered by Manning. The topics are suitable for both junior and experienced software developers. Delivery engineers will find it very useful as well even if they have no previous experience with the concepts introduced in the book. The Agile ALM is divided into four multi-chapter parts.

Part 1 (“Introduction to Agile ALM”) introduces  the basic concepts and building blocks of an agile ALM with practical use cases and best strategies. Chapter 1(“Getting started with Agile ALM”) sets the roots by discussing the evolution of ALM and how the use of lightweight tools can boost the effectiveness of an ALM through a real-life example. Chapter 2(“Agile and ALM strategies”) starts by explaining how project management can fit in an agile environment and propose a series of strategies to implement ALM processes. The remainder of the second chapter is about finding a balance between over-controlling the ALM and not controlling it at all.

Part 2 (“Functional Agile ALM”) touches the concepts of release management and task-based development in a higher, non-technical level. Chapter 3(“Using SCRUM for release management”), as its title implies is all about SCRUM and how practitioners can apply release management using SCRUM principles. Readers, after finishing this chapter, whey will be able to implement, following a detailed step-by-step guide, a release management process. The Subversion supporting strategies that finish third chapter are the bonus included topic. Chapter 4(“Task-based development”) talks about a series of mature tools such as Jira, Trac, Bamboo and others that facilitate task-based development, bug tracking and project management.

Part 3 (“Integration and Release management”) is considered more technical as it describes techniques using a variety of tools to manage and release artifacts and apply continuous integration. Chapter 5 introduces the Maven  ecosystem and explains the process of releasing using some of the most well-known Maven features. After reading this chapter you will be able to do release management with Maven and get the foundation ideas for the rest of the chapters. Chapter 6(“Creating a productive development environment”) discusses Mockito and its important role in mocking, stubbing and isolating systems during test execution. This chapter, also, teaches us the art of creating and maintaining workspace environments for developing, integrating and testing software systems.  The rest of the chapter deals with various advanced continuous integration techniques. Although there are plenty of great books for each topic discussed in this chapter, what makes it special is that everything is placed in the context of agile ALM. Readers, especially those that have already a small experience with such processes will find it really useful to see all these well-established tools fitting in their development lifecycle.

The last Part 4 (“Outside-in and barrier-free development”) of the book moves agile ALM even further by introducing some approaches for requirements and test management. What is really cool, is that, again, in chapter 8(“requirements and test management”) these concepts are presented with practical advice and examples using testing frameworks such as Selenium, TestNG, FitNesse and others. The topic of collaborative tests was one of my favorites throughout the book. Not only it’s perfectly explained but it made me also realize how testing processes and should be considered and implemented. The last, but not least, chapter of the book (“Collaborative and barrier-free development with Groovy and Scala”) explains how it’s more productive to use different languages for development and testing activities (polyglot programming). Spock, easyb and spec2 are some of the tools presented in this chapter to describe using practical examples the concepts of Business Driven Development (BDD) and Domain Specific Languages (DSL)

Conclusion : The Agile ALM book is not just another “agile” book. The high expectations set when reading the abstract and the back page of the book were met. One might think that the large number of techniques and tools included in the book might annoy or confuse the readers but this is not happening because as already said, everything is discussed withing the context of ALM. You will learn a lot of new ideas and strategies and you will be able to adopt them immediately. Even if you’re not familiar with some of them, the book explains very nice the basics and moves directly to the approach that will solve a particular problem in the development lifecycle.

Posted in agile, book review, java, jenkins, software | Leave a Comment »

Pairing vs. Code Review: Comparing Developer Cultures

Posted by Patroklos Papapetrou on December 19, 2013


See on Scoop.itAgile in Dev Teams

Papapetrou Patroklos‘s insight:

Prerequisites for success

 

Solid continuous integration
Talented core developers
Agreement on the importance of code quality
High-quality codebase
Iterative self-organization

See on phinze.github.io

Posted in software | Leave a Comment »

SonarQube 2014 user community survey

Posted by Patroklos Papapetrou on December 13, 2013


Hi everyone

As every year, it’s time for voting!! Not for plugins but for SonarQube’s unofficial 2014 survey.
You are all welcome to reply anonymously to 10 simple SonarQube-related questions. I expect that you won’t need more than 5 minutes to complete it.
The survey will be open until 31 of January and the results will be published in a following post some days later. The results will show not only this year’s answers but also a comparison with previous years :)

Just click on the following link and send your responses https://www.surveymonkey.com/s/J9CHZ8N

Best Regards

Patroklos Papapetrou
Co-Author of Sonar​Qube​​ in Action
http://gr.linkedin.com/in/ppapapetrou
http://twitter.com/ppapapetrou76

Posted in software, sonar | Tagged: , | Leave a Comment »

 
Follow

Get every new post delivered to your Inbox.

Join 448 other followers

%d bloggers like this: