Posts

Engineering Personas meet Explore, Expand, Extract

Image
I have always been intrigued with the idea of being able to identify one's engineering persona, and develop a framework (of thought) which would allow effective team building based on personal and professional traits. Having spent a while in both academia and industry worlds of software engineering, I have been experiencing an increasingly disturbing feeling of disconnect between the two. In particular, between what is considered best practices in theory and what actually takes place in the industry. One particular aspect that has not been well incorporated into (empirical) software engineering research, is the human in the loop, or the social, cultural and human-centric aspects of software engineering as the authors of " Empirical Software Engineering: From Discipline to Interdiscipline " elegantly put it. We have little knowledge of how social and behavioural patterns in software engineering affect what came to be known as "best practices". Take automatic refa

The Joy of Manipulating Code Quickly and Safely

Even the trivial things are not A common activity the vast majority of software engineers share is working with code. There are many programming languages out there, some are statically typed, while others dynamically. Some are object oriented, and some are functional. Others are still trying to make up their mind (just kidding, we love you Scala!!). Regardless of the programming language at hand, in the end, working with code means manipulating code. These manipulations can be read-only, e.g., code navigation, or mutating, where existing code is being changed, and/or new code is being written, or both. Not only is manipulating code a very common activity for software engineers, some would argue that this activity is what takes up most of one's time as a software engineer, or at the very least, one of the top activities software engineers spend time on. Other activities includes consuming coffee, debugging, context gathering, etc.  Manipulating code is not trivial. For example, in

A somewhat pragmatic comparison of OS for software engineers

The debate on which laptop is the best for professionally developing software has a tendency to get somewhat fanatic and emotional. When it does, this debate quickly depreciates because it becomes particularly difficult to discern opinions from facts, plus people get all shouty which is rarely a good thing in the context of a discussion. It's a shame, because I do believe that it's an important question which will most certainly affect one's development experience in many ways. Seeing that I have had experience working with all the major contenders (i.e., Windows, Linux, and macOS) at least to some extent, I'm hoping my experience can be of use to people contemplating new setups for professional software development. It's important that we define KPIs (a fancy word for criteria) which we will use to perform the comparison. Hopefully this will help avoiding statements like X is better because it's gray. Unless gray is a criteria I actually care about (spoiler

Sending the right kind of message

I have recently had a number of colleagues tell me about their work environment. I find tech culture fascinating and rarely miss out on a chance to get first hand details. One of the companies I was told about, had a well stocked kitchen area with an LCD monitor looping through various dashboards. Sales leader boards, news about deals getting closed, social media and tons of other sales related material. Occasionally it would also display pics of people who had birthdays coming in. This may be be a good point to mention that the friend who told me this, had been working at a branch which consisted of mostly R&D and some product, few to none sales people whatsoever. This setup made me think. Dozens of software engineers and researchers walk by the LCD monitor in the common area every day, numerous times, and get an excruciatingly detailed view of the names of the sales persons who made the most sales, how many places they went up or down that week, the number of deals closed

Eclipse vs. IntelliJ, an empirical rant

Image
When I tell people how strongly I feel about my IDE preferences they are often surprised and go all "haters gonna hate" on me. Being all into empirical software engineering, here's a post on the little things that make all the difference between Eclipse and an IDE that actually puts effort into trying to understand people who write code (Java in our case).

Getting HiDPI to work with an external monitor (note to myself)

Macbook pro has an incredible retina display, and if you had a chance to work with it so much as a few days, going back to anything less feels quite unsatisfying to put it mildly.

Questions you might want to ask your potential employer

Today's recruiting managers have become salesmen, and oftentimes will be willing to tell you more than a few "alternative truths" to get you onboard. During an interview, one of your main goals is therefore to get wind of any such suspicious statements, and try to get to the bottom of them by kindly asking for more information. If you're told you have a once in a lifetime opportunity to join a new team that is building from scratch a product that's helping millions of users do this and that, take a minute to think things over and consider getting (satisfying) answers to the following questions.