[js] draggen, layers, pixels en ' ' :?

Pagina: 1
Acties:

  • r0bert
  • Registratie: September 2001
  • Laatst online: 11-08 16:19
Ik was bezig met het maken van een scriptje waardoor ik een divje dragable kon maken, maar nu blijf ik eventjes een beetje hangen op dit stukje:
code:
1
2
3
4
5
6
function dragElement(oActiveElement) {
   while (event.mousedown) {
     oActiveElement.style.left = event.screenX;
     oActiveElement.style.top = event.screenY;
   }
}

want event.mousedown werkt niet ..
't is dus de bedoeling dat het scriptje blijft loopen zolang de linkermuisknop ingedrukt blijft..
om met onmousedown & onmouseup te werken als tags in het element is geen oplossing ..

//edit:
hier nog even het complete script

  • Xanthus
  • Registratie: Februari 2002
  • Laatst online: 11-07 12:45
Ik weet niet precies hoe het moet maar toen ik zocht zag ik hoe iemand anders het deed:
http://fluweelblad.leidenuniv.nl/wimjan/test/dragdrop.html
ook leuk

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Hier heb ik een simpel voorbeeldje met draggable layers...

Intentionally left blank


  • r0bert
  • Registratie: September 2001
  • Laatst online: 11-08 16:19
Ok .. het dragscriptje is wel zo ongeveer gelukt, maar nu zit ik met een zelfde soort probleempje..

Ik maak doormiddel van een scriptje wat divjes met tabletjes aan.. de bedoeling is dat die divjes draggable worden. Alle divjes die draggable moeten zijn, staat in de array 'aDragableDivs' en die divjes die ik aanmaak voeg ik ook toe.

Maar als ik de pagina dan open en ik probeer zo'n divje te bewegen werkt dat helemaal niet :? en ik weet toch zeker dat ik divjes aan heb gemaakt met een id en dat id heb toegevoegd aan de aDragableDivs array..

scriptje is een beetje groot om hier te posten, maar ik doe het toch maar even..
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
<html>

<head>

  <title>
    TiTeL
  </title>

  <style type="text/css">
    body {
    font-family: Verdana, Tahoma, Arial;
    font-size: 10pt;
    color: black;
    padding: 0px;
    }
  </style>

</head>

<body onMouseDown="DoMouseDown();" onMouseMove="dragElement();" onMouseUp="dropElement();">

<div id="divId1" style="position: absolute; visibility: visible; left: 50px; top: 50px; border: red 1 solid; width: 150px; height: 100px;" onClick="MinMaxDiv(this);" onDragStart="return false;">
    <table style="width: 150px; height: 100px; border: green 1 solid;">
        <tr>
            <td style="width: 100%; height: 30px; border: blue 1 solid; text-align: right;">_ O <input type="button" value="X" onClick="divId1.removeNode(true);"></td>
        </tr>
        <tr>
            <td style="width: 100%; height: 120px; border: blue 1 solid; text-align: right;">tekst</td>
        </tr>
    </table>
</div>

<div id="divId2" style="position: absolute; visibility: visible; left: 170px; top: 170px; border: red 1 solid; width: 150px; height: 100px;">
    <table style="width: 100%; height: 100%; border: green 1 solid;">
        <tr>
            <td style="width: 100%; height: 50px; border: blue 1 solid; text-align: right; vertical-align: top;"><input type="button" value="_" onClick="MinMaxDiv(document.all.divId2);"><input type="button" value="|_|" onClick="//MaxDiv(document.all.divId2);"><input type="button" value="X" onClick="divId2.removeNode(true);" onDragStart="return false;"></td>
        </tr>
        <tr>
            <td style="width: 100%; height: 120px; border: blue 1 solid; text-align: right;">tekst</td>
        </tr>
    </table>
</div>

<div  id="divStatus" style="position: absolute; visibility: visible; left: 450px; top: 380px; border: yellow 1 solid; width: 250px; height: 25px;">
&nbsp;
</div>

<div  id="divTest" style="position: absolute; visibility: visible; left: 100px; top: 100px; border: green 1 solid; width: 250px; height: 100px; z-index: 2;">
</div>

<script language="JavaScript" type="text/javascript">
var oActiveElement;

var tempArray = new Array();

// De dragbare divjes in een arraytje aangeven
var aDragableDivs = new Array();
aDragableDivs['divId1'] = 1;
aDragableDivs['divId2'] = 1;

