[JAVA] Since I became an IT student about two years ago, I have been scrutinizing the system creation so far.

Intro

This article is the 22nd day of OIC ITCreate Club Advent Calendar 2016.

http://www.adventar.org/calendars/1484

thank you for your hard work. I'm Koga, also known as Gacchan. Kupippo like a baby with some feathers! I don't say that or eat at home. Hiragana is Gacchan.

Yes, let's get into the main subject with this much self-introduction of earning lines. (Third time)

I think that the poem element is stronger this time.

[From here on, poem-like elements are probably included. If you haven't read Qiita to read such things, we recommend browser back]

First of all, a little introduction about myself

I think it was around this time in 2014 that I started studying IT (programmers).

I decided to enter a vocational school, so I decided to study early, so I wanted to study HTML / CSS and make games in Java http://www.gamecradle.net/document/main/content/doki/introduction.html This I was studying with reference to the site.

About two years after that, I've been writing various source codes related to various works and products, but there are countless walls that I've hit so far.

However, if I forget that experience, I think it would be a waste for me, and I hope that the juniors of ITCreateClub (http://itc.moe) will be able to use it as a food when they hit a similar wall. I would like to write it in a smooth manner.

Inquiry form made with PHP for the first time

About December of the first grade at that time ...? I was asked by a mysterious classmate who likes infrastructure in the same class to make an inquiry form using PHP because I wanted an inquiry form to put on my server. I haven't used PHP and I didn't have much knowledge of the Web, but I agreed to improve my technical skills. Implementation has started.

Problem 1 I can't write decent HTML in the first place

I just studied on the website by myself, so I knew the meaning of each ** tag, but I didn't know how to use it **, and when I looked back on it later, I made a terrible markup. ..

<form>
  <div> <!--← This div isn't it. If you surround anything, you won't be able to do it.-->
    <label for="name">name</label>
    <input name="name" type="text" />
  </div>
  <div>
    <!--abridgement-->
  </div>
</form>    

What I learned from this is that the basics (study of the meaning of tags and syntax) can be managed by self-education, but how is it used ** and how is it common to use it? ** It is said that if you do it while having your predecessor teach you rather than doing it by yourself, you will acquire the important programming ability such as "** the ability to write source code that the other person can read properly **". I understand that.

Problem 2 It doesn't work even if I implement copy

I've never used PHP, so I implemented it while checking it on the website. The product needed to incorporate various functions, such as an email sending function, a function to operate cookies from PHP, and the need to acquire and paste user agent information with JS, and my technology at that time I had to do something beyond my strength.

Therefore, I picked up the source code published on the website and implemented it in various ways ... w

However, the problem with that is that there are times when ** the copy / paste implementation does not work **. The source code may be wrong, it may not work due to the difference in version, it may not work because the surrounding environment is not prepared, or it may not work due to various factors.

A copy-and-paste implementation that you use without understanding its implementation can only accept the fact that it doesn't work, and you don't know how to fix it, so you can only look for another source.

Source code that was finally available:

//SMTP server settings
    //In the case of Gmail, permission for "access to insecure apps" is required
    // https://www.google.com/settings/security/lesssecureapps
    $mail->isSMTP(); //SMTP usage declaration
    $mail->Host = 'smtp.gmail.com';  //SMTP server
    $mail->SMTPAuth = true;  //With or without SMTP user authentication
    $mail->Username = SEND_ACCOUNT; //SMTP account
    $mail->Password = SEND_PASSWORD;    //SMTP password
    $mail->SMTPSecure = 'ssl';   //SMTP protocol(SSL or TLS)
    $mail->Port = 465;   //SMTP port number(SSL:465, TLS:587)

    //Email content settings
    $mail->CharSet = "UTF-8";    //Character set(The default is'ISO-8859-1')
    $mail->Encoding = "base64";  //encoding(The default is'8bit')
    $mail->setFrom(SEND_ACCOUNT, 'Inquiry form');   //From
    $mail->addAddress(TO_ADDRESS, 'Destination');  //destination
    $mail->Subject = $subject; //Email subject
    $mail->Body  = $content; //the content of the email
    $mail->AddAttachment($_COOKIE['file']);   //Attachment

If you have comments in such a natural language, you can manage to use it, but if you do not, you will only know that it will not work if you try using it entirely.

What I learned about the copy / paste implementation is that if the copy / paste implementation is a complete function, I can't do anything by myself, so even if I use it, I will limit it to only a small part (such as simple validation processing of character strings). It's better to keep it **.

A browser game that helped create with jQuery and CSS

It's a work related to design rather than logic, and the part that creates the structure of HTML and animates using jQuery / CSS is impressive.

Problem 1: I talked too much about my grand dream when planning

It was a work I made for exhibition at a certain event, and at the time of planning, I was planning to add many functions (such as being able to play games with multiple patterns), and I was trying to make a fun game.

However, it was not accompanied by technical capabilities, and ** it took a long time to implement one function **.

As a result, I couldn't implement a lot of the features I wanted to do **, and the deadline has come, so I have a lot of regrets ...

What I learned from this is the importance of first prioritizing and implementing ** features of a product **. I just decided the priority verbally, so when I got into a situation where it took a long time to implement and I had no time, I decided to decide while coding in a hurry, so I thought it was a waste. think. So it's okay to decide in about an hour, so it's really important to ** easily record your priorities in a spreadsheet (even if you're developing as a team) **

Team development in a class called system development exercise

At the school I attend (Osaka Information Computer College), from the second half of the second year, we will form a team of 5 to 8 people and develop a system that ** assumes actual work ** (laughs).

Therefore, we decided to create a Web service, and the work was divided into two teams, a team that implements front processing and a team that implements server processing.

So, the problem there was the biggest.

Problem 1: The division of labor is good, but the design for loose coupling was not well done.

As I talked about above, I tried to divide the team work and implement it, but since I had no experience in creating a design suitable for the division of labor, I managed to implement it by just raising the document somehow. I thought it was a big problem to get in.

What I learned from this is that when implementing in a division of labor, ** the teams in the division of labor must be designed so that there are no doubts about each other **. Of course, I think that questions will arise during implementation, but in order to solve them, I think that it is necessary to properly define the basic idea and raise it in the document.

Problem 2: I can't remember what I said earlier

This is related to Problem 1, but I think that if you divide the labor or make a product as a team, oral communication will inevitably occur. Oral communication is one of the most efficient communication methods because it enables quick information sharing and communication. However, it is very difficult for the human brain to remember everything that was said in detail, so ** I always forget the story that was only verbal **.

In order to solve it, it is necessary to keep photos such as minutes and drawn figures properly.

In our team, at the beginning, everyone regardless of the front team or server team defined the system requirements verbally using a whiteboard etc., but please keep the minutes of it very tightly. Zu,

Later, at the time of implementation, "What should I do with this?" "I feel like I was saying that ..."

Conversations like this have come to occur frequently.

What I learned from this is that ** documents are really important. Design is important. ** It's just that. Let's visualize what you have designed. It will be really painful later.

Summary

As mentioned above, I wrote a lot of things, but the more I remembered, the more it seemed to come out, so I wanted to quit remembering on the way w

There are still many points to reflect on, and there are many things that I'm glad I did, so I'll talk about LT and drinking parties instead of articles like this.

So, I think I'll talk about that at the LT tournament that I'll be attending soon!

Notice of LT participation!

https://connpass.com/event/46806/

I participated after being taught by Junjun (https://twitter.com/konojunya), but since it is an LT tournament limited to student engineers in Kansai and against schools, it is an exchange with people from other universities and vocational schools. I think it will be a really fun tournament ...!

There are still more tour slots (as of December 22, 2016), so please come visit us! Thank you!

Well then, thank you for reading Poem and your promotion to the end! Wish you a good year! !!

Recommended Posts

Since I became an IT student about two years ago, I have been scrutinizing the system creation so far.
2018. It's been two years since I became an SE, so I'll expose the book I read.
It's been a year since I became an engineer from 28 years old
It's been a year since I became a working Android engineer, and it's almost two years.
It's been a month since I became an engineer from inexperienced ...