なんちゃってエンジニアの奮闘記

テクテクとつける開発日記

エンジニアとして働くこと-プログラミングの基本が分かるとは-

前回の続きとして

今年学んだことについてまとめます。

前提

「プログラミングの基本が分かっていない!」

と、今年はたくさんご指摘を受けました。

初めは、「???」

と思っていたのですが、その意味がなんとなく分かりました。

プログラミングが分かるとは

業務ではPHPを使っているのでPHPの話になります。

例えば、大きく分けると
制御構造 条件文(if, switch, while)、
繰り返し(forやforeach)、
配列、特に連想配列
標準の関数
クラスとオブジェクトとインスタンス

について理解することです。

制御構造について


詳しい説明は
PHP: 制御構造 - Manual
を読んでもらうとして

特に意識するようになったのは ifの条件式に

1, 0が入ればfalseになり、1が入ればtrueになる
2, 配列をそのまま条件式にいれると何が戻る?

などなど

繰り返し処理については、

配列とセットになるのですが

1, foreachはどういった順序で動くのか
2, foreachをネスト構造に書くとどう言った処理になるのか
3, 連想配列の取り出し時の動きはどう動くのか?
4, 連想配列の取り出し時の動きはどう動くのか?
5, 連想配列のキーのみの取得の方法は?
6, 連想配列の値のみの取得の方法は?

などなど

配列、特に連想配列について

詳しくは、
PHP: 配列 - Manual
を読んでください。

特に意識したことは

1, 配列の追加はどうするの?
2, 配列の削除はどうするの?
3, 連想配列の要素の追加はどうするの?
4, 連想配列の要素の削除はどうするの?
5, 多次元配列の要素の追加はどうするの?
6, 多次元配列の要素の削除はどうするの?

です。

標準の関数

意外に忘れがちなのですが、

PHP: 関数リファレンス - Manual

ここを見て、配列の操作で使えるメソッドがあれば使う

車輪の再開発をしない

クラスとオブジェクトとインスタンス

詳しくは
PHP: クラスとオブジェクト - Manual
を見ていただくとして、

特に意識していることは、

1, 参照渡しと値渡しの違いについて

です。

適宜追加していきます。

続く・・・・

エンジニアとして働くこと

こんばんは、似非男です。

前回の記事に続き

今回は、エンジニアとして働くことの中で
他部門(運営側、クリエイティブ側さん)との
コミュニケーションの取り方についてまとめます。

どこまでも分かり合えない壁

私は運営さんの方々とクリエイティブの方々が比較的近い、
部署で働いています。

テクテクと歩いてすぐに質問できる
ちょっとした修正ならSlackやメールを使わずに
口頭で対応が決まることがあります。

レビュー後にシステムの追加対応

LGTM後に
こんな感じで大丈夫ですか?
と確認依頼を送るのですが

「えっとここ足りないので追加して」と、

内心、「要求定義の段階でちゃんと言ってよぉ」

と思いながら対応します。

ただでさえレビュー対応でヘトヘト(こちらは別記事で)
になるのにそこで追加対応となると
か、帰りたいと思います。

ただ、運営の方がにもノルマがあり
そこを守ることを目標に働かれているので
何も言えないです。

出来るだけ早く終わらせよう

と思うのですが、

システム開発は車の運転と同じで、
急には変わらないんです。

要求に変更があれば
システムの要件に落とし込んで
再開発!
テスト!!
レビュー!!!

と最低限踏まないといけないステップもあるんです!

追加してねと言われた段階で
修正にかかる影響範囲を考えること

とにかく理解してもらうことが大事だと思いました。

個人的には修正したいです。使いにくいものは作りたくないので、

ただ、エンジニアとして働くこととして

自分の身も守らないといけないで

「工数がちょっと増えちゃいますけど問題ないですか」

「一旦先輩に聞いてみます」

と、提案するようにしました。

それでも理解していただけなければもう気合いで頑張るしかないです笑

幸い、運営の方々も理解があるので(システム的な理解はないです)が、
かなり多めに見てくれています。(今年だけ!!ここ大事)
ど・ブラックではないと思っています。

以上、続く・・・

エンジニアとして働くこと

こんばんは、似非男です。

私は、8ヶ月新卒エンジニアとして働きました。
この8ヶ月でたくさんの失敗を経験しました。
そこで学んだことについてまとめていこうかなと思います。
年内に終えること目標にしてぼちぼち書いていきます。

自分の能力を知ること

