Asking and receiving feedback on your software project

Introduction A month ago I asked the HN Community for some feedback about my project: Gelidum. The experience was very positive and I have learned that asking for feedback in a software project is crucial. Why feedback is important? We know that feedback is important because it gives us a different point of view about a matter or in my case, a project. But, feedback is not limited to giving different points of view. [Read More]

Immutability

Introduction In this post I will explain the rationale about working with immutable objects and will present a personal project I’ve been working on the last few days: Gelidum. La nevada by Francisco de Goya Why immutability? Nowadays, most processors have some kind of parallelism or concurrency embedded in themselves. Single-flow-execution software is limited by the lowest speed unit in the system. There are some solutions that try to hide the wait for these slow sub-systems by computing in other execution-flows (threads or processes). [Read More]

Ethical issues of Artificial Intelligence

Introduction There is a mooc in the University of Helsinki about the ethics of artificial intelligence. I just started it and it’s great. The triumph of technicism Us engineers tend to think that there is no problem (technical or else) that cannot be resolved by technological means. That’s called technicism. Usually that’s right for small-scale problems or systems, but in the case of artificial intelligence, or being more precise machine learning that’s not true. [Read More]

What is the most useful skill for software engineers?

What is the most useful skill for software engineers? Programming? Algorithms? Knowing many language or the internals of some languages? No. The best skill for a software engineer is knowing how to write well. There are some studies that establish a relationship between language skills and programming skills. It seems having strong language skills is better than being good at math when talking about developing software. I can imagine that that’s because communication is a foundation of software engineering. [Read More]

Conventions

Conventions are what build our society. Nobody, but you’ll get my point along this post. Conventions Having the same language is better than having different dialects or languages when speaking of the same thing. ## Write the code to make it obvious Every software engineer develops an unique style of coding through their career. Usually they starts coding tangled code that is extremely difficult to understand to anybody but theyself. Later you get to the point where you are unable to understand your own code, and began to wonder how is that possible. [Read More]

Job searching successfully

Pursuit new things. Be challenged. Be surrounded by people that inspires you. Job searching successfully This post is totally my personal opinion so if you don’t agree with it, don’t worry, there are multiple types of software engineers/developers and all of them are nedeed by the society. I have been looking for a job for a while, doing some interviews checking on some job postings and have successfully landed a new job. [Read More]

What I learned this 2018

You never stop learning. Embrace learning new things. 2018 recap Machine learning Learning about Machine Learning had been a not-accomplished stepping stone in my career. Joining some Kaggle competitions and read other’s people code makes improves your abilities. Wonderful Sci-kit and pandas libraries make use of ML algorithms easy and neat. Ruby Having not used Ruby (albeit many years ago in my MRes. programme I programmed some basic scripts), it was funny to learn its peculiarities and of course, its dark corners. [Read More]

The value of open source software

I have some open source projects in my github account. Some of them are currently used by my ex-employer in several projects. Why should an organization have to open source some of its software? Let’s talk about it. Dissipating some doubts about software quality Having published your code in public allow many users to take a look to your code and (if it’s good) to dissipate its doubts about if it pays using it or not. [Read More]

To test or not to test

Introduction Some years ago I did not use any tests. We were cowboys in CodeWest where only fearful and strong people survive. Sometimes we tested some actions and assumed that everything else worked fine. But for the most part, code where developed almost like our sub-conscience dictated us what to type: we were guided by instinct. Of course, users of my applications were not so amused by this when they found software faulted and had to wait to me to repair it. [Read More]

Refactoring

Introduction Software is not a static element in a business. It evolves as business needs evolve. How can we make changes in software and keep high quality or, even better, not degrading it as we develop functionality? Refactoring Refactoring is the process of changing code structure for the better while keeping the same functionality. It should be a continuos activity made during software development, with the aim of easing maintainability of software. [Read More]