Прочел Шильда, но этого мало для мидла, что дальше делать...

Статус: Offline
Реєстрація: 15.04.2007
Повідом.: 2188
Уже давно борюсь с С шарпом, много книг перепробовал, как оказалось самая доступная и понятная для меня оказалась Шильдт, полное руководтсво, прошел основные вещи, пока еще отложил:
Динамическую идентификацию типов, рефлексию, аттрибуты, обобщения, линк, указатели и многопоточность. Думаю пройду эти части позже.
Подтянул T-SQL, ADO.NET. Поработал с платной библиотекой Arcobject, пробовал так же на wpf ваять формы, собственно все тот же с# вот только в байдинг пока не лез, поигрался с сильверлайтом и ASP.net. Ну уже вроде как начал писать не сложный код. Большие кода пока еще не получается писать, как я понял мне бы паттерны почитать, ато по коду такие костыли прикручиваю, что сам понимаю что бред, но ума не хватает сделать качественно, приходится по 2-3раза переписывать, при этом исправляю одни костыли а прикручую другие. Но не в этом суть дела. На сегняшний день я уже чувствую что я перестал углублятся в изучение, а начал скорее расплываться в пространстве хватая по верхах то одну то другую технологию. Вроде как глобально кое что знаю, а конкретно ничего. Взять конкретный проект на фрилансе пока понимаю что на 99% провалю его. Посоветуйте как мне повышать свои навыки, думал может пойти второе образование получать или курсы добавить, потому как мое образование не связано с IT, соответственно не хватает базовых знаний. У меня цель - мидл уровень. Фух, ну вообщем где то так, собственно крик души. Пишите кто что думает, буду признателен. Мечтаю свалить на аутсорс, с инглишем у меня нормалек.



мда... Как то не густо с ответами, неужели я настолько глупые вопросы поставил...
 
Останнє редагування:
Для мидла надо не книги читать, а работу работать :) Потуси джуником в какой-нить конторке полгода-годик. И т.д., пока не наберешься опыта.

А из книг советую Макконелла "Совершенный код". Многим "23летним сениорам" вправляет вывихнутый фрилансом мозг :)
 
Для мидла надо не книги читать, а работу работать :) Потуси джуником в какой-нить конторке полгода-годик. И т.д., пока не наберешься опыта.

А из книг советую Макконелла "Совершенный код". Многим "23летним сениорам" вправляет вывихнутый фрилансом мозг :)

спасибо, обязательно почитаю. А на счет джуниора была у меня такая мысля даже резюме на датаарт отправлял, но тут беда мне уже как бы не 23года а многим подавай молодежь. К тому же вроде как не плохо и зарабатываю сейчас, жаль что профиль узконаправленный, поэтому смена работы на джуниора однозначно попадаю на меньшую зп. А получается по другому опыта не наработаешь... И насколько реально в 33года устроится джуниором??
 
спасибо, обязательно почитаю. А на счет джуниора была у меня такая мысля даже резюме на датаарт отправлял, но тут беда мне уже как бы не 23года а многим подавай молодежь. К тому же вроде как не плохо и зарабатываю сейчас, жаль что профиль узконаправленный, поэтому смена работы на джуниора однозначно попадаю на меньшую зп. А получается по другому опыта не наработаешь... И насколько реально в 33года устроится джуниором??

Реально. Вопрос в том, насколько комфортно будет работать под началом ребят на 10 лет моложе. А так, если есть задатки, есть и шансы. Напишите пару простеньких проектов, просто чтобы показать, что умеете обращаться с фреймворком, и вперед.
 
чувак это репчик.

до мидла тебе как минимум 2-3 года надо попедалить реальные проекты и кучу литературы освоить.

та я как бы и не говорю, что хочу за месяц стать мидлом. Пару лет - отлично. Знать бы только что верной дорогой иду.

Реально. Вопрос в том, насколько комфортно будет работать под началом ребят на 10 лет моложе. А так, если есть задатки, есть и шансы. Напишите пару простеньких проектов, просто чтобы показать, что умеете обращаться с фреймворком, и вперед.