var aCat = new Array(
    'a',
    'b',
    'c',
    'd',
    'e',
    'f',
    'g',
    'h',
    'i',
    'j',
    'k',
    'l',
    'm',
    'n',
    'o',
    'p',
    'q',
    'r',
    's',
    't',
    'u',
    'v',
    'w',
    'x',
    'y',
    'z'
);

//  syntax:   naam, email, adres, telefoon, kennis, werkErvaring, referenties
function CreateGegevensO(sNaamVal, sEmailVal, sAdresVal, sTelVal, sKennisVal, sWerkVal, sRefVal, sCatVal) {
    this.naam = sNaamVal;
    this.email = sEmailVal;
    this.adres = sAdresVal;
    this.telefoon = sTelVal;
    this.kennis = sKennisVal;
    this.werkervaring = sWerkVal;
    this.referenties = sRefVal;
    this.catagorie = sCatVal;
}

// Gegevens als object in de array aGegevens stouweh
var aGegevens = new Array(
    new CreateGegevensO('robert de Wilde','wilde825@planet.nl','straatnaam nr potcode plaatsnaam','tele foonnr','html/javascript/dhtml','tekst','http://hier.com|http://daar.com|http://www.weg.com','r')
);

// array aGegevens sorteren op naam (alfabetisch)
aGegevens.sort(objSortNaam);

// functie om de array aGegevens alfabetisch te sorteren
function objSortNaam(n1, n2) {
   if(n1.naam < n2.naam) return -1;
   else if(n1.naam > n2.naam) return 1;
   else return 0;
}

// dynamisch een tabelletje opbouwen. reference: http://msdn.microsoft.com/workshop/author/tables/buildtables.asp

//#####################################################
//#####################################################
//#####################################################

for (var iCatIndex = 0; iCatIndex < aCat.length; iCatIndex++) {

   // divje met tabel wordt aangemaakt..
    var oDiv = document.createElement("DIV");
    var oTable = document.createElement("TABLE");
    var oTBody = document.createElement("TBODY");
    var oRow = document.createElement("TR");

    oTable.appendChild(oTBody);
    oTBody.appendChild(oRow);
    
    oCell = document.createElement("TD");
    
    oCell.innerText = aCat[iCatIndex];
    // divje krijgt id => divId{naam catagorie}
    oDiv.id = 'divId' + aCat[iCatIndex];

    // id van divje wordt aan de aDragableDivs Array toegevoegd..
    aDragableDivs[oDiv.id] = 1;
    
    oRow.appendChild(oCell);
    
    oTable.borderColor = "red";
    for (var iGegevensIndex = 0; iGegevensIndex < aGegevens.length; iGegevensIndex++) {
        if (aGegevens[iGegevensIndex].catagorie == aCat[iCatIndex]) {
            oRow = document.createElement("TR");
            oCell = document.createElement("TD");
            oCell.innerHTML = '<a href="showInfo(' + iGegevensIndex + ');">' + aGegevens[iGegevensIndex].naam + '</a>';
            oRow.appendChild(oCell);
            oTBody.appendChild(oRow);
            if (aGegevens[iGegevensIndex].referenties.toString().indexOf("|")) {
                tempArray = aGegevens[iGegevensIndex].referenties.toString().split('|');
                for (a = 0; a < tempArray.length; a++) {
                    oRow = document.createElement("TR");
                    oCell = document.createElement("TD");
                    oCell.innerHTML = '<a href="' + tempArray[a] + '" target="_blank">' + tempArray[a] + '</a>';
                    oRow.appendChild(oCell);
                    oTBody.appendChild(oRow);
                }
            }
        }
    }
    
    oDiv.appendChild(oTable);
    divTest.appendChild(oDiv);
}

// Alle divs in 1 object stouwehh
var aObjectDivs = document.body.getElementsByTagName("DIV");

// Functie voor het minimaliseren en weer terughalen van de divjes
function MinMaxDiv(whichDiv) {
    switch(whichDiv.style.visibility) {
    
        case "hidden":
          whichDiv.style.visibility = "visible";
          strStatusInnerHTML = "";

          for (i = 0; i < aObjectDivs.length; i++) {
              if (aObjectDivs[i].style.visibility == "hidden") { 
                  strStatusInnerHTML += "<span id='" + aObjectDivs[i].id + "status' onClick='MinMaxDiv(" + aObjectDivs[i].id + ");'>" + aObjectDivs[i].id + " | </span>"; 
              }
          }

          divStatus.innerHTML = strStatusInnerHTML;
          break;
          
        case "visible":
          whichDiv.style.visibility = "hidden";
          divStatus.innerHTML += "<span id='" + whichDiv.id + "status' onClick='MinMaxDiv(" + whichDiv.id + ");'>" + whichDiv.id + " | </span>";
          break;
          
        default:
          break;
    }
}

