Skip to main content

Ralsina.Me — Roberto Alsina's website

Cómo me gano la vida (2017)

Intro

Este post es una con­tin­uación de Có­mo me gano la vi­da que ex­pli­ca co­mo me gan­a­ba la vi­da en 2009.

En el medio me la gané de otras dos man­eras dis­tin­tas, pero no en­tremos en de­talles, porque este post es so­bre có­mo me la gano aho­ra. Me parece in­tere­sante con­tar­lo porque hablan­do en even­tos con gente más joven o es­tu­di­antes, muchas ve­ces no tienen idea de co­mo fun­ciona una em­pre­sa de soft­ware. Y si vas a labu­rar en es­to, es­tá bueno saber­lo.

Antes que nada: mi tra­ba­jo ofi­cial­mente es "Soft­ware Ar­chi­tec­t" en On­ap­sis una em­pre­sa que hace soft­ware. Ex­ac­ta­mente qué soft­ware y cosas así las podés ver en la pági­na de la em­pre­sa, y hace ex­ac­ta­mente ningu­na difer­en­cia con re­spec­to a lo que voy a de­scribir.

¿Qué se supone que hace un "Software Architect"?

Un soft­ware ar­chi­tect es un ex­per­to en soft­ware que toma de­ci­siones de dis­eño de al­to niv­el y dic­ta stan­dards téc­ni­cos, in­cluyen­do stan­dards de código, her­ramien­tas y platafor­mas.

Gra­cias Wikipedi­a! Bueno, no es­tá mal co­mo de­scrip­ción de lo que ha­go en este mo­men­to. Si bi­en, seamos hon­estos, no es que uno tiene que de­cidir platafor­mas o her­ramien­tas to­dos los días, así que en re­al­i­dad mi tiem­po se llena de una man­era lig­er­a­mente dis­tin­ta.

Consultoría interna

Co­mo se supone que soy un ex­per­to (más al re­spec­to más ade­lante) soy una es­pecie de úl­ti­mo re­cur­so. Si te tra­bás mu­cho con al­go, rompé el vidrio y hablá con Rober­to. Para mí es una de las cosas más im­por­tantes. No soy un de­sar­rol­lador es­pec­tac­u­lar, pero he vis­to cosas y no me mo­les­ta que la gente me hable. En­tonces a ve­ces laburo de pati­to de go­ma, a ve­ces ten­go al­gu­na idea de por adonde en­car­ar­lo, a ve­ces googleo, y a ve­ces real­mente sé lo que me es­tán pre­gun­tan­do. Oca­sion­al­mente es­to ll­e­va a una sesión in­for­mal de Pair Pro­gram­ming o a que adopte el prob­le­ma co­mo pro­pi­o. Da­do que soy fini­to (en es­pa­cio y tiem­po, no de an­cho) es­ta úl­ti­ma op­ción no es­cala y se usa lo menos posi­ble.

Prototipado

La eta­pa más com­pli­ca­da de mu­chos proyec­tos es la primera se­m­ana. La primera se­m­ana es cuan­do con­vertís un re­po vacío en al­go que mues­tra in­di­cios de poder con­ver­tirse, con tran­spiración, en lo que nece­sitás. Nor­mal­mente in­volu­cra una can­ti­dad de "tan­teo" y de pen­sar con los de­dos bor­rar, tirar casi to­do lo que se es­cribe, pro­bar her­ramien­tas, etc.

Si te gus­tan esa clase de cosas, es muu­u­uy di­ver­tido. Si no te gus­ta, es hor­ri­ble. Y es una de las áreas en las que haber he­cho cosas pare­ci­das antes garpa. Por eso la ex­pe­ri­en­cia ayu­da.

Tooling

Es­cribir soft­ware es una cosa. Hac­er que se tes­tee au­tomáti­ca­mente, buildee, shipee, etc es otra muy dis­tin­ta. Para poder hac­er que tu pro­grami­ta llegue a los clientes nece­sitás hac­er to­do lo otro, y to­do eso se hace (gra­ciadió) con soft­ware que ya es­cribió otra gente. En­tonces nece­si­ta­mos ele­gir que soft­ware us­ar para to­das esas cosas cuan­do surge un re­quer­im­ien­to nue­vo. Y ahí prue­bo, opino, y par­ticipo de ele­girlo.

Capacitación

