2012年5月29日火曜日

雑記:IT企業について

はいどうもご無沙汰です。
今日はプログラミング関係なし。IT企業についてちょっと記事書こうと思います。

まず私ですが依然として転職先を探して会社説明会やら波炉ーワーク、新卒用企業説明会に新卒のフリして情報収集にいったりといろんなことをやってきました。つい先日もあるIT企業の面接にいってきました。でまぁいろいろ周ってみて思ったことがあります。今日はそれをつらつらと書いていきます。



1.日本のIT企業は大丈夫なのか?
面接や説明会やら行って、IT企業から出る言葉は常に「プログラマ軽視」です。「プログラミングなんて簡単。文理どっちでもOK。1年でプログラマなんか卒業、すぐSEになってもらわにゃいかん」という企業が大半です。酷いところだと3ヶ月でSEというのもありました。ちょっと自分がプログラミング1年生のころのプログラムを見返してみましたが「このレベルに設計やらせたら破綻するだろ」って感じで寒気がしました。そりゃ超絶優秀で情報処理のセンスがあるというのなら1年で今の私のレベルを超える可能性はあります。しかしそんな優秀な奴そうそういるわけないのです。会社に1人いればいいほうでっせ。普通の私のような平凡な人はやはり年月かけて技術を学んでいかなきゃならないわけですよ。んでそんな平凡な奴らが1年で何ができんの?って思うわけですよ。せっkei?そもそも技術の引き出し少ないやつにどんな設計ができるんだ?何を提案できる?何を伝えられるの?
技術と切り離すべきことなのSEって?
私は大半のIT企業はもう中身スッカスカなんじゃないのかと感じています。どの面接に行ってもその得意先業務についての知識はあるかどうかの話題ばかりで、技術的な話は一切されませんし、答えたとしてもインフラがどうとか、自慢のナントカアーキテクトとか凄い表層的な話ばかりです。研修でJAVAを1年やりましたよとか少し得意げにその人事の方は言っていましたが、そんなのでSEやって、更には人事やってるって怖すぎです。
きっちりと技術の下積がある人がSEになるのはそりゃ自然ですが、何にも知らない人が入って1年で得た情報処理知識でSEやってるっていうのはヤバクね感がすごいです。そしてそのなんちゃってSEがこの業界に蔓延しているのならば、もはや学ぶことなど何もないのではと思ってしまいます。というか学べないのではと思っています。
実際のところ私はITを志す意味を少し見出せなくなっています。

最後に人事の珍回答を
私「御社にSE、プログラマは何割ほどいますか?」
会社「7割ぐらいだ...」
///---他の人がわらわら質問----///
私「ちなみにコンサルの割合は?}
会社「4割ぐらいだ」
私「!!!!!」

まぁあせって間違ったんでしょうね。(笑)



2.何で営業が技術より格上というクソみたいな道理がまかり通っているのか?

あと気づいたことが私が見たどこの企業も技術を軽視しているという事実です。人事で 「システムコンサルが100とすると...プログラマの価値は50くらいだな...SE?...あぁ70くらいだな。」なんて発言をしていたのでそれは何故か聞いてみると、ほとんど全社「社員養える仕事を取ってくるのがコンサル(営業)だからだ。」という回答でした。コレ聞いてどう思います?私は「あぁ更にやばいな。」と思うようになりました。
技術と営業の対立はまぁよく聞く話です。こんなものどっちも重要という 答えはすぐにでるでしょう。営業なき技術は利用されませんし、技術の裏打ちなき営業もまた利用されません。営業か技術かという甘っちょろいこと言っていてはいけません。どっちも必要で欠けていてはいけないのです。
んで技術軽視しているとどうなるか?たぶん技術職を不名誉な職のように感じて多くが営業側に移動するでしょう。んで技術はスカスカとなっていき、しまいには営業は「癌を治すナントカイオン水」のようなものを売っているという状態みたいになっていくのではないかと思われます。
そして恐ろしいことにそれはかな~り進んでるんじゃないのと説明会などで説明しているIT企業見てると思ってしまいます。
ちなみに私が出会った企業(50社くらい)の全社が技術軽視の発言を行っていました。ええ。非常にITが怖いです。



3.受託開発の会社とかも行ってみたほうがいいんじゃね?

