Friday, October 19, 2018

SCRUM


Scrum adalah sebuah proses yang Agile untuk menangani produk yang kompleks. Scrum memiliki proses yang berulang atau iteratif (iterative) dan bertahap (incremental) dalam menangani ketidakpastian dari pengembangan sebuah produk yang kompleks.

Agile Development Methods adalah sekelompok metodologi pengembangan perangkat lunak yang didasarkan pada prinsip-prinsip yang sama atau pengembangan sistem jangka pendek yang memerlukan adaptasi cepat dari pengembang terhadap perubahan dalam bentuk apapun.

Scrum sebuah metodologi?
Scrum bukan metodologi, Scrum adalah sebuah framework (kerangka kerja). Scrum sebagai framework mengatur hal-hal penting dan mendasar untuk membuat proses pengembangan menjadi lebih agile. Dalam kaitannya dengan pengembangan software, kita bisa menambahkan engineering practice tertentu yang dibutuhkan di atas framework Scrum.

Agile dan kaitannya dengan Scrum
Scrum tidak dapat dipisahkan dari yang namanya Agile. Agile merupakan kata sifat yang berarti cekatan, cepat, dan tangkas dan ini tersemat pada proses Scrum. Itulah mengapa kita mengatakan Scrum sebagai proses Agile. Dalam pengembangan software, prinsip dan nilai Agile pada Scrum mengacu ke Agile Manifesto.
Agile Manifesto merupakan nilai-nilai yang digunakan dalam mendasari berlangsungnya Agile Software Development. Agile Manifesto muncul dilatarbelakangi oleh frustasi para pengembang software akibat metode yang digunakan pada saat itu, yaitu Waterfall Model.

Bedanya Scrum dengan yang lain
Scrum termasuk ke dalam keluarga proses Agile. Kita bisa menemukan proses Agile yang lain seperti XP (eXtreme Programming) atau Crystal. Pendekatan pengembangan, mekanisme adaptasi perubahan, nilai, dan prinsip dalam proses Agile amat berbeda dibandingkan dengan proses prescriptive seperti Waterfall atau RUP (Rational Unified Process).

Siapayang terlibat dalam Scrum?
Ada tiga peran utama yang terlibat dalam proses Scrum, yaitu:
(1)Development Team, 
(2)Product Owner, dan 
(3)Scrum Master. 
Tiga peran utama ini tergabung dalam satu tim dan disebut sebagai Scrum Team. Meski tidak disebutkan secara eksplisit, peran-peran di luar Scrum Team tetap penting dan bermanfaat untuk menciptakan lingkungan yang mendukung proses Scrum dalam organisasi.

Peran Development Team
Development team adalah tim pengembang yang melakukan pembuatan produk. Dalam konteks software, development team memberikan peningkatan software yang bertahap dari waktu ke waktu. Anggota development team tersusun dari software developer, designer, business analyst, application tester, dan peran khusus lainnya yang dibutuhkan untuk mengubah requirement dalam bentuk PBI (Product Backlog Item) menjadi software. Mereka semua bekerja sebagai satu tim, berkolaborasi menyusun solusi dan saling membantu satu sama lain untuk mencapai tujuan pengembangan software.

Jumlah anggota Development Team dalam Scrum
Jumlah anggota development team tidaklah terlalu banyak dan juga tidak terlalu sedikit. Jumlah yang direkomendasikan adalah minimal 3 orang dan maksimal 9 orang. Kurang dari 3 orang, kerja sebagai tim menjadi kurang optimal. Lebih dari 9 orang, koordinasi antar anggota tim akan menjadi lebih rumit.

Self-organizing pada Development Team
Self-organizing pada tim memiliki arti bahwa tim mengatur dirinya sendiri dalam menyelesaikan tugas dan kerjaannya. Self-organizing pada development team berarti tim diberikan otonomi untuk memilih cara dan alat (tools) untuk mencapai tujuan pengembangan software. Tidak seorangpun, termasuk Scrum Master atau Product Owner, diperkenankan untuk memberitahu development team bagaimana cara mereka mengubah PBI menjadi peningkatan software.

Peran Scrum Master
Scrum Master merupakan seseorang yang membantu tim membangun produk dalam proses Scrum. Scrum Master memastikan praktik, nilai, dan aturan dalam Scrum diterapkan secara tepat. Lebih lanjut lagi, Scrum Master membantu memfasilitasi keputusan development team yang self-organizing dan menghapus hambatan-hambatan yang dihadapi oleh development team. Untuk organisasi, Scrum Master membantu organisasi memahami Scrum dan membuat perubahan-perubahan yang mendukung proses Scrum.