// Checken of er op een divje wordt geklikt en of deze dragbaar is
function DoMouseDown() {
    oCurElement = event.srcElement;
    while(oCurElement.tagName != "DIV") {
        oCurElement = oCurElement.parentElement;
        if (oCurElement.tagName == "HTML") break;
    }
    if ((oCurElement.tagName == "DIV") && (aDragableDivs[oCurElement.id])) oActiveElement = oCurElement;
}

function dragElement() {
    if (oActiveElement) {
        oActiveElement.style.left = event.clientX - 10;
        oActiveElement.style.top = event.clientY - 10;
    }
}

function dropElement() {
    oActiveElement = null;
}
</script>

</body>

</html>

het gaat volgens mij voornamelijk om deze loop
code:
1
for (var iCatIndex = 0; iCatIndex < aCat.length; iCatIndex++)

ik begin langzamerhand een beetje gestoord te worden van dat debuggen, dus misschien weet iemand anders 't..

Ps. Scriptje staat ook op deze pagina

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Waarom al dat script in je <body> en niet in je <head>? Ik krijg nu al een 'object expected' error als de pagina nog laadt omdat onMouseMove getriggered wordt, maar de functie dragElement() nog niet bestaat...

Intentionally left blank


  • r0bert
  • Registratie: September 2001
  • Laatst online: 11-08 16:19
euw .. ow .. naja .. zet 't wel even in de head .. was gewoon begonnen met scripten en had daar eigenlijk nog niet eens aan gedacht ..

// edit: gedeelte van script in de <head> gezet op de pagina van de link

werkt nog steeds niet ...;(

  • r0bert
  • Registratie: September 2001
  • Laatst online: 11-08 16:19
* r0bert schreeuwt om HULP! :)

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Het is nogal een berg code, daarbij heb ik op mijn werk een browser uit het jaar kruik, en schreeuwd mijn maag nu eerst om eten... ff geduld dus graag!

Intentionally left blank


  • r0bert
  • Registratie: September 2001
  • Laatst online: 11-08 16:19
best .. moest alleen even zorgen dat m'n topic niet verzoop..

  • SchizoDuckie
  • Registratie: April 2001
  • Laatst online: 18-02-2025

SchizoDuckie

Kwaak

* SchizoDuckie says:

Beehive

Waarom het wil 26x uitvinden voor die k*t (meestal niet eens x-browser) scriptjes :)

Stop uploading passwords to Github!


  • r0bert
  • Registratie: September 2001
  • Laatst online: 11-08 16:19
Ja .. die site ken ik ook ja, maar wat moet ik dérmee ?

  • SchizoDuckie
  • Registratie: April 2001
  • Laatst online: 18-02-2025

SchizoDuckie

Kwaak

Op dinsdag 26 februari 2002 18:56 schreef r0bert het volgende:
Ja .. die site ken ik ook ja, maar wat moet ik dérmee ?
Ehmm... nou... als je even de tijd neemt om de beehive.zip te downen en de examples te bekijken, wordt het je vast snel duidelijk :)

Stop uploading passwords to Github!


  • r0bert
  • Registratie: September 2001
  • Laatst online: 11-08 16:19
die ken ik idd ook al, maar ik heb nu een scriptje geschreven dat speciaal aan mijn site is aangepast en die zou ik graag werkend zien :)

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

en zelf doen is leuker/leerzamer en efficienter dan een lib gebruiken die je niet kent, en waarvan je 90% niet nodig hebt cq gebruikt. (Hoewel het een heel goede lib is, daar niet van hoor, maar ik doe het toch ook liever zelf: eigen code leest toch veel makkelijker...)

Intentionally left blank


  • r0bert
  • Registratie: September 2001
  • Laatst online: 11-08 16:19
Idd.. dat is wat ik eigenlijk ook bedoelde maar niet zei :)

Ik denk trouwens dat ik al weet waar het aan ligt, want de divjes zijn niet absoluut gepositioneerd..

