Julio Biason
5 years ago
10 changed files with 211 additions and 3 deletions
@ -0,0 +1,27 @@ |
|||||||
|
+++ |
||||||
|
title = "Things I Learnt The Hard Way - Code of Conduct Protect YOU, Not THEM" |
||||||
|
date = 2019-07-18 |
||||||
|
|
||||||
|
[taxonomies] |
||||||
|
tags = ["en-au", "books", "things i learnt", "personal", "coc"] |
||||||
|
+++ |
||||||
|
|
||||||
|
When you're beginning with any language/library/framework, check their CoC; |
||||||
|
they will protect _you_ from being harassed for not immediately getting what |
||||||
|
is going on instead of blocking you from telling them what you think. |
||||||
|
|
||||||
|
<!-- more --> |
||||||
|
|
||||||
|
I'm mentioning this 'cause a lot of people complain about CoC, but they |
||||||
|
forget that they allow them to join in any project without being called |
||||||
|
"freaking noob" or "just go read the docs before annoying us". |
||||||
|
|
||||||
|
And don't be afraid to ask moderators if someone that seems be in the |
||||||
|
community for longer than you isn't break the CoC. Just because you just got |
||||||
|
into the community, it doesn't mean you can't be part of it or that someone |
||||||
|
can abuse their position of "veteran" to not respect you. |
||||||
|
|
||||||
|
Also, remember that most people that are against CoCs are the ones that want |
||||||
|
to be able to call names on everyone. |
||||||
|
|
||||||
|
{{ chapters(prev_chapter_link="/books/things-i-learnt/time-to-stop", prev_chapter_title="When It's Time to Stop, It's Time To Stop", next_chapter_link="/books/things-i-learnt/say-no", next_chapter_title="Learn To Say No") }} |
@ -0,0 +1,33 @@ |
|||||||
|
+++ |
||||||
|
title = "Things I Learnt The Hard Way - Don't Tell It's Done When It's Not" |
||||||
|
date = 2019-07-18 |
||||||
|
|
||||||
|
[taxonomies] |
||||||
|
tags = ["en-au", "books", "things i learnt", "personal", "responsibility"] |
||||||
|
+++ |
||||||
|
|
||||||
|
You are tired of running the same thing over and over again. You kinda |
||||||
|
remember that something weird may happen, but because you're tired, you tell |
||||||
|
everyone that "It's finished". Don't. |
||||||
|
|
||||||
|
<!-- more --> |
||||||
|
|
||||||
|
I must admit that I've done this. Yes, there is that corner case that I didn't |
||||||
|
test. Yes, there is that piece of code that, although it works, it's weird. |
||||||
|
Yes, I left a technical debt behind. But we get tired of looking at the same |
||||||
|
thing over and over. And we get pushed by higher ups to deliver stuff. And |
||||||
|
that's when we say "It's done", when it's not. |
||||||
|
|
||||||
|
Although we just dodged one, we end up leaving our colleagues -- people that |
||||||
|
really depend on our work -- down. They expect to connect to whatever we are |
||||||
|
doing to keep going. The expect to see the results of their work crystallized |
||||||
|
by ours. And they can't. 'Cause we said "It's done" when it wasn't. |
||||||
|
|
||||||
|
And you can be sure, as soon as that happens, they will be the first to point, |
||||||
|
in minutes, that it is not done. |
||||||
|
|
||||||
|
On the other hand, if you say "Almost, but there is this thing that bothers me |
||||||
|
and I think it may give us a headache in the future", they will understand. So |
||||||
|
be clear and transparent about your work. |
||||||
|
|
||||||
|
{{ chapters(prev_chapter_link="/books/things-i-learnt/responsible-code", prev_chapter_title="Take Responsibility For The Use Of Your Code") }} |
@ -0,0 +1,48 @@ |
|||||||
|
+++ |
||||||
|
title = "Things I Learnt The Hard Way - Take Responsibility For The Use Of Your Code" |
||||||
|
date = 2019-07-18 |
||||||
|
|
||||||
|
[taxonomies] |
||||||
|
tags = ["en-au", "books", "things i learnt", "personal", "responsibility"] |
||||||
|
+++ |
||||||
|
|
||||||
|
This is hard. Very very hard. It's the difference between "freedom" and |
||||||
|
"responsibility". |
||||||
|
|
||||||
|
<!-- more --> |
||||||
|
|
||||||
|
There is nothing wrong in writing, for example, a software to capture people's |
||||||
|
faces and detect their ethnicity, but you have to think about what that will |
||||||
|
be used on. |
||||||
|
|
||||||
|
Even on an open source project, you can take responsibility without blocking |
||||||
|
people. You can make your project harder for people trying to abuse to use it, |
||||||
|
to the point they will have to take control of their own fork. |
||||||
|
|
||||||
|
One example is a small application called [Tusky](https://tusky.app/), which |
||||||
|
is "An Android client for the microblogging server Mastodon", completely open |
||||||
|
source. Mastodon is a network of microblogging servers with connect to each |
||||||
|
other, kinda like Twitter, but you can pick a different server that is not |
||||||
|
twitter.com and still get updates from that server. One of the servers that |
||||||
|
appeared in the server list is an alt-right server which, as most alt-right |
||||||
|
forums, promote a lot of hate. What Tusky did? When you try to add an account |
||||||
|
on that server, instead of adding the account, [they play a video of Never |
||||||
|
Gonna Give You Up](https://github.com/tuskyapp/Tusky/pull/1303), basically |
||||||
|
[rickrolling](https://en.wikipedia.org/wiki/Rickrolling) anyone who, well, is |
||||||
|
an alt-righter. |
||||||
|
|
||||||
|
Tusky broke the open source license? No, the code is still available. Anyone |
||||||
|
wanting to use the server can pick the code, fork it, remove the rickroll and |
||||||
|
release their own version of the application. But Tusky developers took an |
||||||
|
instead of saying "We'll not take part in promoting hate speech" and one can't |
||||||
|
deny that they did. |
||||||
|
|
||||||
|
It is a bit hard to do so on the company code -- you would get some reprimands |
||||||
|
if you try to shame or block one of the company clients from using the company |
||||||
|
application -- but you [can say no](/books/things-i-learnt/say-no) and, |
||||||
|
depending on how offensive you think the use the code is, you can even start |
||||||
|
looking for a new place to work. People on larger and "cooler" companies, like |
||||||
|
Google, left their jobs because they didn't agree with what the company was |
||||||
|
doing, and so can you. |
||||||
|
|
||||||
|
{{ chapters(prev_chapter_link="/books/things-i-learnt/say-no", prev_chapter_title="Learn To Say No", next_chapter_link="/books/things-i-learnt/not-done", next_chapter_title="Don't Tell It's Done When It's Not") }} |
@ -0,0 +1,42 @@ |
|||||||
|
+++ |
||||||
|
title = "Things I Learnt The Hard Way - If It Doesn't Run On Your Computer, You Have A Problem" |
||||||
|
date = 2019-07-18 |
||||||
|
|
||||||
|
[taxonomies] |
||||||
|
tags = ["en-au", "books", "things i learnt", "local run", "cloud"] |
||||||
|
+++ |
||||||
|
|
||||||
|
I've seen a lot of systems that would never run on a isolated computer, like |
||||||
|
the developer tool, 'cause the system requires running on a specialized |
||||||
|
environment. Those things are wrong. |
||||||
|
|
||||||
|
<!-- more --> |
||||||
|
|
||||||
|
Requiring a specialized environment absolutely kills productivity. |
||||||
|
|
||||||
|
If your system will run on a specialized environment -- and I'm including "the |
||||||
|
cloud" here -- look for something that can abstract whatever you're using. For |
||||||
|
example, if you're using AWS SQS, which is a queue, look for a library that |
||||||
|
can abstract the way a queue works so you can also run with RabbitMQ, which |
||||||
|
can be easily run on your own computer. |
||||||
|
|
||||||
|
If you're using a very specialized thing, you may have to write the |
||||||
|
abstraction yourself, isolating it from the main system, so you can develop |
||||||
|
the main product in peace. |
||||||
|
|
||||||
|
One of the most productivity killer environment I worked require running the |
||||||
|
project on a customized Apache installation, running the client specialized |
||||||
|
framework. The whole problem is that the client refused to allow us to not use |
||||||
|
it or install on our local machines (mostly 'cause the install of said |
||||||
|
framework was really complex). In other for us to work and see things working, |
||||||
|
we had to use a VPN to the client computers, develop things there and manually |
||||||
|
forcing things to reload. No only we had absolutely nothing to do when the VPN |
||||||
|
was down ('cause it require out company infrastructure working hand-in-hand |
||||||
|
with the client infrastructure and the internet provider infrastructure, which |
||||||
|
is absolutely impossible), the flow was really cumbersome. |
||||||
|
|
||||||
|
If we had the chance to not use it and run all the development and tests on |
||||||
|
our own computers, I have the feeling we could deliver the product 2-3 months |
||||||
|
earlier. |
||||||
|
|
||||||
|
{{ chapters(prev_chapter_link="/books/things-i-learnt/units", prev_chapter_title="Units Makes Things Clear", next_chapter_link="/books/things-i-learnt/config-file", next_chapter_title="The Config File Is Friend") }} |
@ -0,0 +1,27 @@ |
|||||||
|
+++ |
||||||
|
title = "Things I Learnt The Hard Way - Learn To Say No" |
||||||
|
date = 2019-07-18 |
||||||
|
|
||||||
|
[taxonomies] |
||||||
|
tags = ["en-au", "books", "things i learnt", "personal", "say no"] |
||||||
|
+++ |
||||||
|
|
||||||
|
Sometimes, you'll have to say no: No, I can't do it; no, it can't be made in |
||||||
|
this time; no, I don't feel capable of doing this; no, I don't feel |
||||||
|
comfortable writing this. |
||||||
|
|
||||||
|
<!-- more --> |
||||||
|
|
||||||
|
Saying no doesn't mean you won't do it. Once I had to say to our CTO: "Ok, |
||||||
|
I'll do it, but I want to note that I don't agree with what we are doing." In |
||||||
|
the end, the app was barred exactly because the thing we were doing. |
||||||
|
|
||||||
|
Being explicit about what you don't feel is a good point may not be what some |
||||||
|
higher ups are expecting. The fact that you don't approve but will do it |
||||||
|
anyway may be something that can either show that your not simply a drone or, |
||||||
|
unfortunately, label you as a "troublemaker". Honestly, if you feel it threw |
||||||
|
you in the former, you should start looking for a new place to work. If you |
||||||
|
said you won't be comfortable and still _did the work_, and they had to label |
||||||
|
you something, then this place doesn't respect you as a person. |
||||||
|
|
||||||
|
{{ chapters(prev_chapter_link="/books/things-i-learnt/coc", prev_chapter_title="Code of Conduct Protect YOU, Not THEM", next_chapter_link="/books/things-i-learnt/responsible-code", next_chapter_title="Take Responsibility For The Use Of Your Code") }} |
@ -0,0 +1,25 @@ |
|||||||
|
+++ |
||||||
|
title = "Things I Learnt The Hard Way - When It's Time to Stop, It's Time To Stop" |
||||||
|
date = 2019-07-18 |
||||||
|
|
||||||
|
[taxonomies] |
||||||
|
tags = ["en-au", "books", "things i learnt", "personal", "stop", "personal time"] |
||||||
|
+++ |
||||||
|
|
||||||
|
Learn when you can't code anymore. |
||||||
|
|
||||||
|
<!-- more --> |
||||||
|
|
||||||
|
Learn when you can't process things anymore. |
||||||
|
|
||||||
|
Don't push beyond that, it will just make things worse in the future. |
||||||
|
|
||||||
|
I tried to keep coding once when I had a migraine (not strong, but not mild). |
||||||
|
Next day, when I was better, I had to rewrite most of the stuff I did, 'cause |
||||||
|
it was all shit. |
||||||
|
|
||||||
|
Also, when you're not feeling fine, you won't be able to concentrate and your |
||||||
|
productivity will plunge. It's a lot better to be a burden to society at your |
||||||
|
own place than a burden to society at work. |
||||||
|
|
||||||
|
{{ chapters(prev_chapter_link="/books/things-i-learnt/stupid-bugs-list", prev_chapter_title="Keep A List of Stupid Bugs That Took More Than 1 Hour To Solve", next_chapter_link="/books/things-i-learnt/coc", next_chapter_title="Code of Conduct Protect YOU, Not THEM") }} |
Loading…
Reference in new issue