Cuan­do veo que los que tra­ba­jan con­mi­go no saben al­go que creo que les sería útil, hablo con Re­cur­sos Hu­manos y ar­mo un train­ing. Ten­go la enorme suerte de que la em­pre­sa en que tra­ba­jo dice siem­pre que sí a la ca­pac­itación!

Si sé so­bre el tema: doy un train­ing. Si no sé so­bre el tema y parece que nadie sabe, lo apren­do y doy un train­ing. Si no sé so­bre el tema, y otro sabe, le pi­do que dé un train­ing y voy al train­ing.

Aprender

Y acá voy a declarar en con­tra de mis pro­pios in­tere­ses. Se acuer­dan que al prin­ci­pio decía que un soft­ware ar­chi­tect es un "ex­per­to en soft­ware" ... bueno. Les ten­go bue­nas y malas noti­cias.

  • La mala noti­ci­a: no sé si ex­iste tal cosa.
  • La bue­na noti­ci­a: eso quiere de­cir que en una de esas vos sos un ex­per­to!

El chiste es que nadie es ex­per­to en to­do. Yo soy ex­per­to en al­gu­nas cosas. Pero no sabía na­da de co­mo hac­er lengua­jes. Ni de co­mo hac­er pa­que­tes De­bian. Ni un mil­lón de otras cosas. Y a ve­ces uno en el tra­ba­jo se cruza con cosas que sabe, pero el 70% del tiem­po se cruza con cosas que uno no sabe. O por lo menos, en las que uno sabe poco, o sabe de ver­las hace 5 años, o sabe lo que leyó en un blog el otro día. Uno puede ser ex­per­to en una cosa. O uno puede ser gen­er­al­ista. Pero no puede ser ex­per­to en to­do. Y un ar­qui­tec­to de soft­ware ... medio que sí? Re­cuer­den que la in­cum­ben­cia in­cluye "soft­ware", "her­ramien­tas", "prác­ti­cas­", "dis­eño" ...

La difer­en­cia que te hace un "ex­per­to" es co­mo salís. Cuan­do en­cuen­tro al­go que no sé, mi pro­ce­so es:

  • Es al­go que no sé, pero lo voy a ver to­das las se­m­anas?

En­tonces lo apren­do. Agar­ro un li­bro, o la doc­u­mentación, o lo que sea, y lo apren­do. Ten­go la ven­ta­ja enorme de que en mi tra­ba­jo me puedo hac­er tiem­po para es­to. Ten­er que hac­er­lo de­spués de ho­ra es de­salen­ta­dor. Apren­do lo su­fi­ciente co­mo para poder tomar de­ci­siones in­for­madass / ar­reglar­lo si se rompe / saber si es­tá ro­to.

  • Es al­go que no sé, lo voy a ver to­das las se­m­anas, y me in­tere­sa?

En­tonces lo voy a apren­der aún en mi tiem­po li­bre, porque me in­tere­sa. Y sí, de­spués de un tiem­po, voy a ser un ex­per­to en es­o. Nor­mal­mente ll­e­va a un train­ing. Y si me gus­ta mu­cho, ll­e­va a que es­cri­ba acá. O a que dé una con­fer­en­ci­a. Al­go va a salir.

  • Es al­go que no sé, pero lo voy a ver una vez al año?

Apren­do lo mín­i­mo in­dis­pens­able, y el año que viene ver­e­mos.

Hay muchas otras com­bi­na­ciones, co­mo "real­mente quiero apren­der es­o, no sería mejor que lo hiciera otro, ok, lis­to, hace­lo y es­cribime un re­porte", o "es al­go que veo que se hace to­dos los dias y quiero reem­plazar­lo con un scrip­t", pero no vienen tan­to al ca­so.

Conclusiones

En­ton­ces, re­sul­ta que la cosa que ayu­da, en este laburo, es ser cu­rioso. Ayu­da ab­sorber in­fo rápi­do, ayu­da ten­er ganas de pro­bar cosas y romper­las, ayu­da (mu­cho) que no te mo­leste hablar con gen­te, cosa que para mí tiene cier­ta his­to­ria con­flic­ti­va, ayu­da que te guste con­tar lo que es­tás ha­cien­do.

Y acá tienen, les es­toy con­tan­do lo que es­toy ha­cien­do.

Run Program

Cover for Run Program

Review:

I want­ed to love this book like I love the au­thor's pre­vi­ous ones. But I could not.

It's prob­a­bly me, not him, since I am hav­ing a hard time fin­ish­ing books late­ly, which means I am sort of forc­ing it. So, don't wor­ry Scot­t!

Mentiras y Estadísticas, edición Martin Tetaz

No­ta: No soy economista. Martín Tetaz sí. Si yo sé es­to que es­cri­bo en es­ta no­ta, no les quepa du­da que Martín Tetaz tam­bién lo sabe. La difer­en­cia es que él pre­fiere no de­cir­lo, por mo­tivos que él sabrá.

Hace un­os días el cono­ci­do economista Martín Tetaz di­jo es­to:

Y es, lit­eral­mente, cier­to (de he­cho, no sé si es cier­to porque no me ca­len­té en ver­i­fi­car­lo, pero asumamos que lo es­). Mas o menos. O sea, es cier­to que CFK asum­ió con esa can­ti­dad de deu­da y se fué con esa can­ti­dad de deu­da. Has­ta ahí es "cier­to".

Hay al­gunos de­talles, claro.

Primero: no son lo mis­mo 144.000 mil­lones de dólares en 2007 que 144.000 mil­lones de dólares en 2015. De he­cho, 144.000 mil­lones de dólares de 2007 son 167.500 mil­lones de dólares de 2015. Porque el dólar pierde val­or con el tiem­po. Y es­os 250.000 mil­lones de 2015 son 214.853 mil­lones de 2007.

O sea que si ten­emos en cuen­ta al­go tan bási­co co­mo us­ar una vara con­stante para medir la deu­da, ese au­men­to del 74% que dice Tetaz en re­al­i­dad fué del 50%.

Por otro lado, es­os 144.000 mil­lones los de­bían 40 mil­lones de per­sonas (39,97 mil­lones, para ser ex­ac­tos), mien­tras que en 2015, es­os 250.000 mil­lones los de­bían 43,42 mil­lones de per­sonas.

Así que saque­mos al­gu­nas cuen­tas. A val­or con­stan­te:

Per cápi­ta, en 2007, ca­da ar­genti­no de­bía 3602,70 dólares.

Per cápi­ta, en 2015, ca­da ar­genti­no de­bía 4951,64 dólares.

O sea, si tomamos una me­di­da un po­quito mas ra­zon­able que peras con ba­nanas, da que ese in­cre­men­to en la deu­da del 74% re­sul­ta ser en re­al­i­dad más o menos 37%. O sea, la mi­tad.

Pero en re­al­i­dad, para saber si una deu­da es mucha o poca, im­por­ta la ca­paci­dad de pa­go. Si gano $1.000 y de­bo $5.000 es un mon­tón. Pero si gano $100.000, $5.000 es una ce­na con ami­gos.

Y para país­es, eso se hace cal­cu­lan­do la deu­da co­mo por­centa­je del PBI. Y el PBI fue, en 2007, 287.500 mil­lones de dólares. En 2015, fué de 584.700 mil­lones de dólares. Eso no es a dólar con­stan­te, por lo que volve­mos a los 250.000 mil­lones de dólares de deu­da en 2015.

Y re­sul­ta que me­di­do co­mo por­centa­je del PBI, pasamos de de­ber 50% del PBI a de­ber el 42.7%.

O sea que la deu­da, me­di­da de la man­era en que tiene sen­ti­do medirla, ba­jó un 15%

Y no hable­mos de que cam­bió a quién le de­bíamos plata, porque eso es opin­able, pero lo que sí es­tá claro es que Tetaz sabe que lo que di­jo lo di­jo de man­era ten­den­ciosa. Porque si yo sé es­tas cosas, Tetaz tam­bién las sabe. La difer­en­cia es que él no te las dice.

Trabajar Gratis no es Gratis, o Meritocracia mis Polainas.

A ve­ces uno hace cosas gratis. Yo lo hago, vos lo hacés, to­dos lo hace­mos. A ve­ces esas cosas que hace­mos gratis traen un pa­go por otro lado:

  • Te hacés cono­ci­do, y eso te per­mite obten­er al­go.
  • Te deben un fa­vor, y te lo ter­minás co­bran­do.
  • Sim­ple­mente te sen­tís bi­en por hac­er es­o, gratis.