ik heb geprobeerd om ze te positioneren dmv:

oDiv.position = "absolute";

maar dat werkt vreemdgenoeg niet ..

//edit: MSDN -> position..

//edit: ARGH .style.position vergeten |:(

hij werkt nu

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Op dinsdag 26 februari 2002 19:13 schreef r0bert het volgende:
Idd.. dat is wat ik eigenlijk ook bedoelde maar niet zei :)

Ik denk trouwens dat ik al weet waar het aan ligt, want de divjes zijn niet absoluut gepositioneerd..

ik heb geprobeerd om ze te positioneren dmv:

oDiv.position = "absolute";

maar dat werkt vreemdgenoeg niet ..

//edit: MSDN -> position..

//edit: ARGH .style.position vergeten |:(

hij werkt nu
hehe, was ik ook net achter... :)
nog wel wat vage artifacts bij het minimaliseren van de divs though...
[edit]
is op te lossen door divId1 hetzelfde te maken als divId2...

Intentionally left blank


  • oh,when?
  • Registratie: April 2000
  • Niet online

oh,when?

...

Op dinsdag 26 februari 2002 19:12 schreef crisp het volgende:
(Hoewel het een heel goede lib is, daar niet van hoor, maar ik doe het toch ook liever zelf: eigen code leest toch veel makkelijker...)
Ook wel bekend als het "Not-invented-by-me"-syndroom wat dodelijk is in een project waar je met een team aan werkt. En een van de redenen waarom planningen zo moeilijk worden gehaald, ook in de web- en software industry.

Maar das weer een heel ander verhaal...

:)

"You're only as good, as what you did last week."


  • r0bert
  • Registratie: September 2001
  • Laatst online: 11-08 16:19
ik weet dat ik lastig ben, maar ik heb nog 1 klein probleempje..

Ik moet de hoogte van de divjes in pixels kunnen achterhalen..

maar nix werkt:

- oDiv.style.height (retunt ' ' = nix)
- oDiv.height (returnt undefined)
- oDiv.style.pixelHeight (returnt 0)

  • r0bert
  • Registratie: September 2001
  • Laatst online: 11-08 16:19
Op dinsdag 26 februari 2002 19:37 schreef oh,when? het volgende:

[..]

Ook wel bekend als het "Not-invented-by-me"-syndroom wat dodelijk is in een project waar je met een team aan werkt. En een van de redenen waarom planningen zo moeilijk worden gehaald, ook in de web- en software industry.

Maar das weer een heel ander verhaal...

:)
a.k.a het ik-wil-mijn-pagina-es-zelf-maken-en-graag-goedwerkend-hebben-ook-al-kost-dat-nogal-veel-tijd-syndroom :P

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Op dinsdag 26 februari 2002 19:37 schreef oh,when? het volgende:

[..]

Ook wel bekend als het "Not-invented-by-me"-syndroom wat dodelijk is in een project waar je met een team aan werkt. En een van de redenen waarom planningen zo moeilijk worden gehaald, ook in de web- en software industry.

Maar das weer een heel ander verhaal...

:)
Absoluut mee eens!

Echter vind ik het helemaal niet verkeerd om in een leerproces het wiel opnieuw uit te vinden. Soms kom je dan op oplossingen die misschien zelfs wel beter zijn!
Desalniettemin is het dan achteraf wel goed om je oplossing te toetsen met bestaande oplossingen.
Let wel: ik heb het hier over leerprocessen, en niet over een project. Toch denk ik dat je binnen een project ook best kritisch mag zijn over andermans code, en de bruikbaarheid, gebruiksvriendelijkheid en efficientie van 'herbruikbare code' (libraries, modules etc.) die tot je beschikking staan.

Ik ben zelf van nature een troubleshooter, en heb heel wat code gezien in mijn leven. Elke dag leer ik toch weer een beetje, en de beste elementen pik ik daar uit en pas ik zelf ook weer toe.
Ik wil niet zeggen dat 'mijn manier' altijd de beste is, maar vaak zitten daar heel veel goede elementen in die zich in de praktijk bewezen hebben (ik heb het hier trouwens niet puur over webscripting, want daar kom ik eigenlijk nog maar net kijken - hoewel veel van mijn praktijkervaring ook binnen webscripting toepasbaar is).

