Wednesday, September 25, 2019

Microservices (Hmmmm interesting)

Microservices

What I understand with the term microservices is a combination or cluster of services (not necessarily micro or small, but each one represents a small part of this cluster) and I immediately think of what Microsoft Office, Google or Amazon do, they have this services, APIs or programs that are somewhat related and can actually interact between one another; Microsoft Office is not a Microservice but works in a similar way.

We use various of this services everyday basically, we can say that life, business and relations wouldn't be the same without the existence of this services, so the development and improvement of this ones now plays an important role on software development.

However, this split is made to offer to users, various kinds of services so they can only use what they need, has its fair share of pros and cons.

On the good side, as I said, the user only uses the service that it needs instead of using a whole product which takes more resources or has added complexity; microservices look for modularity, so when a service fails it doesn't affects the others ones aside from the part where they require that failed component; a better focus for users that now can only specialize on a specific service instead of having to master a whole program; among others.

But on the bad side it has, in short, the same problem when you divide something among various teams, communication is more important, to control how the updates are applied so there are no problems with updates from the other services; basically the amount of control and coordination on this case needs to be better in order to achieve success.

As it may be a little obvious, it is only needed to have more focus on control and coordination for the managers or leaders of the teams so the drawbacks from this splits are minimized.

This is a better model personally and I dare to say that for everyone, this micorservices on cloud that exist nowadays make life way simpler because internet is the only requirement (apart from knowledge on how to use them).

Tuesday, September 24, 2019

Software Craftsmanship (No movie :c)

Software Craftsmanship

The process to design or "craft" an appropriate software is important and basically, essential to produce a successful and useful program, like it is said on the podcast, it is not only for the documentation, to fully understand a problem, to determine what to do and what to do when things don't go well (although, if the architecture was well done, there shouldn't be, theoretically, any problem or misunderstandment).

With the agile programming this seems to be left aside and the term of craftsmanship seems to be way worse than what architecture is, what I mean is that, experienced programmers and what the leaders of big and important software projects don't have the time or even the motivation for teaching and/or mentoring unexperienced members of a team, however without this teaching the number of future good programmers will be reduced and what will be left will be a crisis of programmers.

I agree with what was mentioned that teaching and mentoring are better that just reading from a book or attending a "listen-only" class, for me programming is learned better (and not just programming, everything) when you can practice and experience what you are learning and when you have someone capable to help you out when you have trouble, to show tips and tricks and to accompany the process for learning in general, is like a double prize, is a better experience and the result is a better new programmer.

Also I would like to add, that to teach some member of a team on agile programming is not a waste of time like many people might think, yes it may take some more time but like I said, the experience is a better method for learning, so when you learn on a project that must be done fast, you also learn to work under pressure, to think fast and to fix fast, which will give a better programmer that can also work quick when needed and even better when there is no rush for doing things, the main problem that I may see is that a quick learning leaves room for unsolved doubts or little comprehension of things that need to be fully understood, however when the project ends there can be time for an appropriate teaching so it is no longer a problem.

Wednesday, September 11, 2019

WarGames (Yay!!! Movie!!!!)

WarGames

I've always heard about his movie although never actually had the chance to watch it or simply forget about it, but finally managed to watch it and really enjoyed it.

The movie deals with what some people fear about technology and computing as well as the automatization and replacement of humans with machines and with AI. It may be exaggerated to use a global thermonuclear war to represent what may go wrong but it is possible.

There is no perfect solution, no way to be 100% safe from failure, humans commit mistakes or their emotions may be inadequate for a certain job (I'm not going to say that there's evil in people but as the movie suggested, there's people that simply can't turn a key for whatever reason), also, computers and programs, yes, in the end people are the ones that program a software and they decide whether to develop something good or bad, but as the system grows bigger it becomes harder to control what a system is really capable to achieve besides of what was programmed for.

I can't fully decide if automatization and technology progress is the best for humanity, although as an engineer I support it and like it but considering that not even this area is impervious to failures and to the devil that exists within all humans, sometimes I doubt whether this is the best thing or not.

People is not stupid, they wouldn't start something that they can't win, I think that this is what has stopped or at least delay another world war for now, but also this is what keeps pushing people and governments to improve their military and attack force, I don´t like to think about this kind of things, 'cause I know that it can't be stopped but to think that a simple (not so simple as in the movie) mistake or a misunderstanding can ignite war makes me feel uneasy, with enough pressure and fear. people can make stupid things.

Friday, September 6, 2019

Is Design Dead? (Yes and No)

Is Design Dead?

From the way I see it, Extreme Programming is like we were taught to program, we only focused on doing what we were meant to, we write a program fast (mainly if it was at school) which solved a problem and at those times that's the only thing we cared of, our "designs" consisted probably of only understanding what we had to do.

Of course, XP is not that basic, is more pro, with quality, programmers use their experience to know what to do and how to or at least have a more clear idea than a newbie, but due to the fast decision making and fast work that must be done, errors are prone to appear more common than with a planned design, however, nowadays the need for quicker new ideas and projects is found more often than those projects that take their time to be correctly developed and to be funtional in the future, I don't mean that these well-planned projects will disappear but the need for fast and stable things is being (and will continue being) the majority.

For me, XP has to at least have a design and a design that has a decent amount of work to make it seem plausible and useful, if not it would be like what a newcomer would do and that is not good at all, in the article this idea of mine is supported, no matter how easy/fast/simple is the project, in order for a good project to begin, it needs to know not only what to do but how it will be done and that implies a form of design, which thanks to having good and experienced programmers, it means that the design will be good enough and even with same quality as would be a planned design.

I think that like everything else (specially on computation and technology), design had to evolve, is not it is dead but as we used to know it's getting a sort of old and I don't mean this "old" design is bad but now it has to share with new kinds of designs like the evolutionary one. It all depends on what kind of project one's gonna work with, both planned and evolutionary have their fair share of pros and cons, so it's up to the members of the project to decide what tactic to use.