Pero siem­pre, siem­pre, siem­pre, al­guien pa­ga.

  • Pa­ga el que te da ex­posi­ción, dán­dotela.
  • Pa­ga el que te debe el fa­vor, de­volvién­do­lo.

Pero cuan­do hacés al­go gratis so­la­mente porque te hace sen­tir bi­en hac­er­lo ... ¿quién lo pa­ga? ¿Ese no es tan ob­vio, no? Si doy un cur­so gratis, si ha­go un pro­gra­ma open source, si pin­to una es­cue­la, si paseo al per­ro de un ve­ci­no, si te cui­do a tu hi­jo... ¿quién pa­ga?

Porque al­guien siem­pre pa­ga. En par­tic­u­lar, siem­pre al­guien pa­ga si uno labu­ra gratis. Si me que­do dos ho­ras tarde sin pedir ho­ras ex­tra (cosa que no sucede), pa­go yo. Tal vez no en­seguida, pero lo pa­go en no pasar esas dos ho­ras con mi fa­mil­i­a, o en no hac­er al­go que yo quería hac­er.

Si ha­go un tra­ba­jo que nor­mal­mente se pa­garía pero lo ha­go "de on­da", lo pa­ga el que no lo va a hac­er co­brán­do­lo. Si le ha­go un soft a al­guien en­tonces el­los no se lo van a com­prar a nadie.

To­do ese soft­ware open source que vos ves, flotan­do por la in­ter­net co­mo si surgiera de una fuente in­agotable de soft­ware gratis, es­tá pa­gado, es­tá pa­ga­do con los fines de se­m­anas y las noches de un mil­lón de de­sar­rol­ladores que lo pa­garon. Es­tá pa­ga­do con las quiebras de miles de em­pre­sas de soft­ware que no ex­is­ten más porque sus pro­duc­tos aho­ra son com­modi­ties.

Sí, prob­a­ble­mente val­ió la pe­na. Yo tal vez no iba a hac­er na­da más in­tere­sante en mis 20s y mis 30s, pero sabés qué, tal vez lo hu­biera he­cho. Tal vez hu­biera toma­do cosas que no tomé, vi­a­ja­do a lu­gares que no vi­a­jé, cono­ci­do gente que no conocí. A cam­bio, hay un­os cuan­tos proyec­tos aban­don­a­dos en Github y al­guno que no.

Sí, por otro la­do co­bré, porque hace 17 años que ca­da tra­ba­jo que ten­go en parte lo he con­segui­do por to­do eso que hice "gratis".

Pero tam­bién se pa­ga de otra man­er­a: se pa­ga en que se es­pera que pase. Se pa­ga en que hoy en día por lo menos yo siem­pre bus­co que to­do el soft­ware sea gratis. ¿Y qué pasaría si en 2025 nos damos cuen­ta que era to­do una bur­bu­ja? ¿Qué hace­mos si de golpe re­sul­ta que no, que es­ta man­era de pro­ducir soft­ware no fun­ciona? ¿Bus­camos otra?

Se es­pera que ha­gas proyec­tos gratis para pro­bar tu val­or. Los posi­bles em­pleadores es­per­an poder ver un proyec­to tuyo en Github, y yo soy cul­pa­ble de de­cir­le a pibes "ha­gan un proyec­to, ayu­da a con­seguir laburo" ... ¡porque es cier­to! ¡ayu­da! Si hacés un proyec­to con códi­go no hor­ren­do, me­di­ana­mente or­ga­ni­zado, etc. es casi fá­cil con­seguir un puesto en al­gu­na em­pre­sa.

Va­mos de linkedin a top­tal car­gan­do nue­stros proyec­tos igual que un apren­diz de her­rero iba de un pueblo a otro con su yun­que, que era su "mas­ter­piece", lo que prob­a­ba que sabía lo que hacía.

Y, lo pe­or de todo, lo pa­gan los que no pueden tomarse sus 20s pro­ducien­do códi­go "vis­i­ble" para im­pre­sion­ar a sus fu­tur­os pa­trones. Tra­ba­jar gratis es un priv­i­le­gio que ten­emos al­gunos, y los que no pueden hac­er­lo ar­ran­can en desven­ta­ja. Es co­mo ser "mer­i­to­rio ju­di­cial". Si podés tra­ba­jar gratis un­os años (porque te ban­can, o lo que sea) hacés es­o, y te va a ser más fá­cil en­trar al poder ju­di­cial. Y los que no pueden, bueno, no serán ju­di­ciales. O no ten­drán la mis­ma car­rera en soft­ware.