Kritisch en innovatief werken, en soms zelf gaan nadenken over oplossingen terwijl die misschien voorhanden zijn is niet de manier om deadlines te halen, maar binnen een hobby (wat webscripting voor mij is) wel de manier om er zelf het meest van te leren...

Intentionally left blank


  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Op dinsdag 26 februari 2002 19:41 schreef r0bert het volgende:
ik weet dat ik lastig ben, maar ik heb nog 1 klein probleempje..

Ik moet de hoogte van de divjes in pixels kunnen achterhalen..

maar nix werkt:

- oDiv.style.height (retunt ' ' = nix)
- oDiv.height (returnt undefined)
- oDiv.style.pixelHeight (returnt 0)
Het moet zijn: oDiv.clientHeight

edit:

Ik weet niet wie de titel van deze post heeft aangepast, maar ik vind dat het de lading niet echt lekker meer dekt; het gaat nog steeds over een draggable layer probleem imho.

Intentionally left blank


  • r0bert
  • Registratie: September 2001
  • Laatst online: 11-08 16:19
die had ik aan laten passen omdat het nu nietmeer over het draggen ging ..

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Op dinsdag 26 februari 2002 20:00 schreef r0bert het volgende:
die had ik aan laten passen omdat het nu nietmeer over het draggen ging ..
En nu gaat het nergens meer over, dus veranderen we de titel naar '' :+

Intentionally left blank


  • r0bert
  • Registratie: September 2001
  • Laatst online: 11-08 16:19
sorry hoor .. maar wist ik veel .. ik ben soms ook maar gewoon een domme }:O

//edit: clientHeight returned ook 0

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

en document.getElementById(oDiv.id).clientHeight ?

Intentionally left blank


  • r0bert
  • Registratie: September 2001
  • Laatst online: 11-08 16:19
achja . . dat ik dat zelf niet had kunnen verzinnen ;(

dankje Crisp :D en de rest uit de topic :D of z'n ogen over mijn probleem heeft laten rollen ..

  • Clay
  • Registratie: Oktober 1999
  • Laatst online: 22-06 13:51

Clay

cookie erbij?

Op dinsdag 26 februari 2002 19:52 schreef crisp het volgende:

[..]

Absoluut mee eens!

Echter vind ik het helemaal niet verkeerd om in een leerproces het wiel opnieuw uit te vinden. Soms kom je dan op oplossingen die misschien zelfs wel beter zijn!
Desalniettemin is het dan achteraf wel goed om je oplossing te toetsen met bestaande oplossingen.
Let wel: ik heb het hier over leerprocessen, en niet over een project. Toch denk ik dat je binnen een project ook best kritisch mag zijn over andermans code, en de bruikbaarheid, gebruiksvriendelijkheid en efficientie van 'herbruikbare code' (libraries, modules etc.) die tot je beschikking staan.

Ik ben zelf van nature een troubleshooter, en heb heel wat code gezien in mijn leven. Elke dag leer ik toch weer een beetje, en de beste elementen pik ik daar uit en pas ik zelf ook weer toe.
Ik wil niet zeggen dat 'mijn manier' altijd de beste is, maar vaak zitten daar heel veel goede elementen in die zich in de praktijk bewezen hebben (ik heb het hier trouwens niet puur over webscripting, want daar kom ik eigenlijk nog maar net kijken - hoewel veel van mijn praktijkervaring ook binnen webscripting toepasbaar is).

Kritisch en innovatief werken, en soms zelf gaan nadenken over oplossingen terwijl die misschien voorhanden zijn is niet de manier om deadlines te halen, maar binnen een hobby (wat webscripting voor mij is) wel de manier om er zelf het meest van te leren...
Psies :) kijk ik vind mijn library totaal logisch en lekker werken, maar ik heb het immers ook zelf gemaakt en ken het door en door als een open boek.

het "Not-invented-by-me"-syndroom hadden wij inderdaad ook nog een tijd geleden met een site die we moesten onderhouden, en waar de dynApi inzat. Dat waren duizenden regels code die iets deden (wat ook best met een paar honderd kon), en ja je kent het idd niet en dan is het niet te doen om daar "even" wat in aan te passen.

En voor het leerproces is het uiteraard tien keer beter het zelf te doen, want iets schijnbaar eenvoudigs als een dragdrop script zitten nog best wat haken en ogen aan :) is trouwens ook leuk, neem iets visueels en kijk hoe je dat kan scripten. in bijna 100% van de gevallen kom je voor dingen te staan waar je echt niet aan gedacht had.