что такое простенький проект??

вот образец усечения кадастрового номера можно считать простеньким проектом или нет?

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Collections;

namespace cadastr_number_cutting
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
//AddField();
string strSQL = "select ID_PARCEL, OBJECTID from FA.dbo.proekt_merge";
using (SqlConnection cn = Connection())
{
cn.Open();
SqlCommand cmd = new SqlCommand(strSQL, cn);
SqlDataReader rdr = cmd.ExecuteReader();
while (rdr.Read())
{
string s = rdr.GetSqlString(0).ToString();
string k = rdr.GetSqlInt32(1).ToString();
if (s.Length == 22)
{
s = s.Remove(0, 6).Remove(2, 3).Remove(4, 2).Remove(6, 2);

string Insert_sql = "UPDATE FA.dbo.proekt_merge SET cad_num_cut = " + s + "WHERE OBJECTID = " + k;

using (SqlConnection cn1 = new SqlConnection("integrated security=true;Data Source = 10.0.3.155;Initial Catalog = FA"))
{
cn1.Open();
SqlCommand cmd1 = new SqlCommand(Insert_sql, cn1);
cmd1.ExecuteNonQuery();
}
}
}
}
}

private static void AddField()
{
string strSQL = "ALTER TABLE FA.dbo.proekt_merge ADD cad_num_cut nvarchar(20)";
using (SqlConnection cn = Connection())
{
cn.Open();
SqlCommand cmd = new SqlCommand(strSQL, cn);
cmd.ExecuteNonQuery();
}
}
public static SqlConnection Connection()
{
SqlConnectionStringBuilder strBldr = new SqlConnectionStringBuilder();
strBldr.DataSource = "10.0.3.155";
strBldr.InitialCatalog = "FA";
strBldr.IntegratedSecurity = true;
SqlConnection cn = new SqlConnection(strBldr.ConnectionString);
return cn;
}
}
}
или вот еще тренировался на регулярные выражения

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Text.RegularExpressions;

