Wednesday, August 20, 2014

A Type of Direction

I have been learning a lot of new stuff and I found a periodic table with all the necessary things that most software developers need to learn. This periodic table was the most useful thing that could have found because it gave me some sort of direction to help me along the way to becoming a developer. For those people who like lists, here is the periodic table in a list form. Its going to be a long journey, but I think I can tackle the basics on my own.

  • Basics 
    • Big-O Notation
    • Algorithm Design 
    • Object Oriented Languages 
    • Software Security Basics 
    • Scientific Computing Basics 
    • Parallel Computing
    • Numerical Mathematics
    • Data Structures
    • Functional Languages 
    • Encryption Basics 
    • Database Systems
    • Game Theory 
    • Robotic Basics 
    • Aspect Oriented Programming
    • Declarative Languages 
    • Network Protocols
    • Distributed Computing 
    • State Machines 
    • Parallel Computing
    • Distributed Computing
    • Procedural Languages
    • Web Application Security
    • Machine Learning
    • Artificial Intelligence 
    • Software Development Process
  • Infrastructure 
    • Basics of ITIL
    • DevOps
    • Build Management
    • Monitoring
    • Automated Deployment
    • Test Data Management 
  • Maintenance
    • Re-Engineering
    • Reverse Engineering
    • Program Comprehension
    • Maintenance Planning 
    • IT Change Management 
  • Lean IT
    • Scrum
    • Kanban
    • Agile Methods
    • Agile Planning 
    • Pair Programming
    • Test Driven Development 
    • Definition of Done
    • Continuous Integration
    • Continuous Delivery 
    • User Stories 
    • Backlog Management 
    • Stand-up Meeting
    • Spike Solutions
    • Planning Game 
    • No Overtime
    • Collect Code Ownership
    • Travel Light
    • System Metaphor
  • Design
    • Component Design
    • Database Design
    • Design Patterns
    • Architecture Pattern
    • Large-Scale System Design
    • Design Notations
  • Requirements
    • Requirements Elicitation
    • Requirements Analysis 
    • Atomic Requirements
    • Requirements Attributes
    • Requirement Reviews
    • Traceability Management
    • Management of Requirements Portfolio
  • Implementation
    • Basics Coding Skills
    • Static Code Analysis
    • Code Refactoring
    • Dynamic Code Analysis 
    • Code Peer Reviews
    • Volume Metrics
    • Code Comments
    • Complexity Metrics
    • Code Format Standards
    • Code Coverage
    • Code Reuse
    • Dependency Analysis
  • Testing
    • Unit Testing
    • Defect Root Cause
    • Integration Testing
    • Service Testing
    • Performance Testing
    • Stress Testing 
    • Exploratory Testing
  • Usability 
    • User Interface Design
    • User Acceptance
    • Usability Labs 
  • Tools
    • Code Analysis Tools 
    • Continuous Integration Tools 
    • Requirements Management Tools
    • Integrated Development Environments
    • Test Automation Tools
    • Profiling Tools 
    • Modeling Tools 
    • Version Control Systems
  • Management
    • Risk Analysis 
    • Expectation Management
    • Task Management 
    • Project Management Basics 
    • Estimations
    • Measurement of Activities
    • Project Controlling
  • Other
    • Soft Skills 
    • Presentation Skills 
    • Empathy
    • Creation of Relationships
    • Conflict Management
    • Negotiation Skills 
    • Rhetoric
    • Intercultural Skills
    • Creativity Techniques
    • Marketing Basics
    • Leadership Basics 
    • Good Manners
    • Intrinsic Motivation
    • Physical Fitness
    • Stop Talking 

Completely Lost!

There are perhaps thousands of young developers who are looking for the right way to start their careers and I am one of those lost people. Not just any kind of lost. I feel as if I trying to learn all the knowledge in the universe and the universe continually keeps adding new knowledge at an even faster pace.

I guess I should give you some of my background to give a clue about where I am at with the whole becoming a developer journey. I went throughout my life not knowing how computers really worked. To me it felt like some magical box that turned on that someone could write their mandatory school papers on. It was not until university that I started to learn about all the different languages that eventually tell the computer what to do. Honestly, that "Hello, World!" was pretty exciting to me. Its been a year and half now since my first computer science course and here I am, extremely lost about where to go.

The thing that fascinated me about programming was not the programming itself, but the things you could do with all the code. I started off as a mechanical engineer (I still am, trying to switch into CS)
, but I could not satisfy my creative side of me. I do know how to make parts from scratch in the machine shop using the lathe, the mill, etc, but all the parts are expensive and require a machine shop. With programming all you need is a computer! However, I am stuck in this infinite loop of wanting to create, but having to learn something new to get it done, think that I need to learn everything, getting frustrated and stopping.

This frustration is caused by the fact that I need to get an internship soon and there is a career fair in the fall at my school, which I do not think I have the skills to walk into and land something for the next summer. I also really need some money because college is too expensive at the moment.

This blog will probably document my becoming a developer journey and all the little things I learn along the way. I know my current way of thinking is fairly poor, so I need to change it for the better. This journey will be for life.