Software engineer with 15+ years (I got my first job in ~2001) of experience working with different technologies and devices (jack of all trades, master of some
Persistent hardhead (I'll try again and again, until I succeed), dad of two boys (
How I Code/Solve Problems
General Beliefs About Programming
Every now and then we're surrounded by new ideas and technologies, which made me accept that everything we're building now is already legacy, something that will be dumped in a couple of years or even faster (when team leaders are replaced). So, I think we should strive to minimize the amount of code, complex architectures and customizations to the minimum. It will make it easier to deal with the forthcoming deprecations.
Hiring in IT is broken. We're often looking for our clone, someone that thinks and knows the same things as us, in this process a lot of great professionals are lost, and I think there's no way to fix it! Personally I'd go with: indication from someone I trust > coding/implementation test (not huge, but complex enough to allow the person to show his organization, reasoning and resource management skills) > previous experiences/personal projects > soft-skills
In general it's not fruitful to spend a lot of time nitpicking (micro-optimization) and sharpening your knife (overengineering) for a war that may never come.
The less code, the better! I think the same applies to files, classes, tools, services, etc. Some people believe that having very simple functions, distributed across many files, makes things simpler, for me that just highly increases my cognitive load... I feel like reading a book where each paragraph sends me to a random page, without context, and switching between these pages is painful. So, I generally prefer to avoid fragmenting the code until an abstraction is needed (e.g. duplicated code).
I'm generally against depending on closed source products and specific vendors, everything should be replaceable.
I like performatic code, I've seen good ideas saving a lot of money with hardware/servers, and if you want to keep me entertained, just give me an optimization issue to solve. But I'm not willing to do everything to achieve the maximum performance, I think that everything in life needs equilibrium. Especially when a piece of code becomes so complex, that even you can't understand anymore what's going on without reading it thoroughly (but sometimes I forget about this and keep going through the rabbit role
I like fast languages, micro-optimizations and such things, but it's overrated. For general applications, what really matter is to have an effective data transfer/data structure, the key is always to avoid using the database/disk/network.
I see coding as a kind of art, so I'm not a big fan of materials spitting rules... People end up using those as a kind of "horse eye patch", which limits their alternatives (e.g. "we can't use this, it will break the holy rule of Mr. XYZ"), while the truth is that a problem might have N different (and equally great) solutions! But well, I have to agree that things are easier when everybody speaks the same language :)
I think reinventing the wheel is the best way to evolve, it gives us freedom to skip bad decisions and merge the good ones. But we can't forget that traditional jobs, require standard approaches.
First Open Source Projects
Just small codes and notes which I thought wasn't worth to create a repository.
- I got my first computer when I was around 10 years old, a 486-DX2. I've learned how to use it by spying my cousin giving classes about DOS (not DoS
👀), so I still remember something about:
winto start the Windows 3.11, turbo button, sound blaster kit, cleaning the mouse ball, zipdrive, SCSI (the super fast disk that nobody had
- I've got access to the computer after finding the key (yeah, computers had locks) and discovering the password (which was errrrr "password"
- I've joined the internet after listening to some guys discussing about it and HTML in the classroom... I've got curious and once I arrived at home, I found an AOL CD and installed it, but well, it required a modem... Hopefully I remembered my cousin was talking about it, when he was setting up a Dial-Up connection to play Duke Nukem online (a real WTF at the time and, I still don't know from where he took all this knowledge haha), so I found a great 13.4 Kbps modem in a box with old hardware pieces, cut some cables and it just worked! I still remember about using the internet at night to save money, losing the connection when someone was calling and the introduction of "download resumers" was awesome
- I still feel proud about my old codes, since I've created a binary parser (which was used by the MongoDB Driver), a big number library and other things in JS, some years before they were introduced to the language, it's cool when you get random (as I totally didn't need these things) ideas and make them work =]
- I don't have a specific preference to work in the backend/frontend, I consider that I have good taste/opinions, but I'm definetely not into design...
- I've been working remotely since 2015, and I fully recommend it =]
- I took part into the contest where the creator of JQuery (John Resig) was starting to become popular haha (our entry is the number #2, John's entry is #3).
- I've won a video game championship when I was a child (and others at my worker place), the older guys which lost for me, were praising me as a god
- My first paid task was digitizing monographies when I was around 13. I have nothing to complain, any amount of money is a treasure for a teenager haha.
- My favorite type of task is improving performance and diving into weird bugs.
- My first home page is still accessible through the https://archive.org, but I'll never reveal its address! Some close friends must still remember about it
- I've got my first programming job around 2001, a kind of freelance job to work on the integration of a machine to test the cushioning system of cars using Object Pascal/Delphi (I didn't receive my last paycheck
- I've been once a victim of a kind of social engineering attack... When I was 16, a friend of mine asked me to take a look on a game that he made and it had a hidden keylogger haha (that day I realized how ineffective antivirus were against unknown threats haha)... Hopefully he warned me later! These days I was looking for him in internet and looks like he became famous for earning prizes in online promotions, such as a CAR haha... I have a small guess about how he got the prizes
- I've been once a victim of a ransomware as well! Someone connected to my MySQL database years ago and renamed the databases to form a message asking for money (after that I've finally became a bit psycho with security)
- My favorite PC games were Euro Fighter 2000 (a flight simulator), Full Throttle, Indiana Jones, Quake, Duke Nukem and Warcraft, countless hours spent on them... The most revolutionary one was Carmageddon, my family was just shocked! Then it came a lot of trash games + the infinite Battlefield/Counter-Strike (I was the AK guy) seasons, which were then replaced by eternal (successful, but full of hatred against the game's AI) FIFA seasons, until I got retired from games
- I don't trust in the current state of crypto currency, but digital money is here to stay (I can't remember last time I've touched bills/coins)... Also descentralization in general sounds great given our failed leaderships.