Peran Product Owner
Product owner adalah seseorang yang memahami nilai produk yang akan dibangun dan memaksimalkannya dalam kerja dengan development team. Product owner menjelaskan visi produk kepada development team, mengapa produk ini dibuat dan apa nilai yang diberikan dari produk tersebut. Product owner mewakili stakeholders atau klien, menyusun apa yang sebenarnya diinginkan dan dibutuhkan oleh mereka dalam bentuk requirement. Requirement tersebut selanjutnya direpresentasikan dalam PBI (Product Backlog Item). Melalui pengelolaan PBI inilah, product owner akan menyusun prioritas pengembangan berdasarkan nilai bisnis dan berkolaborasi secara aktif dengan development team dalam mengembangkan produk.

PBI, Product Backlog, dan Sprint Backlog
PBI atau Product Backlog Item merepresentasikan requirement yang dibutuhkan agar hadir dalam produk. PBI umumnya merupakan User Story, yaitu gambaran bagaimana pengguna melakukan sesuatu dan berinteraksi dengan produk. Selain itu, PBI bisa juga merupakan fitur, perbaikan kesalahan, atau peningkatan fitur. Kumpulan PBI secara keseluruhan disebut Product Backlog. Sedangkan beberapa PBI yang terpilih untuk dikerjakan selama sprint disebut Sprint Backlog.

Sprint
Sprint adalah potongan waktu pengembangan yang umumnya dilakukan dalam 2 minggu dan paling lama 4 minggu atau 1 bulan. Yang dilakukan dalam sprint tentu saja pengembangan produk untuk mencapai tujuan sprint. agar pengembangan lebih terarah, ada empat acara penting dalam Scrum, yaitu:
(1)planning meeting, 
(2)daily meeting, 
(3)review meeting, dan 
(4)retrospective meeting. 
Pertemuan-pertemuan tersebut dalam Scrum memiliki karakteristik yg unik dan tujuan yang penting.

Planning meeting
Planning meeting merupakan pertemuan di awal sprint yang membahas rencana kerja selama satu sprint ke depan. Selama sesi ini, Scrum team membahas PBI (Product Backlog Item)yang dipilih selama sprint, detail dan kriterianya, hingga Definition of Done (DoD) dari setiap PBI yang dipilih. Product owner akan menjelaskan visi produk, tujuan yang ingin dicapai pada sprint kali ini, hingga detail requirement dalam suatu PBI, sedangkan development team akan memilih PBI selama satu sprint dan mengukur beban pekerjaan mereka.

Lama planning meeting
Untuk sprint selama 4 minggu atau 1 bulan, pertemuan ini paling lama 8 jam. Untuk sprint selama 2 minggu, paling lama 4 jam.

Daily meeting
Daily meeting merupakan pertemuan bagi development team untuk berbagi informasi sekaligus memantau kemajuan pekerjaan pengembangan.

Pertemuan ini cukup singkat, paling lama 15 menit.
Selama sesi ini, setiap anggota tim menjelaskan tiga hal, yaitu:
(1)apa yang sudah dikerjakan sejak pertemuan sebelumnya,
(2)apa yang akan dikerjakan hingga pertemuan berikutnya, dan
(3)apa masalah atau hambatan yang dihadapi dalam pengerjaan.
Dengan adanya daily meeting, tim dapat melakukan sinkronisasi kerjaan antar anggota development team, mengukur kemajuan pengembangan dan melakukan penyesuaian terhadapnya, juga meminta bantuan kepada yang lain jika menghadapi masalah.

Review meeting
Review meeting merupakan pertemuan di akhir sprint yang membahas hasil pengembangan yang sudah dikerjakan oleh development team selama satu sprint ini. Pertemuan ini melibatkan Scrum team dan klien atau stakeholders yang terkait. Selama sesi ini, development team mendemokan PBI yang sudah mereka kerjakan dan mengumpulkan masukan dari klien atau stakeholders untuk pengembangan di sprint berikutnya.

Lama review meeting
Untuk sprint selama 4 minggu atau 1 bulan, pertemuan ini paling lama 4 jam. Untuk sprint selama 2 minggu, paling lama 2 jam.

Retrospective meeting
Retrospective meeting juga merupakan pertemuan di akhir sprint dan diadakan setelah review meeting. Pertemuan ini merupakan saat bagi Scrum team untuk menengok ke belakang selama satu sprint ini, meninjau proses yang dilalui dan hasil yang dicapai selama pengembangan. Retrospective meeting berguna untuk menghasilkan komitmen perbaikan untuk Scrum team dan sprint yang lebih baik ke depannya.