まずはこの考えに至った経緯からお話をする必要があります。

私は部署配属で、負の遺産を持つ部署に配属されました。

あんまり書くとコンプラ違反になりそうなので詳細は伏せますが、
参考にしてね!って言われた先輩のプログラムを見た瞬間、

「分からねぇよ・・・何がどこにあるんよ。コードが追えない・・・」

メソッドは二つ
一つはデータ処理用のメソッド
もう一つのメソッドには、描画処理

それだけ笑

そこにすべてが集約されていました。

テーブルから情報を取得する処理も、データの整形も、全部一つのメソッド
なんとなくまとまりがあるように見えるけど、改行のみ笑
HTMLへの出力処理もなにやらごちゃごちゃ・・・

これがスパゲッティなのかと笑

でもまぁ仕事だし文句は言えないと思い
なんとなくうまくやっていけるかなと思っていたのが大間違い(笑

Web初心者の私にとって処理が追えないことは苦痛でしかなかったです。

そこで先輩に質問をしても
「コードを読んで」
とだけ笑

内心、きつい、辛い、死にたい(笑)と思いました。

積極的に質問をしていたのですが、
僕の質問の仕方が悪いのか見当はずれな回答しかもらえず
負のスパイラルーーーー!笑

挙げ句の果てにプログラミング言語の基礎的な分かっていないとまで言われ笑
これ辞めたほうがいいのかなと思いました。

まぁでも、ここで逃げたらあかんと思って耐えて耐えて耐え抜きました。

ちなみに別記事でプログラミングが分かるとはどういうことかは、
エンジニアとして働くこと-プログラミングが分かるとは-
で詳しくまとめます。

技術力もコミュニケーション能力も到底足りない。
そこで頑張りすぎると周りが見えなくなってしまいがち。
大いに注意され、グロッキー状態になってしまいました笑

そこでなんとか立て直そうと思い、自分の方法を変えることにしました。
先輩に,
「コードが追えないのはプログラムフローとデータフローが分かっていないからだよ」
とアドバイスをいただきました。

プログラムフローとは、
処理が始まってから処理が終わるまで変数がどう変わっていくのかを追うこと
データフローとは、
テーブルへの接続によってカラムの情報がどのように変わるのかを追うこと

頭で考えても分からないので
ペンと要らない紙を手元に置いて、
プログラムがどういった流れで動いているのかを書き始めました。

そうすると徐々にですが処理を追えるようになりました。

ここで学んだことは、
自分の能力を知ること、即ち
今出来ること、出来ないことを理解することが大切でした。

学生時代、プログラミングをしていました。
趣味でしていたことの延長で、バイトやインターンに行かせてもらっていたので
ある程度は分かっているつもりでしたが
自分の方法を押し通してやることに限界を感じました。

同じ部署の先輩方は厳しいですが、
何度も丁寧に教えてくださったので
ここまで頑張れました。

ちょっと心に余裕が出てきた頃(最近ですが
立ち寄った○○○k offでいいものがありました

こちらに書いてあることは

先輩が何を言いたかったのか、
そして僕が分からないといけないことを理解する上の参考になりました。

薄い本なのですぐ読めると思います。

続く

新卒エンジニアとして読んだ本!

こんばんは、なんちゃってエンジニアの似非男です。

普段は表参道のとある会社で新卒エンジニアとして働いています。

今日は読んだ本について書きます。

リーダブルコードーより良いコードを書くためのシンプルで実践的なテクニック

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

これは読んで損無し!

コードを書いていて変数名はどうしようとか悩んだときに参考にしています。自分のコードに命を宿すには必要なテクニックが満載です。

お次!

Webを支える技術 -HTTP、URI、そしてREST(WEB+DB PRESS plus)

Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus)

Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus)

ホームページってどういう手順で表示されてるんかなって思って購入した本です。中級者以上の方はこんなん知ってて当たり前という内容ですが、僕にとっては目から鱗な内容でした。

次はアルゴリズムについて

矢沢久雄セレクション アルゴリズムデザインパターン日経BPパソコンベスト)

レビューには簡単すぎ!とか基礎の基礎とか書いてありますが、アルゴリズムが全くな私にとってはこれくらい優しいものからスタートしていくのがよかったのであげておきます。ここに書いてある内容(メインはCで書かれています)をjavaに書き直して動かすっていう手順で勉強しています。他にもGoFデザインパターンもものすごく簡単、簡略化されて書かれているので入門としてはおすすめです。