2023年の目標
目標設定
習慣ルール
1. ゴールの設定
・習慣化によって、最終的にどうなりたいか、ゴールの設定を行う。
→ ソフトウェア(組み込み)の設計、開発、プログラミングができるようになる。
2. 目標
大目標(今年の目標)
・期間: 1年間
・達成する内容:
(a) STM32マイコンでのプログラムの方法を一通り理解する。
(b) 学習内容をブログにアウトプットし、毎週1~2個記事を投稿する。
(c) ソフトウェア設計に関する本を6冊読破し、まとめる。
・評価数値:
(a)作業量の評価:毎日00stdioを配信すること。配信数、作業時間をカウントする。
(b)作業内容の評価:
中間目標
・期間:6カ月
・達成する内容:
(a) STM32マイコンのSPI通信、キー押下処理(複数、長押し)、I2C通信の方法を学習し、ブログにアウトプットする。
(b) ソフトウェア設計に関する本を3冊読破し、まとめる。
・評価数値:
(a)作業量の評価:毎日00stdioを配信すること。配信数、作業時間をカウントする。
(b)作業内容の評価:
短期目標
・期間:1カ月
・達成する内容:
(a) DFplayerを用いてSTM32マイコンでUART通信を行う方法について理解する。
(b) ブログに作成した内容をまとめる。
(c) ソレコン用動画作成
・評価数値:
(a)作業量の評価:毎日00stdioを配信すること。配信数、作業時間をカウントする。
(b) 作業内容の評価 :
3. 習慣化の内容
・習慣化したい内容
→C言語及びSTM32の組み込みC言語の学習
4. 習慣化ルール
・習慣化するためのルール
(a) 最低限毎日行うこと
→00stdioで配信を開始する。
(b)記録方法
→00stdioで作業内容及び時間を記録する。
→twitterに作業時間と内容を投稿する。
5. 見直し時期
・習慣化を行うにあたり、月に一度見直し、評価を行う。
→月初めの土日
ーーーーーーーーーー
ゴール
ソフトウェア設計開発者になること。
ソフトウェア設計開発者を達成する為に、必要な要素
ソフトウェアを開発する技術、スキル
コーディング力
ソフトウェアの基礎知識
アルゴリズム知識
データ構造知識
組み込み知識
データベース知識
ソフトウェア全体の工程知識
思考力
コンセプチュアルスキル
論理的思考力(ロジカルシンキング)
抽象化思考力
創造思考力
批判的思考力(クリティカルシンキング)
イメージ力
イメージ具現化能力
複雑なシステムの構築
アイディアや概念の具体化(図、模型化)
仕様を詳細な動きに変換出来るように考えられる能力
数学力
継続力
コミュニケーション能力
全体管理能力(プロジェクト管理能力)
計画、行動力
問題解決能力
読書力
言語理解能力(読解力)
基礎知識
メンタル
まず身につけるのは
ソフトウェア基礎知識
ソフトウェアに関する本を読む
ブログなどにアウトプットする
必要なことを調べる。
プログラム作成、コーディング力
仕様を考え、実際に作成する。
paizaや本などの学習プラットフォームでコーディング基礎力の向上
思考力
仕様の作成
アイディアだし
問題化解決を行う
自己批判的に考える。(駄目な所、改善)
chatgptの答え
技術的なスキル: ソフトウェア開発設計者は、プログラミング言語、アルゴリズム、データ構造、データベース、ネットワーキング、オペレーティングシステムなどの技術的な知識を持つ必要があります。
ソフトウェア開発プロセスの知識: ソフトウェア開発設計者は、ソフトウェア開発プロセス、品質管理、テスト、デプロイメント、メンテナンスなどについて深い理解を持つ必要があります。
コミュニケーションスキル: ソフトウェア開発設計者は、エンジニアリングチームの他のメンバー、プロジェクトマネージャー、ステークホルダーとのコミュニケーションを円滑に行う必要があります。
問題解決能力: ソフトウェア開発設計者は、プログラミングの問題に対処する能力が必要です。彼らは、バグを特定し、修正するためにデバッグテクニックを使用し、システム全体の設計や構成を見直すことで、問題を解決することができます。
プロジェクトマネジメントスキル: ソフトウェア開発設計者は、プロジェクトスケジュール、コスト、リソースの管理、およびスケジュールに従って開発を進めることができる必要があります。
ユーザビリティとアクセシビリティの知識: ソフトウェア開発設計者は、ユーザビリティとアクセシビリティについての知識を持つ必要があります。これにより、ユーザーが使いやすく、アクセシビリティが高いソフトウェアを開発することができます。
新しい技術やトレンドに対する興味: ソフトウェア開発設計者は、新しい技術やトレンドについて常に学び続ける必要があります。技術の進歩は非常に速いため、設計者は新しい技術を継続的に学習することで、自分のスキ
まとめてもらったやつ
技術・スキル
コーディング力
アルゴリズム知識
データ構造知識
組み込み知識
データベース知識
ソフトウェア全体の工程知識
統計学知識
Webアプリケーションやサーバーサイド開発、クラウド基盤を利用するアプリケーション開発に関する知識
プログラム言語の多様性
基礎知識
思考力
コンセプチュアルスキル
論理的思考力(ロジカルシンキング)
抽象化思考力
創造思考力
批判的思考力(クリティカルシンキング)
イメージ力
メンタル
継続力
計画、行動力
問題解決能力
読書力
言語理解能力(読解力)
コミュニケーション能力
ユーザーインターフェイスやユーザーエクスペリエンスの設計に関する知識
情報セキュリティの基礎知識
オープンソースコミュニティへの参加経験
ソフトウェアテストにおいて自動化の手法やツールに精通していること
ビジネス的な視点やマーケティング戦略の知識
コミュニティビルディング、協働するスキル
特に必要な要素
これらの中で特に重要かつ最初に身につける要素は何ですか。3つに絞って、その中で順位を出してください。また、その理由を記載してください。
ソフトウェア設計開発者に必要な要素の中で、特に重要かつ最初に身につけることが必要な要素は以下の3つです。
ソフトウェアの基礎知識(アルゴリズム知識、データ構造知識、データベース知識など)
思考力(コンセプチュアルスキル、論理的思考力、抽象化思考力など)
コーディング力
理由は以下の通りです。
ソフトウェアの基礎知識
ソフトウェア設計開発者にとっての土台となる知識です。アルゴリズムやデータ構造など、基礎となる技術や考え方を理解することで、より高度なスキルを身につけるための基盤を作ることができます。また、データベースの知識も重要であり、現代の多くのシステムではデータベースが中心となっています。このため、これらの基礎知識を先に身につけることで、より高度なスキルを身につけるための基礎を作ることができます。
思考力
ソフトウェア設計開発者にとって欠かせない要素です。コンセプチュアルスキルや抽象化思考力など、高次の思考能力を身につけることで、より複雑なシステムの設計や問題解決ができるようになります。特に論理的思考力は、プログラミングにおいて重要な要素であり、コードを書く際に論理的に考えることが必要です。
コーディング力
ソフトウェア開発において最も基本的なスキルであり、ソフトウェア設計開発者にとって欠かせない要素です。コーディング力があることで、アルゴリズムやデータ構造などの基礎知識を活かして、実際にソフトウェアを開発することができます。また、コーディング力を身につけることで、開発したソフトウェアの品質を高めることができます。
これを身につける為に、必要な行動を5つ出してください。 また、その行動の中で優先順位をつけて、その理由を記載してください。
ソフトウェア設計開発者として必要な要素を身につけるための行動とその優先順位は以下の通りです。
プログラミングの基礎を学ぶこと
プログラミング言語の構文や文法、データ型、条件分岐、ループなど、プログラムを書くための基本的な知識を身につけることが必要です。これはプログラミングにおける基礎中の基礎であり、他の要素を身につけるための土台となるため、最も優先度が高いと言えます。
アルゴリズムとデータ構造の学習
ソフトウェア設計開発者にとって、アルゴリズムとデータ構造は非常に重要な要素です。これらを学習することで、問題解決のための基礎的な思考力やプログラムの最適化、バグの発見や修正などが可能になります。プログラミングの基礎を学ぶ前にこれらを学ぶ必要はありませんが、プログラミングの基礎ができた後は早めに学び始めることをお勧めします。
実践的な開発経験を積むこと
実際にソフトウェアの開発に関わることで、自分が学んだ知識やスキルを実際に使い、自分自身でプログラムを作成してみることが大切です。プログラミングの基礎やアルゴリズム、データ構造を学ぶだけでは実際の開発には不十分であり、経験を積むことでより多くのことを学ぶことができます。
プロジェクト管理のスキルを身につけること
ソフトウェアの開発には、プロジェクト管理のスキルが必要です。スケジュールの立て方、タスクの割り当て方、進捗管理などを学ぶことで、チーム全体の効率を上げることができます。
コミュニケーション能力の向上
ソフトウェア開発は、単独で行うことは少なく、チームで行うことがほとんどです。そのため、コミュニケーション能力が非常に重要になります。
ソフトウェアの基礎知識(アルゴリズム知識、データ構造知識、データベース知識など)
思考力(コンセプチュアルスキル、論理的思考力、抽象化思考力など)
コーディング力 を身につけるのが重要という話でしたが、それと実際の行動は別の話ということでしょうか?
はい、そうです。ソフトウェア開発に必要な知識やスキルを理解しているだけでは、実際にプログラムを書くことができるわけではありません。実際にプログラミング言語を使用してコーディングの経験を積み、エラーやバグを修正することで、開発者は技術的なスキルを向上させることができます。また、思考力も同様で、知識や理解を持っているだけでは十分ではありません。実践的な問題解決の経験を通じて、思考力を磨くことができます。
code:chatgpt
今までの話を要件を踏まえて、マークダウン方式でまとめてください。 ・ソフトウェアエンジニアになる為のステップアップが分かるようにしてください。
・必要な要素と優先順位については必ず記載してください。
・出来る限り箇条書きにしてください。
・特に重要な部分は、(注)を付けてください。
・エラー回避の為「続き」と書いたら、その部分の続きから記載を再開してください。
・今までの内容以外で必要な要素があったら追加してください。
ソフトウェアエンジニアになるためのステップアップ
1. コンピュータサイエンスの学習
(注)ソフトウェアエンジニアになるための最初のステップは、コンピュータサイエンスの学習です。
オンライン学習プラットフォームや大学の授業、書籍などを利用して、プログラミングの基礎からデータ構造、アルゴリズム、データベースなどを学びましょう。
2. プログラミング言語の習得
プログラミング言語の習得は、ソフトウェアエンジニアになる上で重要な要素です。
(注)最初に覚える言語は、PythonやJavaなどの一般的な言語がおすすめです。
他にもC++やJavaScript、Rubyなどを学ぶことも重要です。
3. ソフトウェア開発の実践
実践を通じて、プログラミングスキルを向上させましょう。
(注)オープンソースプロジェクトに参加したり、独自のアプリケーションを作成することがおすすめです。
4. アルゴリズムとデータ構造の学習
ソフトウェアエンジニアとして、アルゴリズムとデータ構造の知識は必須です。
(注)オンライン学習プラットフォームや大学の授業、書籍などを利用して学習しましょう。
5. ソフトウェア設計の学習
ソフトウェア設計のスキルを習得することで、より良いコードを書くことができます。
(注)オブジェクト指向設計やUML図を使った設計の学習がおすすめです。
6. ソフトウェアテストの学習
ソフトウェアエンジニアとして、自分が書いたコードをテストするスキルは必須です。
(注)ユニットテスト、統合テスト、機能テストなどのテストの種類や、テスト自動化の方法などを学習しましょう。
7. データベースの学習
ソフトウェアエンジニアとして、データベースの知識は必須です。
(注)リレーショナルデータベース、NoSQLデータベースなど、主要なデータベースの種類を学習しましょう。
8. ソフトウェア開発ツールの習得
ソフトウェアエンジニアとして、ソフトウェア開発ツールを使いこなすことは重要です。
(注)Git、GitHub、Jenkins、Dockerなど、主要なツールを学習しましょう。
9. コミュニケーションスキルの向上
ソフトウェアエンジニアとして、チームでの開発やユーザーとのコミュニケーションが必要です。
(注)英語力の向上や、プレゼンテーションのスキルなど、コミュニケーションスキルを向上させましょう。
10. 継続的な学習と情報収集
ソフトウェアエンジニアとして、常に新しい技術やトレンドを学び、自己啓発することが重要です。
(注)オンラインコミュニティやブログ、技術系の書籍などから情報収集し、継続的な学習を行いましょう。
以上が、ソフトウェアエンジニアになるためのステップアップの要素と優先順位になります。ただし、これらはあくまでも一例であり、個人の状況や目的に応じて優先順位を変えたり、追加・削除することが必要かもしれません。
おススメのコンピュータサイエンス学習の方法
コンピュータサイエンスを学ぶ方法は様々ありますが、以下はおすすめの方法です。
オンライン講座を受講する
オンライン教育プラットフォームには、コンピュータサイエンスの初心者向けから上級者向けまで、様々な講座があります。Coursera、Udacity、edX、Codecademyなどは良い選択肢です。多くは無料で受講できますが、課題提出や修了証明を受ける場合は有料となる場合があります。
書籍を読む
オンライン講座とは異なり、書籍は自分のペースで学習できるメリットがあります。入門書から専門書まで、幅広い書籍があります。自分のレベルに合った書籍を選び、効果的に学習しましょう。
実践的なプロジェクトに取り組む
コンピュータサイエンスの学習には、実践的な経験が必要です。プログラミング言語やアルゴリズムを理解したら、実際にプロジェクトを作成してみることをおすすめします。例えば、Webアプリケーションの作成や、機械学習のモデルの作成などがあります。
オンラインコミュニティに参加する
オンラインコミュニティには、同じ趣味や目的を持った人々が集まっています。コンピュータサイエンスの分野でも、Stack Overflow、Reddit、GitHub、Qiitaなどのコミュニティがあります。質問を投稿したり、他人の投稿にコメントしたりして、学習を深めることができます。
これらの方法は単独でも有効ですが、複数の方法を組み合わせることで、より効率的に学習することができます。また、自分に合った学習方法を見つけるために、試行錯誤してみることをおすすめします。
code:c
ソフトウェア開発設計者に必要な要素は何ですか?
ソフトウェア設計開発者