Lama retrospective meeting
Untuk sprint selama 4 minggu atau 1 bulan, pertemuan ini paling lama 3 jam. Untuk sprint selama 2 minggu, paling lama 1.5 jam.

Friday, May 18, 2018

Cryptocurrency

What is cryptocurrency:  21st-century monkey business – or the money of the future?
This introduction explains the most important thing about cryptocurrencies.

Today cryptocurrencies have become a global phenomenon known to most people. While somehow not understood and aware by most people, banks, governments and many companies of its importance.

In 2016, you‘ll have a hard time finding a major bank, a big accounting firm, a prominent software company or a government that did not research cryptocurrencies, publish a paper about it or start a so-called blockchain-project. But beyond the noise and the press releases the overwhelming majority of people, even bankers, consultants, scientists, and developers have a very limited knowledge about cryptocurrencies. They often fail to even understand the basic concepts.

Where is it come from as a side product of digital cash. Few people know, but cryptocurrencies emerged as a side product of another invention of Satoshi Nakamoto, the unknown inventor of Bitcoin, the first and still most important cryptocurrency, from the beginning, he never intended to invent a currency.
In his announcement of Bitcoin in late 2008, Satoshi said he developed “A Peer-to-Peer Electronic Cash System.“  His goal was to invent something; many people failed to create before digital cash.

The single most important part of Satoshi‘s invention was that he found a way to build a decentralized digital cash system. In the nineties, there have been many attempts to create digital money, but they all failed. After seeing all the centralized attempts fail, Satoshi tried to build a digital cash system without a central entity. Like a Peer-to-Peer network for file sharing.
This decision became the birth of cryptocurrency. They are the missing piece Satoshi found to realize digital cash. The reason why is a bit technical and complex, but if you get it, you‘ll know more about cryptocurrencies than most people do. So, let‘s try to make it as easy as possible:

To realize digital cash you need a payment network with accounts, balances, and transaction. That‘s easy to understand. One major problem every payment network has to solve is to prevent the so-called double spending: to prevent that one entity spends the same amount twice. Usually, this is done by a central server who keeps record about the balances.

In a decentralized network, you don‘t have this server. So you need every single entity of the network to do this job. Every peer in the network needs to have a list with all transactions to check if future transactions are valid or an attempt to double spend.

But how can these entities keep a consensus about this records? 
If the peers of the network disagree about only one single, minor balance, everything is broken. They need an absolute consensus. Usually, it takes a central authority to declare the correct state of balances. But how can you achieve consensus without a central authority?
Nobody did know until Satoshi emerged out of nowhere. In fact, nobody believed it was even possible. Satoshi proved it was. His major innovation was to achieve consensus without a central authority. Cryptocurrencies are a part of this solution – the part that made the solution thrilling, fascinating and helped it to roll over the world.

What are cryptocurrencies really? If you take away all the noise around cryptocurrencies and reduce it to a simple definition, you find it to be just limited entries in a database no one can change without fulfilling specific conditions. This may seem ordinary, but, believe it or not: this is exactly how you can define a currency.

Take the money on your bank account: What is it more than entries in a database that can only be changed under specific conditions? You can even take physical coins and notes: What are they else than limited entries in a public physical database that can only be changed if you match the condition than you physically own the coins and notes? Money is all about a verified entry in some kind of database of accounts, balances, and transactions.

How miners create coins and confirm transactions. Let‘s have a look at the mechanism ruling the databases of cryptocurrencies. A cryptocurrency like Bitcoin consists of a network of peers. Every peer has a record of the complete history of all transactions and thus of the balance of every account.

A transaction is a file that says, “Bob gives 999 Bitcoin to Alice“ and is signed by Bob‘s private key. It‘s basic public key cryptography, nothing special at all. After signed, a transaction is broadcasted in the network, sent from one peer to every other peer. This is basic p2p-technology. Nothing special at all.

What is Blockchain Technology? A step-by-step guide than anyone can understand


The transaction is known almost immediately by the whole network. But only after a specific amount of time it gets confirmed. Confirmation is a critical concept in cryptocurrencies. You could say that cryptocurrencies are all about confirmation.

