タグ

POSTDに関するatsushifxのブックマーク (24)

  • コーディングを学ぶこと、それはあなたが考えるよりも大変です | POSTD

    要約:全ての根拠が示しているのは、「プログラミングには高い適性を要求されますが、適性を持った人間はわずかしかいない」ということです。最近の流行の短期でコーディングを学べるコースは、デマカセを売り付け、プロのプログラマのスキル不足解消に何ら力になってないのです。 これはイギリスからの観点での記事です。私はこの事象について、とりわけソフトウェア開発者の社会的地位に関しては、他の地域決してこの通りではないと思っています。 メディアが共通して取り上げるテーマは、スキルのあるプログラマの不足です(”プログラマ”も”コーダ”も”ソフトウェア開発者”も、ここでは全て同じものを意図し、区別せずに使用しています)。このコーディング技術のギャップには解決の糸口が見えない心配が多くあります。要は”明日の高品質な仕事”を担う候補者を生み出すことに失敗しているということです。例えば、 The Telegraph の

    コーディングを学ぶこと、それはあなたが考えるよりも大変です | POSTD
    atsushifx
    atsushifx 2016/01/20
    see http://www.aoky.net/articles/jeff_atwood/why_cant_programmers_program.htm つまり、変数と制御構造という基本概念を理解し実践できるかどうか。まゆつばだったフタコブラクダはともかく、適性がない人は居る
  • コードの品質を維持したまま開発スピードを上げる | POSTD

    高品質のコードベースは、反復作業やコラボレーション、メンテナンスを簡単にすることで、長期的な開発のスピードを上げてくれます。Quoraではベースコードの品質は重要だと考えます。 高品質のコードを維持することは利点がありますが、その反面かなりのオーバーヘッドが発生し、実際の開発のサイクルに時間が掛かってしまいます。このオーバーヘッドと利点の折り合いを付けるのは難しい問題です。この場合、2つの選択肢しかないように思えます。低品質でコードスピードが速いか、もしくは高品質でスピードが遅いか。スタートアップは素早い開発サイクルに最適化しているので、多くの人は低品質で進めたほうがいいと思っています。 このジレンマは解消できます。ツールやプロセスを工夫することで、コードベースの品質を維持したままスピードを速めることができるのです。この投稿では、コードの品質に関しての私たちの考えや、2つの世界を共存させる

    コードの品質を維持したまま開発スピードを上げる | POSTD
    atsushifx
    atsushifx 2015/08/25
    古参XPerからするとXPのプラクティスのように見える。要するに銀の弾丸はないし、ショートカットもない。コーディングや品質保証の基本を丁寧に一つずつ積み上げるしかない
  • それは実験 ― 形骸化した「アジャイル」を再考する新手法”GROWS”について | POSTD

    (この記事は 「アジャイルの破綻―原因、そして新たな提案」の続編にあたる記事です。) 前回のブログで、私はアジャイルの変動について、「調査と順応の概念は一体どこへいってしまったのか」、「近い将来起こり得る問題に対処できるよう手法の革新を図ろう、新たなやり方を導入しよう、という考えはどうなってしまったのだろう」、と問いかけました。 VersionONEによるアジャイル開発の2014年アンケートによると、アンケートに答えた56%のチームがスクラム、10%ほどがスクラムとXPの併用、8%がアジャイル手法の混合(XP, かんばん, リーンなど)を使っていることがわかりました。私からすると、アンケートに答えた18%はだいたい正しいことをしているように見えます。他は、もしかしたら、いつもしている単なる朝礼をアジャイルと呼んでいるかもしれません。 それは少し言い過ぎたかもしれませんが、同アンケートの別の

  • アジャイルの破綻―原因、そして新たな提案 | POSTD

    2001年、17人のメンバーによって アジャイル宣言 が発表されました。私はその立案者そして著者の1人であることに誇りを感じます。この出来事は、何かをする上でより良い方法を導き出すことへの期待、そしてソフトウェアを開発することで世界をより良くするといった、私自身の活力の源となり、極めて重要なターニング・ポイントとなりました。 あれから14年が経ち、私たちは行き先を見失っています。”アジャイル”という言葉はスローガン化してしまいました。来の意味をなさなくなっただけならまだいいですが、最悪に考えれば排外的な存在になってしまったとすら言えます。2~3のソフトウェア開発のプラクティスを、不十分に生半可に試みるといった”軟弱なアジャイル”を行う人が数多く存在します。来の目的を忘れて努力を重ねるといった、口先だけのアジャイルの 狂信者 がたくさんいるのです。 更にひどいのは、アジャイル開発手法その

    アジャイルの破綻―原因、そして新たな提案 | POSTD
    atsushifx
    atsushifx 2015/06/15
    TMがついているからGROWSを勝手に使えないのはちょっと残念かな。達人プログラマーのAndy Huntだから期待できると思うんだけど
  • Grepping logs is still terrible - Asylum

    The other day, I wrote a controversial piece about why grepping logs is terrible, the reactions were interesting. I've got some great feedback (thanks!), and there were a lot of hostility too. I've been called incompetent, lazy, stupid and a systemd-fanboy and various other things. By people who didn't read past the second paragraph, no less. But this is something I expected. Today, I will try to

    atsushifx
    atsushifx 2015/05/21
    http://postd.cc/grepping-logs-is-terrible/ のフォローアップ記事。haproxy,syslog-ng,ElasticSearchでログ管理をする。結果、正規表現ではなくesのQueryでログの検索ができる
  • grepでログ解析をするなんてひどい話だ | POSTD

    今でも、 systemdのjournal におけるバイナリのストレージフォーマットに関して、不満を漏らす人が多くいることに私は驚きを隠せません。私は長年、システム管理者として働いてきており、1年以上も syslog-ng の オープンソースエディションのメンテナ として活動してきました。だからこそ、テキストではないストレージフォーマットに対して、なぜ多くの人が批判的なのか、私は理解に苦しんでいます。更に、反論を唱える人までいることが信じられません。もしかしたら、私は別世界の人間なのかもしれません。ですが、より良い選択肢があるのに、テキストのストレージを使う理由はほとんどありません。ロギングをする必要性、そしてなぜ、テキストのログストレージに対してそこまで用心深いのかについて、私は何度も尋ねられました。ここに、私が導き出した答えを紹介したいと思います。 これは、journalについて弁明する

    grepでログ解析をするなんてひどい話だ | POSTD
    atsushifx
    atsushifx 2015/05/20
    一理ある、というかドメインの問題。クラウドで大量のサーバとそのログを監視する場合が増えて専用ツール前提になれば、こっちが普通にもなる
  • コードの可読性、ハッカビリティ、抽象化 | POSTD

    def deploy(ip): copy('code/', ip + ':~/code', recursive=True) write_template('conf/config.py', ip + ':~/config.py') write_template('conf/crontab', ip + ':~/.crontab') write_template('conf/crontab', ip + ':/etc/apache2/httpd.conf') run_as_root('service cron restart') run_as_root('service apache restart') post('https://pingdom.com/api/2.0/checks', { 'name':ip, 'host':ip, 'type':'ping' }) タスクを実行するものと

    コードの可読性、ハッカビリティ、抽象化 | POSTD
    atsushifx
    atsushifx 2015/05/20
    リファクタリングといいつつテストがない問題。というか、リファクタリングのやり過ぎという感じ。またChefのほかにItamaeのようないろいろなDeployフレームワークが出てくるのにも通じる
  • 開発者の生産性:Noと言える技術 | POSTD

    生産性を維持するのは難しいことです。 特に開発者の立場では。 ゾーン(超集中状態)に入るには時間がかかりますが、入ったゾーンから引きずり出されるのは簡単です。 例えば、 * ミーティング * Eメール * 作る予定の機能や、修正すべきバグ などに意識が分散されてしまいます。確認しておかないと、気付いたら何もする時間がなくなっています。 これを解決するための秘策があります: あらゆることに” no “と言うのです。 私たちのやり方をお教えしましょう。 ミーティングは木曜日だけ ミーティングは生産性を奪います。私たちは経験から、いつもミーティングの前後に45分の時間が消えてしまうことに気付きました。さらに、Skypeでのたわいないおしゃべりでも15分間が失われます。 45分後にミーティングがあると思うと、重要なことは始められません。同じように、電話やミーティングが終わってから、即座に大きな問題

    開発者の生産性:Noと言える技術 | POSTD
    atsushifx
    atsushifx 2015/04/17
    ピープルウェアで「プログラムは夜できる」と書かれた頃からちっとも変わっていない
  • 若手開発者の後悔 | POSTD

    (編注:2020/08/18、いただいたフィードバックをもとに記事を修正いたしました。) これはある仕事熱心な若手開発者のほぼ実話です。2004年の後半、この若手開発者は小さな会社で働き始めました。条件は全て彼の望みどおりでした。給料はいいし、扱うのは彼の得意とするプログラミング言語、アプローチの複雑性、モデリングのアーキテキチャでした。 彼にとって今回の会社が初めての職場ではありませんでした。しかし、ここでの最初のプロジェクトは結果的に 問題だらけ に終わりました。当時、この若手開発者は、機能は絶対に変わらないものだと思っていました。しかし、それは間違いでした。機能が変更されるたびに完全なリファクタリングを行わなければなりませんし、バグを引き起こして膨大な時間を無駄にしてしまいます。彼は、テストを書くといった実直な方法も試してみましたが、書いたテストはメンテナンスが必要な上、書くのに時間

    若手開発者の後悔 | POSTD
    atsushifx
    atsushifx 2015/03/24
    最後が…。フリーランスを読んでも、あるジャーノン=ゴードン効果があるから、大変なのは代わりがなさそうな
  • 多くの若きプログラマたちが学ぶべきこと | POSTD

    私はこの7年半、 Ronimo でプログラミングを学ぶ多くのインターン生を指導し、様々なタイプの大学生や大学院生を見てきました。彼らのほとんどには、共通して言える学ぶべきことがあります。特別なテクニック、アルゴリズム、数学、あるいは特定の形式についての話だと思う人もいるかもしれません。もちろんそれも必要ですが、中心的なものではないと私は考えます。彼らが主軸として学ぶ必要があるのは、自己統制力です。常に可能な限り読みやすいコードを書き、開発中の変更により秩序がなくなってきた時にはきちんとリファクタリングを行い、使用されていないコードを除去し、コメントを追加することができるという力です。 プログラミングのインターン生を指導する際、この話にほとんどの時間をかけます。上級のテクニックでもなければエンジンの詳細についてでもなく、概ね彼らにより良いコードを書かせることに主眼を置きます。いつもインターン

    多くの若きプログラマたちが学ぶべきこと | POSTD
    atsushifx
    atsushifx 2015/02/08
    要するにリーダブル・コードとリファクタリングを読んで、それを実践しろと。マネージャー側には、そのための教育コストや時間などのリソースをちゃんと振り分けてくれでFA
  • プログラマを悩ませること Top 10 | POSTD

    10. 「何か」は分かるが「なぜ」が分からないコメント プログラミング入門コースでは、早い段階かつ頻繁にコメントを記述することを生徒に教えます。プログラムを書き始めた初期段階(ごく単純なコードであっても、時に理解し難いことがあります)では、これは実際に役立つことなのですが、習慣にとらわれてしまうプログラマが多くいます。 上記のコードが何をするのか分かりますか? 私は分かりません。 問題は、多くのコメントがそのコードが 何をする のかを説明していますが、 なぜ そのコードが書かれているかが説明されていません。では、異なるコメントが書かれた同じコードを見てみましょう。 こちらの方が分かりやすいですね。何が起きているのかを完全に理解できるとは言えませんが、最低でもなぜこのコードが必要なのかが文脈から判断することができます。 コメントは、構文を理解してもらうためにではなく、読み手がコードを理解しや

    プログラマを悩ませること Top 10 | POSTD
  • ポール・グレアムによる「意地の悪い人は失敗する」 | POSTD

    最近私は、自分が知る成功者の中には意地の悪い人がほとんどいないということに気がつきました。例外はありますが、ごく少数と言っていいでしょう。 意地の悪い人というのは、決して珍しい存在ではありません。事実、インターネットの世界では、人がどれだけ意地悪くなれるかということを簡単に目にすることができます。自分の意見を公にすることは、数十年前までは有名人やプロの作家でもなければできないことでした。それが誰にでもできることとなった現在、これまで隠れていたような意地の悪さまでもが、簡単に私たちの目の前に現れてしまうようになったのです。 意地の悪い人は世の中にたくさん存在しているにもかかわらず、なぜか私が知る成功者の中にはほとんど見当たりません。これは一体なぜなのでしょう? 意地の悪さと成功には、反比例の関係があるのでしょうか。 もちろん、どの分野でもそうだと言っているわけではありません。私がよく知ってい

    ポール・グレアムによる「意地の悪い人は失敗する」 | POSTD
    atsushifx
    atsushifx 2015/01/22
    エリック・レイモンドのオープンソース3部作にも共通する話。ソフトウェアが特に顕著だけど、いかに人の知恵を集めるかが成功のキーファクターとなっている場合は虚心坦懐に聴けない人は成功できない。もちろん態度
  • 開発者の仕事が遅いわけではない!納期が遅れるホントの原因 | POSTD

    “なぜ納期を守れなかったのだろうか?” 我々マネージャが、納期に遅れることを自分のチームのせいにするのは簡単です。しかし、納期に遅れる原因は当に開発者の仕事が遅いせいでしょうか? Sprintly は、開発者のサイクルタイムに関する膨大なデータを保有しています。当社は、タスクのサイズごと(S、M、L、XL)、また種類ごと(ストーリー、テスト、バグ)に、完了までにどれくらいの期間がかかるかを追跡しています。 当社が調査した動向について 1点目:開発者は非常に平均的です。ユーザ全体で見たサイクルタイムはほぼ同じであることを当社のチケットデータが示しています。システム内の全チケットの75%は、開始後およそ175時間で完了しています。 ^(1) 2点目:変動があるのは、ほとんどがチケットが開始される前(SomedayからBacklogまで)の段階です。これは、関係者が仕様を理解して作業の優先順位

    開発者の仕事が遅いわけではない!納期が遅れるホントの原因 | POSTD
    atsushifx
    atsushifx 2015/01/14
    日本の話ではないということが涙をそそる。しかも日本でアジャイルやリーンがバズワードレベルまで広まったこの時代でも納期が遅れるのは変わらないと。プロジェクトマネジメント以前の失敗が多すぎるのか
  • ソフトウェアエンジニアを目指す人へのコードに関するアドバイス | POSTD

    この短い記事で私は、ある素晴らしいアイデアを提案します。それは、製品品質のコードは、下記リストに挙げた特性で説明することができるということです。それぞれ、重要性の高いものから順番に記述しています。もしあなたが、学校もしくは独学でプログラミングを学ぶ、真面目な学生なのであれば、製品品質のシステムを構成するコードの特性を学びたいと思うのではないでしょうか。 是非、 ご意見・ご感想 をお寄せください。 読みやすさ 言うまでもなく、読みやすいコードである。 読みやすいコードは、必要に応じて簡単に変更できる。 読みやすいコードは、他の人も理解することができ、共有することができる。

    ソフトウェアエンジニアを目指す人へのコードに関するアドバイス | POSTD
  • パイプとフィルタ ~ソフトウェア工学における有用なアーキテクチャ~ | POSTD

    パイプライン は、最近のソフトウェアエンジニアリングにおいて、非常に便利な(そして驚くほど活用されていない)アーキテクチャパターンです。ソフトウェアでデータの流れを制御するためにパイプとフィルタを用いる考え方は、最初のUNIXシェルが作られた1970年代からあります。もしターミナルエミュレータでパイプ” | ”を使ったことがあるなら、”パイプとフィルタ”を活用できていることになります。以下の例を見てみましょう。 cat /usr/share/dict/words | # Read in the system's dictionary. grep purple | # Find words containing 'purple' awk '{print length($1), $1}' | # Count the letters in each word sort -n | # Sort l

    パイプとフィルタ ~ソフトウェア工学における有用なアーキテクチャ~ | POSTD
    atsushifx
    atsushifx 2014/11/20
    see https://uec.usp-lab.com/ 日本だとここがシェルスクリプトで良品計画のシステムを構築したはず
  • ソフトウェアエンジニアがたどる成長過程と失敗の行きつく先 | POSTD

    これからご紹介する私の試みはなかなか難しい側面があり、物議をかもすかもしれません。また、お見せするのは初めてなので完璧とは言えないかもしれません。私はソフトウェアエンジニアのスキルとその影響力を評価するシステムを開発しようとしています。少なくとも、プログラマが成長していく理想的な成長過程を大まかに描いてみようと思います。評価スコアは0.0から3.0まであり、それぞれの数字は専門能力を開発していく際の出発点を表しています。 このシステムは主にビジネスの観点から見た、ソフトウェア業界が求めるものに基づく 実務的な スケールです。数学的な才能や高速アルゴリズムを書く能力、Linuxカーネルの内部構造に関するプログラマの理解の深さなどを評価するスケールではありません。もちろんこうした能力は重要ですし、通常、エンジニアのスキルとともに伸びていく能力ですが、私のシステムが焦点を当てたいのはそこではあり

    ソフトウェアエンジニアがたどる成長過程と失敗の行きつく先 | POSTD
    atsushifx
    atsushifx 2014/11/17
    [
  • 思考実験によるより良いコーディングへのヒント | POSTD

    簡単な思考実験をさせてください。コードをASCIIとしてディスクに保存する必要がないとしましょう。僕たちがシンボルを使うコードの書き方を変えられたら? そして何よりもその”読み方”を変えられたら? 想像できるすべてを読めて、編集できて、書ける魔法のコード・エディタがあるとしましょう。さらに、同じように機能する魔法のコンパイラがあるとしましょう。理想のコードはどのようになるでしょうか? まず区切り文字から自由になれるでしょう。どうしてそんなものがあるのか? コンパイラが十分賢くないから。 引用符のような区切り文字はコンパイラにシンボルが終わるときとリテラルが始まるときを知らせるためにあります。なぜ変数が数字で始められないかも同様です。コンパイラは変数名なのか数値リテラルなのか知りようがありません。もし代わりにタイポグラフィを使ってそれらを区別できるとしたらどうなるでしょうか。 例をあげましょ

    思考実験によるより良いコーディングへのヒント | POSTD
    atsushifx
    atsushifx 2014/11/05
    エディタやIDEでコードのSyntax Highliteが普及しているのだから、それを前提にしたプログラミングがあってもいいという話。
  • ポール・グレアムによる「スケールしないことをしよう」前編 | POSTD

    エントリは 翻訳リクエスト より投稿いただきました。 ありがとうございます!リクエストまだまだお待ちしております! 後編 を公開しました 私たち、Y Combinatorがアドバイスする最も一般的なことの1つに、「スケールしないことをしよう」というのがあります。創業予備軍の多くが、スタートアップは上手くいくかいかないかのどちらかだと考えています。会社を立ち上げ、ものを提供する、そしてそれが良いものであれば、おのずと売れます。しかし、需要がなければ結果はその逆になります。 ^(1) とは言え、意外とスタートアップは上手くいくものです。なぜなら、創業者がそうさせるからです。自分たちの力だけで成長するスタートアップはほんの一握りかもしれませんが、大抵は後押しするような力が働きます。良い例が、車のエンジンをスタートさせる役目をするクランクです。エンジンがスタートしてしまえば、エンジンは回り続けま

    ポール・グレアムによる「スケールしないことをしよう」前編 | POSTD
  • テスト駆動開発(TDD)はもう終わっているのか? Part 2 | POSTD

    前編はこちらです 4:テストに伴うコスト 2014年5月27日 audio 今回のテーマは、テストとTDDのマイナス面です。 テストをやりすぎることがあるか、そして機能的なコードよりテストを重視するチームには問題があるかという点について議論しました。 議事録 Davidが会話の口火を切りました。 「トレードオフについて話すなら、当然そのマイナス面について理解しなければならない。なぜなら、欠点のないトレードオフは存在しないからだ」 このあと彼は続けて、TDDは開発者に何かを強制するわけではないが、ある一定の方向に導くことは確かだと言いました。 それから、最初の問題点として、テストの過剰な実施を取り上げました。 TDDでよく言われるのは、テストに失敗せずして1行のコードも書くべきでないということです。 Davidも当初はこの考え方を合理的だと思っていましたが、そのうち、テストをやり過ぎる傾向が

    テスト駆動開発(TDD)はもう終わっているのか? Part 2 | POSTD
    atsushifx
    atsushifx 2014/10/08
    プロジェクトや言語、フレームワークによって代わるので場合によるというKent Beckの言葉は正しい。問題はリファクタリングが普及していないことだろう
  • テスト駆動開発(TDD)はもう終わっているのか? Part 1 | POSTD

    後編を公開しました(2014/10/8) これは、テスト駆動開発(TDD)とTDDがソフトウェア設計に与える影響についてKent Beck、David Heinemeier Hansson、および著者の3人で行った一連のディスカッションの議事録です。 ディスカッションに至った経緯 あるセンセーショナルな発言とブログ記事が発端となり、お互いの見解と経験について理解を深める目的で、話し合いが持たれました。 この会話のきっかけとなったのは、 DavidがRailsConfで行った基調演説です。 彼はRailsコミュニティでTDDおよびユニットテストへの不満を表明しました。 程なくして、彼はいくつかのブログ記事を公開しましたが、そのうちの最初の記事で “TDDは終わった” と宣言したのです。 それから2~3日後、Davidのその後の記事について私がタイプミスの修正を送ったところ、 Davidは彼の

    テスト駆動開発(TDD)はもう終わっているのか? Part 1 | POSTD