Stel bijvoorbeeld het layer overzichtje in photoshop. Als je er daar 1 van versleept past de volgorde zich automatisch aan. Lijkt simpeler dan het is als je het na gaat maken :D ...

Instagram | Flickr | "Let my music become battle cries" - Frédéric Chopin


  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Op dinsdag 26 februari 2002 20:27 schreef Clay het volgende:

[..]

...

Stel bijvoorbeeld het layer overzichtje in photoshop. Als je er daar 1 van versleept past de volgorde zich automatisch aan. Lijkt simpeler dan het is als je het na gaat maken :D ...
Wat dat laatste betreft (ik gebruik geen photoshop, dus vergeef me als ik abuis ben) heb ik nog een tipje voor topicstarter: kijk inderdaad of je de layer die je aan het draggen bent 'on top' kan krijgen (oftewel: de z-index verhogen). In het simpele script met mijn kaarten zit dat al ingebakken. Tevens 'verspringt' de layer hier niet als je 'm oppakt. - is echter nog steeds IE-only...

Intentionally left blank


  • r0bert
  • Registratie: September 2001
  • Laatst online: 11-08 16:19
Had ik inderdaad al eerder gezien.. Had iemand anders, ik geloof in deze topic, al gepost ..

  • oh,when?
  • Registratie: April 2000
  • Niet online

oh,when?

...

Op dinsdag 26 februari 2002 19:52 schreef crisp het volgende:

[..]

Absoluut mee eens!

Echter vind ik het helemaal niet verkeerd om in een leerproces het wiel opnieuw uit te vinden. Soms kom je dan op oplossingen die misschien zelfs wel beter zijn!
Desalniettemin is het dan achteraf wel goed om je oplossing te toetsen met bestaande oplossingen.
Zijn we het gelukkig toch nog eens :)

Een goede technisch projectleider gaat imo voorafgaand aan een project een evaluatie houden aan de hand van het technisch ontwerp, en vraagt aan de programmeurs welke code al is, waar deze is toegepast en of deze kan worden meegenomen in dit project. Daarnaast is het wenselijk ook tijdens een project dergelijke evaluaties te houden. Hierdoor bereik je het volgende:

• Iedereen in het team weet waar hij of zij mee bezig is
• Mogelijke obstakels komen vroeg aan het licht, en kunnen snel teruggekoppeld worden
• Er kan efficienter geprogrammeerd worden, omdat de 'saaie' code al gedaan is


Daarnaast pleit ik voor regelmatige besprekingen met _iedereen_ die ook maar 1 regel code in het project schrijft, om zo van elkaar te leren en elkaar tot een hoger nivo te brengen. Zulke leerprocessen zijn essentieel, en hoeven helemaal niet saai te zijn.

Zulke dingen klinken heel logisch, maar je zal je vergissen hoe vaak dit word nagelaten, simpelweg omdat:

• er is geen tijd voor, planning is te strak
• programmeur vind het onzin ( groot ego )


Vaak is er helemaal geen weet van welke code in een organisatie beschikbaar is, en word er keer op keer het wiel opnieuw uitgevonden, ten koste van de opdrachtgever die elk uur gefactureerd krijgt.

Een ander gevolg is dat omdat je iedere keer iets nieuws zit te schrijven, de planning niet haalt, en daardoor op je vinges word getikt. Daardoor krijg je een rotgevoel, en niet alleen jij omdat je team ook verantwoordelijk is. Dan is het nog maar een kleine stap en je hebt een rotsfeer binnen je bedrijf.

Om het voor jezelf goed te maken zal je vaak geneigd zijn om langer door te gaan cq. over te werken. Hierdoor bestaat zelfs de kans dat je jezelf voorbijloopt.
Let wel: ik heb het hier over leerprocessen, en niet over een project. Toch denk ik dat je binnen een project ook best kritisch mag zijn over andermans code, en de bruikbaarheid, gebruiksvriendelijkheid en efficientie van 'herbruikbare code' (libraries, modules etc.) die tot je beschikking staan.

[...]

Kritisch en innovatief werken, en soms zelf gaan nadenken over oplossingen terwijl die misschien voorhanden zijn is niet de manier om deadlines te halen, maar binnen een hobby (wat webscripting voor mij is) wel de manier om er zelf het meest van te leren...
Ik heb het hier puur over een professionele omgeving. Uiteindelijk draait het om tijd en tijd is dan nog altijd geld. Het is volstrekt logisch om 's avonds nog een uurtje door te spelen, of thuis natuurlijk...en dan onstaan vaak de mooiste speeltjes. De 'knowledge' die je daarmee opdoet, kun je natuurlijk perfect gebruiken in je dagelijkse werkzaamheden.