namespace GetFullCadNumber
{

public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
CadNumber.GetFullCadNumber(textBox1.Text);

}
}
public static class CadNumber
{
/// <summary>
/// проверка и преобразование усеченного строкового представления кадастрового номера к полному формату
/// </summary>
/// <param name="cnum">входной строковый кадастровый номер</param>
/// <returns></returns>
public static string GetFullCadNumber(string cnum)
{
try
{
switch (cnum.Length)
{
case 22:

if (!Regex.IsMatch(cnum, "^631013(63|66|69|72|75|79|82|85|88)00:[0-9]{2,2}:0[0-9]{2,2}:[0-9]{4,4}$"))
{
MessageBox.Show(@"Введенный Вами кадастровый номер не соответствует требованиям КОАТУУ!
Кадастровый номер должен быть в формате '631013xx00:xx:0xx:xxxx'.");
return null;
}
MessageBox.Show(cnum);
return cnum;

case 9:
string cnumRev = "";
char[] ch9 = cnum.ToCharArray();
if (!Regex.IsMatch(cnum, "^(63|66|69|72|75|79|82|85|88)[0-9]{7,7}$"))
{
MessageBox.Show(@"Введенный Вами кадастровый номер не соответствует требованиям КОАТУУ!
Кадастровый номер должен быть в формате '(номер административного района)xxxxxxx'.");
return null;
}
cnumRev = "631013" + ch9[0].ToString() + ch9[1].ToString() + "00:"
+ ch9[2].ToString() + ch9[3].ToString() + ":0" + ch9[4].ToString()
+ ch9[5].ToString() + ":0" + ch9[6].ToString() + ch9[7].ToString()
+ ch9[8].ToString();

MessageBox.Show(cnumRev);
return cnumRev;
default:
MessageBox.Show("Кадастровый номер введен не корректно!");
return null;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
return null;
}
}
}
}

Порылся порылся еще в проектам то основная масса завязана на платную библиотеку Arcobject, поэтому как бы и нет смысла выкладывать сюда.

Вот давненько писал простенького логера....

using System;
using System.IO;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using System.Collections;

namespace logger
{
static class logger
{
static string path = string.Format("{0}\\{1}.log", Path.GetDirectoryName(Application.ExecutablePath), Path.GetFileNameWithoutExtension(Application.ExecutablePath));
//static string path = Path.GetDirectoryName(Application.ExecutablePath) +"\\"+Path.GetFileNameWithoutExtension(Application.ExecutablePath) + ".log";
private static bool state = true;
public static bool IsLogged
{
get {return state;}
set { state = value;}
}
public static void AddToLog(string message)
{
if (IsLogged)
{
File.AppendAllText(path, string.Format("{0}\t\t{1}" + Environment.NewLine, DateTime.Now.ToString("dd.MM.yyyy HH.mm:ss"), message));
SizeOfFileControl();
}
}

private static void SizeOfFileControl() // нам не надо более 1000 записей в нашем лог-файле
{
string[] s = File.ReadAllLines(path);
string[] ss = new string[1000];
ArrayList arr = new ArrayList();
for (int i = 0; i<s.Length; i++)
{
arr.Add(s);
}
for(int k = 0; k<arr.Count; k++) //избавляемся от пустых строк.
{
while (arr[k] == "")
{
arr.RemoveAt(k);
}
}
while (arr.Count > 1000)
{
arr.RemoveAt(0); //выбрасываем лишние записи
}

for (int j = 0; j < arr.Count; j++)
{

ss[j] = (string)arr[j];
}

File.WriteAllLines(path, ss);

}
public static void AddToLog(Exception e)
{
if (IsLogged)
{
File.AppendAllText(path, string.Format("{0}\t\t{1}{2}.{3}\r\n", DateTime.Now.ToString("dd.MM.yyyy HH.mm:ss"), e.Message.ToString(),e.TargetSite.DeclaringType.FullName.ToString(), e.TargetSite));
SizeOfFileControl();
}
}
}
static class Program
{
[STAThread]
static void Main()
{
try
{
int x = 0;
x = 5 / x;
}
catch (Exception e)
{
logger.AddToLog(e);
}
//Exception e = new Exception("арбайтен");
//logger.AddToLog(e);
}
}
}
 
1) Если парсер сайта тут не при чем, то где отступы? В приличных домах Лондона функциональные блоки принято отделять табуляцией(4 пробелами) для более удобного воприятия кода на глаз.
2) В приличных домах Лондона принято лаконично называть классы на основе их функциональности. В приличных домах Лондона считается дурным тоном оставлять стандартные названия для классов аля "Form1" или "Cmd1"
 
1) Если парсер сайта тут не при чем, то где отступы? В приличных домах Лондона функциональные блоки принято отделять табуляцией(4 пробелами) для более удобного воприятия кода на глаз.
2) В приличных домах Лондона принято лаконично называть классы на основе их функциональности. В приличных домах Лондона считается дурным тоном оставлять стандартные названия для классов аля "Form1" или "Cmd1"

Отступы, есть это так копирнулся код неудачно. А вот насчет форм, команд, кнопок, грешу, постоянно оставляю названия по умолчанию.



Что-то простое и полезное.

Вот закончил только что формирование ворд документа автоматически, там впринципе кода много на 740 строк получилось но все очень простое собственно вкидываю параграфы и слежу за соблюдением размеров, шрифтов, отступов, интервалами. Вообщем смысла нет большого выкладывать.
Сейчас вот взял себе такое задание: есть таблица логирования и вот хочу реализовать окно выборки из таблицы по определенным критериям, формирование отчетов и графиков.
Может такое покатит под прото и полезное?
 
Останнє редагування:
Отступы, есть это так копирнулся код неудачно. А вот насчет форм, команд, кнопок, грешу, постоянно оставляю названия по умолчанию.





Вот закончил только что формирование ворд документа автоматически, там впринципе кода много на 740 строк получилось но все очень простое собственно вкидываю параграфы и слежу за соблюдением размеров, шрифтов, отступов, интервалами. Вообщем смысла нет большого выкладывать.
Сейчас вот взял себе такое задание: есть таблица логирования и вот хочу реализовать окно выборки из таблицы по определенным критериям, формирование отчетов и графиков.
Может такое покатит под прото и полезное?

