Wątek przeniesiony 2017-04-05 21:53 z Społeczność przez somekind.

Prośbą o poradę w rozwinięciu

0

Witam Wszystkich,

Chciałem zapytać, co bardziej doświadczonych programistów o radę odnośnie ugruntowania i systematyzacji wiedzy wiedzy. Aby w pełni zrozumieć moją obecną zagwozdkę kilka słów na temat mojego obecnego statusu programowo/zawodowego.

Jestem obecnie "programistą", w jednym z warszawskich korpo. Piszę to w ciapkach bo ani nie jesteśmy oficjalnie zespołem developerskim ani ja sam do końca nie czuję, że zasługuję na ten status. Moja przygodą z tą dziedziną zaczęła się od "szefie chciałbym się nauczyć programować i w tym rozwijać", po czym dostałem od jednego kolegi kilka godzin szkolenia, projekt do zrobienia i deadline. Na początku szło jak po gruzie, ale zadając pytania, googlując i męcząc się przeraźliwie coś tam udało się zmontować. Nawet działa i ludzie są z tego zadowoleni.

Prawie dwa lata później tworzę aplikacje, czasem większe czasem mniejsze. Nie wydaje mi się, żeby to były wybitne i skomplikowane rzeczy i mam troszkę apetyt na więcej. Rozglądam się po pracuj.pl w ogłoszeniach dla programistów i trochę mnie wstyd ogarnia. Rzucają terminami które co jedynie mogę rozwinąć skrót, lub o nich słyszałem. Chciałbym się rozwijać w jakiś sposób ale obecnie pracodawca kładzie raczej nacisk na szybkość wprowadzania nowych aplikacji niż wprowadzanie nowych rozwiązań technologii.

Sytuacja moja i mojego zespołu już mniej więcej taka:

  • programuję w C# .Net 4.0
  • zostałem wdrożony w WPFa i w tym wszystko piszę, czasem muszę coś zajrzeć do jakiś WinFormsów, ale są mi trochę obce - jak muszę to coś zrobię, ale jeśli tylko mogę to piszę wszystko w WPFie
  • moje wszystkie aplikacje są automatyzacjami procesów dla działów połączone z bazą danych SQL, więc zapytania i komunikacja aplikacja <-> baza danych jest opracowywana przeze mnie
  • nie korzystamy z żadnego TFSa bo wszystkie nasze projekty są jednoosobowe. Sami rozmawiamy z biznesem, zbieramy wymagania, opracowujemy struktury baz danych i je wprowadzamy, kodujemy, testujemy i oddajemy, a potem jeszcze utrzymujemy i wprowadzamy rozwinięcia, poprawki etc

I tak mniej więcej to wgląda, przez strukturę pracy (a raczej jej totalny brak), moja wiedza jest bardzo poszarpana. Kojarzę wyrażenia Lambda i nich czasem korzystam, ale byłoby kłamstwem gdybym napisał w CV (jeśli w ogóle takie rzeczy się wypisuje), że jestem w nimi w 100% zaznajomiony. Powoli zaczynam bardzo adoptować Binding i wydaje mi się super fajny ale.. też jest to taka wiedza szczątkowa. Gdyby zabrali mi w pracy dostęp do stackoverflow to pewnie bym umarł.

Chciałem przez to zapytać się was o radę.
Czy ciężko byłoby mi znaleźć pracę w jakimś profesjonalnym software hous-ie?
Jak dowiedzieć się, co tak naprawdę się wie/umie?
Jak ustrukturyzować swoją wiedzę?
Kiedy mogę powiedzieć "dobrze znam" <some skill="skill">?
Praktycznie wszystkie oferty wymagają ASP .NET, wiem, że programista musi być wszechstronny, ale czy jest teraz sens uczyć się czegoś od podstaw jeśli do końca nie pojmuje C# WPFa?

Z góry dziękuję za pomoc :).

Pozdrawiam

0

Dziś już nie robię w WPF, ale parę lat temu owszem.
Według mnie nigdy nie będzie się "pojmować go do końca", bo jest to technologia bardzo przekombinowana, a na dodatek niespecjalnie ewoluująca.
Jeśli coś już drgnęło, to niech mnie (współcześni) dotnetowcy poprawią.

Oto leciwy już tekst, który wiernie oddaje, jak wyglądało to w przeszłości: http://paulstovell.com/blog/six-years-of-wpf

Pierwszy cios autor wyprowadza pokazując markup WPF-owy, który przedstawiał się tak samo w 2006, jak i 2012:

<Window x:Class="PaulStovell.TrialBalance.UserInterface.MainWindow"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:tb="clr-namespace:PaulStovell.TrialBalance.UserInterface"
  xmlns:tbp="clr-namespace:PaulStovell.TrialBalance.UserInterface.Providers"
  xmlns:system="clr-namespace:System;assembly=mscorlib"
  Title="TrialBalance" 
  WindowState="Maximized"
  Width="1000"
  Height="700"
  Icon="{StaticResource Image_ApplicationIcon}"
  Background="{StaticResource Brush_DefaultWindowBackground}"
  x:Name="_this"
  > 

W tym samym czasie analogiczny kawałeczek w ASP .NET przeszedł metamorfozę z:

 <%@ Page Language="C#" MasterPageFile="~/TrialBalance.Master" AutoEventWireup="true" EnableViewState="false" CodeBehind="Builds.aspx.cs" Inherits="PaulStovell.TrialBalance.MainWebsite.Builds" Title="Downloads - TrialBalance" %>
 <asp:Content ID="Content1" ContentPlaceHolderID="MainContentPlaceholder" runat="server">
  <asp:PlaceHolder runat="server" Visible="false" ID="_downloadAreaPlaceholder">
    <h1>Download</h1>

do:

@model BuildsViewModel

@section Main {
  <h1>Download</h1>
}

WPF, zwłaszcza po porażce blisko spokrewnionych z nim Windows Phone, Silverlight, jest już według mnie technologią niszową.

Polecam zerknąć, jak wygląda tend rynkowy: https://www.indeed.com/jobtrends/q-wpf.html

Nie mogę doradzać dalszego kierunku kariery, jako że nie robię już w .NET, ale na pewno przestrzegam przed myśleniem "nie zacznę się uczyć platformy B, bo jeszcze nie zgłębiłem A". Według mnie to bez sensu. Przecież po przełączeniu się na platformę B czas plus zawodna pamięć i tak szybko zacznie dezaktualizować twoje umiejętności w zakresie A. Ja tak miałem po przejściu ze świata .NET do Java/Android.

nie korzystamy z żadnego TFSa bo wszystkie nasze projekty są jednoosobowe

Z TFS-a, czy w ogóle z żadnego systemu kontroli wersji (jak Git)?? Bo jeśli tak, to nawet w projekcie realizowanym jednoosobowo jest to absurd i to trzeba zmienić, jeśli myśli się o pracy w tej profesji na poważnie

1 użytkowników online, w tym zalogowanych: 0, gości: 1