Porque no tenían ese priv­i­le­gio. Porque no pudieron tirar sus fines de se­m­ana en es­o, o in­ver­tir­los en su fu­tu­ra car­rera, o co­mo quieras de­cir­le.

Y de­spués, claro, para los que re­clu­ta­mos es muy fá­cil de­cir "claro, este mucha­cho mirá, tiene es­to en GH, y es­to otro, y par­ticipó acá, es groso" ... y nos com­pramos la idea de mer­i­toc­ra­ci­a, de que ob­vi­a­mente, es­ta­mos mi­di­en­do una cosa re­al, que un can­dida­to la tiene y otro no, en­tonces no es­ta­mos dis­crim­i­nan­do. ¿Có­mo po­dríamos es­tar dis­crim­i­nan­do si es­ta­mos mi­di­en­do cosas ob­je­ti­vas?

Y nos mo­lesta­mos si al­gu­na vez nos di­cen que tal vez, que se yo, es­ta­mos dis­crim­i­nan­do con­tra los que no son co­mo nosotros, con­tra los que no tenían li­bres las noches de­spués de la facu para boludear con la com­pu, o con­tra los que em­pezaron a es­tu­di­ar más tarde por lo que fuera y ya tenían un laburo, o con­tra las mu­jeres, o con­tra los de otra clase so­cial, etc.

¿Nosotros? Que locu­ra. Co­mo que dis­crim­i­namos nosotros. Nosotros so­mos racionales. So­mos mer­i­tocráti­cos. So­mos ob­je­tivos. Y so­bre todo, so­mos buenísi­mos mintién­donos.

Gyro 0.3

Gyro grows some legs

It was just a few days ago that I start­ed an ex­per­i­men­tal wi­ki project called Gy­ro ... it's al­ways fun when a project just grows fea­tures or­gan­i­cal­ly. It does this, so it makes sense to make it do that, and then this oth­er thing is easy, and so on.

So, here is what hap­pened with Gy­ro:

  • Fed­eri­co Cin­golani made it run on dock­er
  • I added some fea­tures:
    • UI for cre­at­ing new pages
    • UI for delet­ing pages
    • Sup­­port for mul­ti­lev­el pages (so you can have "foo" and "foo/bar")
    • Au­­to­­com­­ple­­tion with ti­­tles in search
    • Bread­­crumbs so you can ac­­tu­al­­ly fol­low the mul­ti­lev­el pages
    • Lots of code cleanup
    • Themes (via Bootswatch)
    • Cus­­tom fonts (via Google We­b­­Fonts)
    • Au­­to­­mat­ic link­ing for Wik­i­­Words if you like that kind of thing

And, I pub­lished it as a Google Chrome Ex­ten­sion ... so you can now have a wi­ki on your chrome. If you saw how it worked be­fore, you may won­der how it be­came an ex­ten­sion, since those are pure Javascrip­t. Well... I made it have plug­gable back­end­s, so it can ei­ther use the old­er San­ic-based python API or use Lo­cal­Stor­age and just save things in­side your brows­er.

The be­hav­ior is iden­ti­cal in both cas­es, it's just a mat­ter of where things are saved, and how they are re­trieved. The goal is that you should not be able to tell apart one im­ple­men­ta­tion from the oth­er, but of course YM­MV.

And since I was al­ready do­ing a chrome ex­ten­sion ... how hard would it be to run it as an elec­tron "desk­top" ap­p? Well, not very. In fac­t, there are no code changes at al­l. It's just a mat­ter of pack­ag­ing.

And then how about releasing it as a snap for Ubuntu? Well, easy too, just try snap install gyro --beta

All the Gyros

Is it fin­ished? Of course not! A non ex­haus­tive list of miss­ing MVP fea­tures in­clude:

  • Im­port / Ex­port da­ta
  • A sync­ing back­end
  • Gen­er­al UI pol­ish (wid­get fo­cus, kbd short­cut­s)
  • Bet­ter er­ror han­dling
  • Gen­er­al test­ing

But in any case, it's nice to see an app take shape this fast and this pain­less­ly.


Contents © 2000-2023 Roberto Alsina