быстрее, выше, сильнее!
 
посмотрел код... вы не знаете как применять ооп, не умеете правильно называть переменные/методы/неймспейсы/и_т.д., не умете разрабатывать архитектуру, не понимаете что делает часть операций, которые сами написали, но знаете что без них почему-то не работает, используете ацкие приемчики типа такого if (s.Length == 22), неоптимально используете системные ресурсы, делаете дубляж кода

с другой стороны вы пытаетесь документировать код, только почему-то не везде, не бросате исплючения на произвол судьбы, правда тоже не все =), вроде бы как что-то понимаете в регулярках, только добавляете в них ерунду, которая замедляет их работу

ну как бы все, с такими знаниями можно найти работу, но до мидла еще очень долго, если продолжать в таком же духе, на проектах в 100-200 строк, то через несколько лет уровень останется тот же, только чтобы писать программы уже не нужно будет постоянно подсматривать в гугл
 
посмотрел код... вы не знаете как применять ооп, не умеете правильно называть переменные/методы/неймспейсы/и_т.д., не умете разрабатывать архитектуру, не понимаете что делает часть операций, которые сами написали, но знаете что без них почему-то не работает, используете ацкие приемчики типа такого if (s.Length == 22), неоптимально используете системные ресурсы, делаете дубляж кода

с другой стороны вы пытаетесь документировать код, только почему-то не везде, не бросате исплючения на произвол судьбы, правда тоже не все =), вроде бы как что-то понимаете в регулярках, только добавляете в них ерунду, которая замедляет их работу

ну как бы все, с такими знаниями можно найти работу, но до мидла еще очень долго, если продолжать в таком же духе, на проектах в 100-200 строк, то через несколько лет уровень останется тот же, только чтобы писать программы уже не нужно будет постоянно подсматривать в гугл

Благодарю Вас за весьма развернутый ответ, что уделили время просмотреть код и высказать свое мнение, посоветуйте, пожалуйста, что мне делать дальше для улучшения навыков и повышения уровня. Сам уже чувствую что перестал расти, сбросил темпы, начал расползаться. Вроде как и не хочется все бросить и пойти за еду джуниором, потому как у меня сейчас не плохая работа, но не программирование. Сам до конца не уверен а вдруг не потяну и потеряю что имею. Очень хочу вести параллельно совмещая одно с другим. Каких то супер темпов не ставлю 2-3 года абсолютно нормальный показатель. Может имеет смысл мне сосредоточиться на каком то конкретном направлении(технологии). Мне очень нравится ADO.NET. Там все мне показалось настолько понятным и логичным, может правда потому что имею с базами данных дело, в частности с SQL server. Может правильнее отточить до идеала работу с базами, типа писать тригеры и процедуры, генерить вьюхи. Рисовать не сложные клиентские окна ну в таком ключе. Хотя с другой стороны мне кажется этого мало. Очень не понравился мне сильверлайт, да там классный рендеринг, асинхронная работа, но все живет на событиях и мне настолько было трудно продумать структуру программы что я начал тихо ненадвидеть сильверлайт. А после того как обнаружил что сам сильверлайт на клиентских машинах время от времени слетает и как то криво становится, то вообще забил на это дело, пока что. ВПФ очень интересный как мне показался, но собственно там надо разобраться с байдингом если хочу что то нормальное писать. С книгами одни расстройства, какую книгу не возьми 700-1000страниц, читать все подряд не хватает никаких сил. Та даже по ADO.NET, от Сеппа, такая увесистая с кучей не столь существенной деталировки, что я ее забросил. Спасибо Фленову в краце и доступно разжевал на сотню страниц все самое важное и нужное. По его же книге (Фленова) изучал и T-SQL. Вообщем такие вот эмоции переполняют меня. Вот подумываю пойти получать второе образование, вроде как нормально за год
Тільки зареєстровані користувачі бачать весь контент у цьому розділі