これはほとんど行ってなかったので、受託開発の会社にも行って話しを聞いてみようと思います。
ただ現状、仕事をとってくるコンサルやSEがこの調子だと受託開発会社さんはかなり苦労されているのではないかと推測できます。あとはオフショア開発とかがどの程度脅威となっているのかなどにも興味があります。私が行った面接では受託開発会社を下請けとか下流工程のように...なんていうか馬鹿にしているようにも感じられましたが、実際はそうではないのかもしれません。
とにもかくにも生の話を聞けたらなぁと、来月もいろいろ行ってみようと思います。





とりあえず自分のできることをゆっくりと色々やってみようと思います。絶望していても仕方ありませんし。

以上です。




2012年5月24日木曜日

( Qt C++ )QMessageBoxに様々なボタンを配置する




はい。どうも。それでは真面目に粛々と表題の件やっていきます。

QMessageBoxの基本的な使い方は前の記事を参考にしてください。
再度説明はしません。今回はQMessageBoxに様々なボタンを配置してみます。


いつものようにQtCreaterの使用を前提とします。(QtCreaterなどの使い方は ”Qtをはじめよう" を見てください。)
またMainWindowにはbottonを一つ配置済みとします。 

それではコードを

(mainwindow.h)

#include <QMainWindow>
#include <QMessageBox>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT
    
public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
    
private slots:
    void on_pushButton_clicked();//コネクトしません。

private:
    Ui::MainWindow *ui;
};


特に難しいところはありません。<QMessageBox>は必ずインクルードしておいてください。
on_pushButton_clicked()はプッシュボタンクリックシグナルを補足します。Connectはしていませんがこれで動作します。(これがわからない方は”Qtをはじめよう"の「第16回:GUI デザイナ上でスロットを...」の記事の説明を見てください。)

(mainwindow.cpp)
#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_pushButton_clicked()
{
    QMessageBox msgBox;
    msgBox.setText("Hello World!! This is MessageBox!!");
    msgBox.setStandardButtons(QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel);
    msgBox.setDefaultButton(QMessageBox::Save);
    msgBox.exec();
}


はい簡単ですね。setStandardButtonsでそれぞれorでボタンを設定しています。setDefaultButtonによりSaveボタンを初期フォーカスを当てています。あとは前回と同じです。(ちなみにStandardButtonの種類は他にもあります。詳しくはコチラ
QMessageBoxリファレンスへ)


実行すると以下のようになります。
ボタンを押すと

以上です。次回はどのボタンが押されたかの識別についてやります。




2012年5月17日木曜日

( Qt C++ )QMessageBoxの基本的な表示


はい、それでは表題の件やっていきます。

今日から何回かQMessageBoxについてやっていこうと思います。英語のリファレンスの説明もわかりやすいのですが、まぁいちいち英語見るのは疲れるのでここで日本語でまとめちゃおうと思います。

第一回目は単純なOKボタン一つのメッセージボックスを表示させるということをやります。

いつものようにQtCreaterの使用を前提とします。(QtCreaterなどの使い方は ”Qtをはじめよう" を見てください。)
またMainWindowにはbottonを一つ配置済みとします。

ではコードを

( mainwindow.h )
#include <QMainWindow>
#include <QMessageBox>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT
    
public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
    
private slots:
    void on_pushButton_clicked();//コネクトしません。

private:
    Ui::MainWindow *ui;
};


特に難しいところはありません。<QMessageBox>は必ずインクルードしておいてください。
on_pushButton_clicked()はプッシュボタンクリックシグナルを補足します。Connectはしていませんがこれで動作します。(これがわからない方は”Qtをはじめよう"の「第16回:GUI デザイナ上でスロットを...」の記事の説明を見てください。)

( mainwindow.cpp )
#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_pushButton_clicked()
{
    QMessageBox msgBox;//宣言
    msgBox.setText("Hello World!! This is MessageBox!!");//表示テキストセット
    msgBox.exec();//表示
}


こちらもon_pushButton_clicked以外はまったくデザイナが吐いたコードそのままです。
on_pushButton_clicked内でメッセージボックスを表示させます。つまりボタンが押されるとメッセージボックスが表示されるという寸法です。表示方法はコードのコメントのとおりです。(QMessageBoxリファレンス


実行すると以下のようになります。

ボタンを押すと...

以上です。