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