Но посмотрел дисциплины, которые проходят:
• Графическое и геометрическое моделирование и интерактивные системы (3DMax, Photoshop, CorelDRAW);
• Macromedia Flash;
Ну мне это и нафиг не надо, по С# вообще никаких упоминаний, ну вообщем похоже что это немного не то. А где оно то, я не знаю. Шаг вроде как все ругают, по политеху не нашел в нете нужное описание. Фух, выговорился.
 
ни шаг, ни второе образование ничего не дадут, у вас этот уровень уже есть, нужно определиться что больше нравиться: веб/впф&сильверлайт/бд/невизуальная_часть и работать в этом направлении, параллельно вряд ли получиться, на своей работе можно взять отпуск, больничный и попробовать себя месяцок в роли программиста, если то что показали пишите несильно напрягаясь, то работать джуном получится, сложного ничего не дадут всякий рутинный труд и "а вот посмотри как тут работает..."
 
ни шаг, ни второе образование ничего не дадут, у вас этот уровень уже есть, нужно определиться что больше нравиться: веб/впф&сильверлайт/бд/невизуальная_часть и работать в этом направлении, параллельно вряд ли получиться, на своей работе можно взять отпуск, больничный и попробовать себя месяцок в роли программиста, если то что показали пишите несильно напрягаясь, то работать джуном получится, сложного ничего не дадут всякий рутинный труд и "а вот посмотри как тут работает..."

хм... то, что я выложил для меня просто, может не так уверенно себя чувствую с событиями, но впринципе и с ними справляюсь. Если образцы моего кода соответсвует джуниору, то такого уровня код я могу писать как бы даже не сомневаюсь. Отпуск вполне реально взять на месяц плюс больничный. И как лучше поступить, отправлять свое резюме в большие конторы типа никс солюшн, епам, датаарт? или наоборот обратить внимание на небольшие фирмы, или просто скажем выложить свое резюме на работа.харьков. уа и ждать кто пригласит? Что скажете?

Нравится больше всего не визуальная часть, хорошо когда кто-то интерфейс нарисует, а я сижу там и реализовываю, скажем, онклик событие. Нравится работа с таблицами БД. Подключаюсь, вычитываю, вываливаю нужные данные скажем в созданый объект пользовательского класса и отправляю дальше или наоборот принимаю объект класса, разбираю его и пишу в базу в нужные поля. Проектировщик БД с меня еще пока правда никакой, но рад подучиться. Тоесть в резюме на счет навыком имеет смысл указывать только ООП, С# и ADO.NET, правильно?

посмотрел код... вы не знаете как применять ооп, не умеете правильно называть переменные/методы/неймспейсы/и_т.д., не умете разрабатывать архитектуру, не понимаете что делает часть операций, которые сами написали, но знаете что без них почему-то не работает, используете ацкие приемчики типа такого if (s.Length == 22), неоптимально используете системные ресурсы, делаете дубляж кода

с другой стороны вы пытаетесь документировать код, только почему-то не везде, не бросате исплючения на произвол судьбы, правда тоже не все =), вроде бы как что-то понимаете в регулярках, только добавляете в них ерунду, которая замедляет их работу

ну как бы все, с такими знаниями можно найти работу, но до мидла еще очень долго, если продолжать в таком же духе, на проектах в 100-200 строк, то через несколько лет уровень останется тот же, только чтобы писать программы уже не нужно будет постоянно подсматривать в гугл

Мне очень понравилось как Вы указали на мои ошибки, я собсвтенно со всем сказанным согласен, да именно так и есть.
На счет документирования, начал это делать после того, как открыл старую программу, и не могу понять а зачем я делал то или другое. Вообщем понабивал сам себе шишек.
Теперь я еще аккуратнее начал оборачивать код в трай-кетч, потому как начал пытаться переносить свое ПО на другие машины и удивляться, а что ж такое, программа не работает и не понятно где ж возникла проблема.:)
 
Останнє редагування:
не соответствуют они джуниору, просто код можете писать, а по большому счету этого достаточно, дальше расскажут что можно, а что нельзя

отправлять резюме во все ит-фирмы, даже если не нашли у них нужной вакансии, выложить резюме тоже можно