:)

"You're only as good, as what you did last week."


  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Op dinsdag 26 februari 2002 22:43 schreef oh,when? het volgende:

[..]

Zijn we het gelukkig toch nog eens :)

Een goede technisch projectleider gaat imo voorafgaand aan een project een evaluatie houden aan de hand van het technisch ontwerp, en vraagt aan de programmeurs welke code al is, waar deze is toegepast en of deze kan worden meegenomen in dit project. Daarnaast is het wenselijk ook tijdens een project dergelijke evaluaties te houden. Hierdoor bereik je het volgende:

• Iedereen in het team weet waar hij of zij mee bezig is
• Mogelijke obstakels komen vroeg aan het licht, en kunnen snel teruggekoppeld worden
• Er kan efficienter geprogrammeerd worden, omdat de 'saaie' code al gedaan is


Daarnaast pleit ik voor regelmatige besprekingen met _iedereen_ die ook maar 1 regel code in het project schrijft, om zo van elkaar te leren en elkaar tot een hoger nivo te brengen. Zulke leerprocessen zijn essentieel, en hoeven helemaal niet saai te zijn.

Zulke dingen klinken heel logisch, maar je zal je vergissen hoe vaak dit word nagelaten, simpelweg omdat:

• er is geen tijd voor, planning is te strak
• programmeur vind het onzin ( groot ego )


Vaak is er helemaal geen weet van welke code in een organisatie beschikbaar is, en word er keer op keer het wiel opnieuw uitgevonden, ten koste van de opdrachtgever die elk uur gefactureerd krijgt.

Een ander gevolg is dat omdat je iedere keer iets nieuws zit te schrijven, de planning niet haalt, en daardoor op je vinges word getikt. Daardoor krijg je een rotgevoel, en niet alleen jij omdat je team ook verantwoordelijk is. Dan is het nog maar een kleine stap en je hebt een rotsfeer binnen je bedrijf.

Om het voor jezelf goed te maken zal je vaak geneigd zijn om langer door te gaan cq. over te werken. Hierdoor bestaat zelfs de kans dat je jezelf voorbijloopt.
[..]

Ik heb het hier puur over een professionele omgeving. Uiteindelijk draait het om tijd en tijd is dan nog altijd geld. Het is volstrekt logisch om 's avonds nog een uurtje door te spelen, of thuis natuurlijk...en dan onstaan vaak de mooiste speeltjes. De 'knowledge' die je daarmee opdoet, kun je natuurlijk perfect gebruiken in je dagelijkse werkzaamheden.

:)
Ik laat de hele quote maar staan omdat er gewoon heel veel waarheid in zit, en opdat niemand er overheen leest :)

oh,when?: ik denk dat we elkaar professioneel ook wel begrijpen; ik ben in het dagelijks leven zelf system-engineer (op AS/400 gebied) en zet projecten op waarbij ik programmeurs aanstuur.
Deze programmeurs zijn veelal 'beginnende professionals' die dus soms van toeten nog blazen weten. In mijn planningen hou ik daarmee rekening, en laat ze dus vaak 'zelf ontdekken'.
Wel laat ik ze weten wat er al aan 'standaard tools' aanwezig is (hoewel dat vaak tools zijn waar ikzelf liever geen gebruik van maak omdat ze gewoon te gecompliceerd zijn).

Een (in mijn ogen) goede programmeur gaat op ontdekkingsreis uit, en komt met leuke en mooie oplossingen op de proppen - die kan je dan meestal ook wel zijn gang laten gaan binnen een project.
Een minder goede programmeur heeft meer aansturing nodig, en daarvoor heb ik meestal al wat (pseudo) code voor op de plank liggen waarmee ze aan de slag kunnen.

Het ligt natuurlijk puur aan je team hoe je je tijdsinplanning indeelt. Ik ga er binnen onze organisatie altijd vanuit dat er 'rookies' tussen zitten, en plan dan extra tijd in voor het leerproces.

Programmeurs met een groot ego (behalve ikzelf) ben ik echter nog niet tegengekomen.

Intentionally left blank

Pagina: 1