As long as a transaction is unconfirmed, it is pending and can be forged. When a transaction is confirmed, it is set in stone. It is no longer forgeable, it can‘t be reversed, it is part of an immutable record of historical transactions: of the so-called blockchain. Only miners can confirm transactions. This is their job in a cryptocurrency-network. They take transactions, stamp them as legit and spread them in the network. After a transaction is confirmed by a miner, every node has to add it to its database. It has become part of the blockchain.

For this job, the miners get rewarded with a token of the cryptocurrency, for example with Bitcoins. Since the miner‘s activity is the single most important part of cryptocurrency-system we should stay for a moment and take a deeper look on it. 

What are miners doing? Principally everybody can be a miner. Since a decentralized network has no authority to delegate this task, a cryptocurrency needs some kind of mechanism to prevent one ruling party from abusing it. Imagine someone creates thousands of peers and spreads forged transactions. The system would break immediately.

So, Satoshi set the rule that the miners need to invest some work of their computers to qualify for this task. In fact, they have to find a hash – a product of a cryptographic function – that connects the new block with its predecessor. This is called the Proof-of-Work. In Bitcoin, it is based on the SHA 256 Hash algorithm.
 
You don‘t need to understand details about SHA 256. It‘s only important you know that it can be the basis of a cryptologic puzzle the miners compete to solve. After finding a solution, a miner can build a block and add it to the blockchain. As an incentive, he has the right to add a so-called coinbase transaction that gives him a specific number of Bitcoins. This is the only way to create valid Bitcoins.
Bitcoins can only be created if miners solve a cryptographic puzzle. Since the difficulty of this puzzle increases the amount of computer power the whole miner’s invest, there is only a specific amount of cryptocurrency token that can be created in a given amount of time. This is part of the consensus no peer in the network can break.


If you really think about it, Bitcoin, as a decentralized network of peers which keep a consensus about accounts and balances, is more a currency than the numbers you see in your bank account. What are these numbers more than entries in a database – a database which can be changed by people you don‘t see and by rules you don‘t know?

Basically, cryptocurrencies are entries about token in decentralized consensus-databases. They are called cryptocurrencies because the consensus-keeping process is secured by strong cryptography. Cryptocurrencies are built on cryptography. They are not secured by people or by trust, but by math. Describing the properties of cryptocurrencies we need to separate between transactional and monetary properties. While most cryptocurrencies share a common set of properties, they are not carved in stone.

Cryptocurrency transaction characteristic. 

Irreversible: After confirmation, a transaction can‘t be reversed. By nobody. And nobody means nobody. Not you, not your bank, not the president of the United States, not Satoshi, not your miner. Nobody. If you send money, you send it. Period. No one can help you, if you sent your funds to a scammer or if a hacker stole them from your computer. There is no safety net. 

Pseudonymous: Neither transactions nor accounts are connected to real-world identities. You receive Bitcoins on so-called addresses, which are randomly seeming chains of around 30 characters. While it is usually possible to analyze the transaction flow, it is not necessarily possible to connect the real world identity of users with those addresses.


Fast and global: Transaction are propagated nearly instantly in the network and are confirmed in a couple of minutes. Since they happen in a global network of computers they are completely indifferent of your physical location. It doesn‘t matter if I send Bitcoin to my neighbor or to someone on the other side of the world.

Secure: Cryptocurrency funds are locked in a public key cryptography system. Only the owner of the private key can send cryptocurrency. Strong cryptography and the magic of big numbers makes it impossible to break this scheme. A Bitcoin address is more secure than Fort Knox.

Permission-less: You don‘t have to ask anybody to use cryptocurrency. It‘s just a software that everybody can download for free. After you installed it, you can receive and send Bitcoins or other cryptocurrencies. No one can prevent you. There is no gatekeeper.

Monetary properties:


Controlled supply: Most cryptocurrencies limit the supply of the tokens. In Bitcoin, the supply decreases in time and will reach its final number somewhere in around 2140. All cryptocurrencies control the supply of the token by a schedule written in the code. This means the monetary supply of a cryptocurrency in every given moment in the future can roughly be calculated today. There is no surprise.

No debt but bearer: The money on your bank account is created by debt, and the numbers, you see on your ledger represent nothing but debts. It‘s a system of IOU. Cryptocurrencies don‘t represent debts. They just represent themselves. They are money as hard as coins of gold.
To understand the revolutionary impact of cryptocurrencies you need to consider both properties. Bitcoin as a permissionless, irreversible and pseudonymous means of payment is an attack on the control of banks and governments over the monetary transactions of their citizens. You can‘t hinder someone to use Bitcoin, you can‘t prohibit someone to accept a payment, you can‘t undo a transaction.