в резюме укажите с чем знакомы и но не стоит указывать знания которые не относятся к желаемой вакансии, типа иду на си шарп, а еще знаю пхп

невизуальная часть это не написание обработчиков событий =) как пример: есть сторонний сайт для онлайн перевода, ваша задача написать к нему обертку, которую другие смогут использовать вкидывая в нее слово для перевода и направление перевода
 
Нравится больше всего не визуальная часть, хорошо когда кто-то интерфейс нарисует, а я сижу там и реализовываю, скажем, онклик событие.

:рл:



Тоесть в резюме на счет навыком имеет смысл указывать только ООП, С# и ADO.NET, правильно?

навыков ООП у вас пока что нет, вообще нет :)
ADO.NET очень базовые вещи вы поверхностно знаете, но этого не достаточно.

вот образец усечения кадастрового номера можно считать простеньким проектом или нет?

это вообще не проект, а маленькая примитивная формочка из разряда "набросал за 5 минут" :)
 
Останнє редагування:
:рл:





навыков ООП у вас пока что нет, вообще нет :)
ADO.NET очень базовые вещи вы поверхностно знаете, но этого не достаточно.



это вообще не проект, а маленькая примитивная формочка из разряда "набросал за 5 минут" :)

Вы меня расстроили, так что же мне делать? лучше не рыпаться? но как то надо повышать свой уровень...
 
Вы меня расстроили, так что же мне делать? лучше не рыпаться? но как то надо повышать свой уровень...

Прочитать Макконелла, взять цель повыше (например, клон MSProject :D), попытаться реализовать, понять, что отстали от стандартного универского курса, подтянуть алгоритмы, переписать все с нуля. Потом наконец-то устроиться практикантом или на курсы в епам/глобал/циклум, понять, что до уровня мидла еще как до китая раком и забить, или уделить все свободное время обучению и написанию кода. Через годик-два, когда помимо лячкания гкода освоитесь с контролем версий и грамотным дебагом, может вас и примут джуниором в какую-нибудь контору.

Поймите одну простую вещь - те, кто сейчас зовутся мидлами или сениорами в солидных проектах, занимались программированием еще со школьных лет, постоянно перескакивали с одной технологии на другую, т.к. они устаревают быстрее, чем среднестатистический украинец способен их освоить от корки до корки, и на лице имеют шишки от граблей возрастом 10-15, реже в 20 лет. Местное быдло называет таких "ботанами". Если у Вас есть возможность несколько лет подряд педалить для наработки минимального опыта, то вперед. Нет - лучше не лезть, это будет зря потерянное время.
 
Прочитать Макконелла, взять цель повыше (например, клон MSProject :D), попытаться реализовать, понять, что отстали от стандартного универского курса, подтянуть алгоритмы, переписать все с нуля. Потом наконец-то устроиться практикантом или на курсы в епам/глобал/циклум, понять, что до уровня мидла еще как до китая раком и забить, или уделить все свободное время обучению и написанию кода. Через годик-два, когда помимо лячкания гкода освоитесь с контролем версий и грамотным дебагом, может вас и примут джуниором в какую-нибудь контору.

Поймите одну простую вещь - те, кто сейчас зовутся мидлами или сениорами в солидных проектах, занимались программированием еще со школьных лет, постоянно перескакивали с одной технологии на другую, т.к. они устаревают быстрее, чем среднестатистический украинец способен их освоить от корки до корки, и на лице имеют шишки от граблей возрастом 10-15, реже в 20 лет. Местное быдло называет таких "ботанами". Если у Вас есть возможность несколько лет подряд педалить для наработки минимального опыта, то вперед. Нет - лучше не лезть, это будет зря потерянное время.

Я не хочу понимать сказанное Вами. Если принять написаное - значит сдаться. С шарпом я уже варюсь около года, тоесть это не "мимолетное увлечение". Скорее переросло в хроническую форму. Отослал сегодня резюме на никсы - курсы заочного обучения.
Тільки зареєстровані користувачі бачать весь контент у цьому розділі

Посмотрим, а вдруг примут.
 
Назад
Зверху Знизу